C언어 배열 행렬의 곱
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를 하나씩 올리는 식이 필요하다