가우스 소거법좀 부탁드립니다.
링고
가우스 소거법 및 후진대입법으로 소스를 만들어봤는데 값이 다르게 나오네요..
어디서 틀렸는지좀 알려주세요.
소스
#includestdio.h
int main()
{
double matrix[100][100];
double matrix_r[100][1];
double matrix_x[100][1];
int hang, yeol;
int input_hang, input_yeol;double temp1;
double temp2;
double temp3;
double temp4;
printf(행 : );
scanf(%d,&input_hang);
printf(열 : );
scanf(%d,&input_yeol);
printf(----- main matrix -----\n);
for(hang=0; hanginput_hang; hang++)
{
for(yeol=0; yeolinput_yeol; yeol++)
{
printf(( %d , %d ),hang,yeol);
scanf(%lf,&matrix[hang][yeol]);
}
}
printf(\n\n);
printf(----- result matrix -----\n);
for(hang=0; hanginput_hang; hang++)
{
printf(( %d, 0 ) ,hang);
scanf(%lf,&matrix_r[hang][0]);
}
if(matrix[0][0]!=1)
{
temp1 = matrix[0][0];
for(yeol=0; yeolinput_yeol; yeol++)
{
matrix[0][yeol] = matrix[0][yeol] / temp1;
}
matrix_r[0][0] = matrix_r[0][0] / temp1;
}
for(hang=1; hanginput_hang; hang++)
{
if(matrix[hang][0]!=0)
{
temp2 = matrix[hang][0] / matrix[0][0];
for(yeol=0; yeolinput_yeol; yeol++)
{
matrix[hang][yeol] = matrix[hang][yeol] - ( matrix[0][yeol] * temp2 );
}
matrix_r[hang][0] = matrix_r[hang][0] - ( matrix_r[0][0] * temp2);
}
temp2=0;
}
for(hang=1; hanginput_hang; hang++)
{
if(matrix[hang][hang]!=1)
{
temp3=matrix[hang][hang];
for(yeol=0; yeolinput_yeol; yeol++)
{
matrix[hang][yeol] = matrix[hang][yeol] / temp3;
if(hangyeol)
{
if(matrix[hang][yeol]!=0)
{
temp4 = matrix[hang][yeol] / matrix[hang-1][yeol];
matrix[hang][yeol] = matrix[hang][yeol] - ( matrix[hang-1][yeol] * temp4 );
matrix_r[hang][0] = matrix_r[hang][0] - ( matrix_r[hang-1][0] * temp4);
}
}
}
matrix_r[hang][0] = matrix_r[hang][0] / temp3;
}
}
for(hang=0; hanginput_hang; hang++)
{
for(yeol=0; yeolinput_yeol; yeol++)
{
printf( %lf ,matrix[hang][yeol]);
}
printf( );
printf(%lf,matrix_r[hang][0]);
printf(\n);
}
printf(\n\n\n);
return 0;
}