title: “C언어 배열 행렬의 곱” categories:

  • CPermalink

    #C언어 배열 행렬의 곱 : 네이버 블로그

일단 소스를 먼저 보자

#include
#define NUM 3 //n\*n행렬
void Get\_Array(int a[NUM][NUM]); //입력받는 함수
int main() {
 int a[NUM][NUM]; //첫번째 배열
 int b[NUM][NUM]; //두번째 배열
 int c[NUM][NUM]; //곱한 후의 배열

 Get\_Array(a); //배열 입력받기
 Get\_Array(b);

 for (int i = 0; i < NUM; i++) //a\*b
 {
 for (int j = 0; j < NUM; j++)
 {
 int sum = 0;
 for (int n = 0; n < NUM; n++)
 {
 sum = sum + a[i][n] \* b[n][j];
 }
 c[i][j] = sum;
 }
 }

 for (int i = 0; i < NUM; i++) //c출력
 {
 for (int n = 0; n < NUM; n++)
 {
 printf("%d ", c[i][n]);
 }
 printf("\n");
 }
}
void Get\_Array(int d[NUM][NUM]) {
 for (int i = 0; i < NUM; i++)
 {
 for (int j = 0; j < NUM; j++)
 {
 scanf("%d", &d[i][j]);
 }
 }
}

배열의 합은 배열의 인수만 더하면 되지만 배열의 곱은 방법이 약간 다르다

아래는 행렬의 곱의 식이다

https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88

[행렬 곱셈 - 위키백과, 우리 모두의 백과사전 행렬 곱셈 ( matrix multiplication )은 행렬 에 대한 이항연산 이다. 벡터의 선형결합 또는 선형사상 의 합성 등의 의미를 부여할 수 있다. 목차 1 정의 2 예 3 성질 4 각주 4.1 증명주 4.2 참조주 정의 [ 편집 ] A , B 를 각각 m × n , n × p 행렬이라고 하자. A 와 B 의 곱 AB 는 다음과 같은 항을 갖는 m × p 행렬로 정의된다. 즉 앞의 행렬의 열의 수와 뒤의 행렬의 행 수가 동일하지 않으면, 두 행렬의 곱은 정의되지 않는다. 예 [ 편집 ] 행렬 와 가 있을 때, 이 둘의 곱…

ko.wikipedia.org](https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88)

2차원 행렬의 곱을 하기 위해서는 3개의 반복이 필요하다.

[i][j]번째 곱을 알기 위해서는 n까지의 Aik*Bkj 을 더해야 하기 때문에 n까지 더하는 식과 ik를 하나씩 올리는 식이 필요하다

업데이트: