오늘은 행렬에 대해 어떻게 코딩하는지에 대해 알아보도록 하죠.
2x2 행렬이 다음과 같이 주어졌을 때 코딩에서는 어떻게 표현할까요.
for(i=0;i<2;i++){
for(j=0;j<2;j++){
A[i][j]행렬
}
}
이렇게 표현 할 수 있습니다.
2x2행렬은 다음과 같습니다.
이 표현을 코딩으로 어떻게 표현해야 할까요.
C[0][0] = A[0][0] + B[0][0];
C[0][1] = A[0][1] + B[0][1];
C[1][0] = A[1][0] + B[1][0];
C[1][1] = A[1][1] + B[1][1];
이렇게 됩니다. 그런데 일일히 행령의 합 코딩을 나열하기 보다는 규칙성을 찾아서 For문으로 표현해주는 것이 좋습니다. 아래와 같이 수정하시면 됩니다.
for(i=0;i<2;i++){
for(j=0;j<2;j++){
C[i][j]=A[i][j]+B[i][j];
}
}
위와 같이 2x2행령의 곱은 어떻게 표현 할까요.
일일히 나열하면 다음과 같습니다.
C[0][0]=(A[0][0]*B[0][0])+(A[0][1]*B[1][0]);
C[0][1]=(A[0][0]*B[0][1])+(A[0][1]*B[1][1]);
C[1][0]=(A[1][0]*B[0][0])+(A[1][1]*B[1][0]);
C[1][1]=(A[1][0]*B[0][1])+(A[1][1]*B[1][1]);
그런데 이렇게 일일히 코딩하는 것보다 For문으로 표현하는 것이 좋습니다.
for(i=0;i<2;i++){
for(j=0;j<2;j++){
C[i][j]=A[i][0]*B[0][j] + A[i][1]*B[1][j];
}
}
이제 위 코딩이 정상적으로 동작하는지 코딩해보고 실행 결과를 살펴보도록 하죠.
[전체소스]
#include
#include
int main(int argc, char *argv[]) {
int A[2][2] = {{1, 2}, {3, 4}};
int B[2][2] = {{1, 2}, {3, 4}};
int C[2][2];
int i,j;
printf("행렬의 합 : \n");
for(i=0;i<2;i++){
for(j=0;j<2;j++){
C[i][j]=A[i][j]+B[i][j];
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%2d ", C[i][j]);
}
printf("\n");
}
printf("행렬의 곱 : \n");
for(i=0;i<2;i++){
for(j=0;j<2;j++){
C[i][j]=A[i][0]*B[0][j] + A[i][1]*B[1][j];
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%2d ", C[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
[결과]
간단히 행렬 계산에서 2x2행렬에 대해서 알아보았습니다. 일반적으로 행렬을 코딩할 때 일일히 코딩하지는 않습니다. 위에서 살펴본 For문을 통해서 행렬을 기본적으로 사용합니다. 행렬이 나오면 그냥 For문이 머리속에서 그려져야 합니다. 그래야 행렬을 쉽게 코딩 할 수 있습니다.