3x3행렬 오류..
가루
#include stdio.h
void main()
{
int i,j,A[3][3],B[3][1],x,y,z,C,D[3][3];
printf(3X3행렬 A의 성분과 3X1행렬 B의 성분을 입력하시오.\n); //콘솔창출력
for(i=0; i3; i++) //행렬A 입력부분
{
for(j=0; j3; j++)
{
printf(A 행렬의 %d행 %d열의 값 : ,i+1,j+1);
scanf(%d,&A[i][j]);
}
}
C=(A[0][0]*A[1][1]*A[2][2]+A[1][0]*A[2][1]*A[0][2]+A[2][0]*A[0][1]*A[1][2])-(A[0][2]*A[1][1]*A[2][0]+A[0][1]*A[1][0]*A[2][2]+A[0][0]*A[1][2]*A[2][1]);
D[0][0]=1/C*(A[1][1]*A[2][2]-A[1][2]*A[2][1]);
D[0][1]=-1/C*(A[0][1]*A[2][2]-A[0][2]*A[2][1]);
D[0][2]=1/C*(A[0][1]*A[1][2]-A[0][2]*A[1][1]);
D[1][0]=-1/C*(A[1][0]*A[2][2]-A[1][2]*A[2][0]);
D[1][1]=1/C*(A[0][0]*A[2][2]-A[0][2]*A[2][0]);
D[1][2]=-1/C*(A[0][0]*A[1][2]-A[0][2]*A[1][0]);
D[2][0]=1/C*(A[1][0]*A[2][1]-A[1][1]*A[2][0]);
D[2][1]=-1/C*(A[0][0]*A[2][1]-A[0][1]*A[2][0]);
D[2][2]=1/C*(A[0][0]*A[1][1]-A[0][1]*A[1][0]);
for(i=0; i3; i++) //행렬B 입력부분
{
for(j=0; j1; j++)
{
printf(B 행렬의 %d행 %d열의 값 : ,i+1,j+1);
scanf(%d,&B[i][j]);
}
}
x=(D[0][0]*B[0][0])+(D[0][1]*B[1][0])+(D[0][2]*B[2][0]);
y=(D[1][0]*B[0][0])+(D[1][1]*B[1][0])+(D[1][2]*B[2][0]);
z=(D[2][0]*B[0][0])+(D[2][1]*B[1][0])+(D[2][2]*B[2][0]);
printf(행렬 A^-1와 행렬B의 곱은 다음과 같습니다.\n); //콘솔창출력
printf(A^-1B = %d\n %6d\n %6d\n,x,y,z); //콘솔창출력
}
문제는 AX=B 에서 X행렬이3x1행렬의 미지수 x,y,z입니다.
A는 3행 3열
2 1 3
1 2 2
4 2 5 이고
B는 3행 1열
1
2
3 입니다.
행렬 C는 행렬A의 Determinant이고
행렬 D는 행렬A의 역행렬입니다.(공식을이용해서 저렇게 표현했습니다).
그런데 이값들을 위프로그램을 컴파일하여 입력하면
A^-1B의 값이 0으로만뜹니다 ㅠㅠㅠ
도와주세요 어디가문제일까요
어떤분이 int부분을 double 이나 float으로 표현해주라고해서 그렇게햇더니 오류가납니다..
왜이러는걸까요...ㅜㅜ
-
아리알찬
행렬의 곱셈이라던지 역행렬을 구하는것들을 함수로 만드시면 훨씬 간단해져서 쉬워지실거같아요 ㅎㅎ