가우스 소거법 입출력 방식인데요. 잘안되요 ㅜㅜㅜ c언어 고수님들아 부탁드립니다.
마리
질문 제목 : 가우스 소거법 역행렬 계산 방법질문 요약 :밑에 소스질문 내용 : 가우스 소거법 입출력 방식인데 분명 입출력 아닐땐 됐거든요 그런데 바꾸니까 안되요.. 도와주세요ㅜㅜ
파란색 부분이 틀린것 같은데 뭐가 틀린지도 모르겠어요#include stdio.h
#define size 4
int Gauss(double A[size][size], double B[size], int x);
FILE *fw=NULL,*fr=NULL;
main()
{
double A[size][size]={0};
double B[size]={0};
int i, j;
fr=fopen(in1.txt,r);
fw=fopen(out.txt,w);
for(i=0; isize; i++)
{
for(j=0; jsize; j++)
{fscanf(fr,%lf,&A[i][j]);
fprintf(fw,%11.4f,A[i][j]);
}fscanf(fr,%lf,&B[i]);fprintf(fw,%11.4f \n,B[i]);
}
printf(\n);
if(!Gauss(A, B, size)){
for(i=0; isize; i++)
{ printf(x(%d) = %.0lf\n, i+1, B[i]);
fprintf(fw,x(%d) = %.0lf\n, i+1, B[i]);
}
}
printf(\n);
printf(**** 11 \n);
fclose(fr);
fclose(fw);
}
int Gauss(double A[size][size], double B[size],int num)
{
int m=num;
int i=0, j=0, k=0;
double temp;
for(i=0; isize; i++)
{
for(j=0; jsize; j++)
{fprintf(fw,%11.4f,A[i][j]);
}fprintf(fw,%11.4f \n,B[i]);
}
for(i=0; isize; i++) { for(i=0; i=(m-1); i++)
{
temp=A[i][i];
if(temp==0)
{
printf(대각행렬 오류 i=%d %f %f \n,i,temp,A[i][i]);
return 0;
}
for(j=0; jm; j++)
{
A[i][j]=A[i][j]/temp;
B[i]=B[i]/temp;
}
for(j=i+1; jm; j++)
{
temp=A[j][i];
for(k=i+1; km; k++)
{printf(-- %d %d %d %11.4f \n,i,j,k,A[1][3]);
A[j][k]=A[j][k]-(A[i][k]*temp);
B[j]=B[j]-(B[i]*temp);
}
}
}
B[m-1]=B[m-1]/A[m-1][m-1];
for(i=m-2; i=0; i--)
{
for(j=i+1; jm; j++)
B[i]=B[i]-A[i][j]*B[j];
}
return 1;
}
-
승아
으으... 저도 이게 안돼네요