벡터에 대한 연산을 배열을 이용하여서 작성하여 보자.
(a)2개의 벡터를 더하는 연산은 다음과 같이 정의된다. 2개의 벡터를 더하는 함수인 vector_add()를 작성하라. 이 함수를 테스트하기 위한 코드도 작성하라.
벡터의 덧셈
대응되는 스칼라 값끼리 더해서 새로운 벡터를 만들 수 있다.
A+B=(a1+b1, a2+b2, a3+b3)
출처 : https://namu.wiki/w/%EB%B2%A1%ED%84%B0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> #define SIZE 3 void vector_sum(int a[],int b[],int c[]); int main(void) { int vector1[SIZE]={}; int vector2[SIZE]={}; int vector3[SIZE]={}; int i; for(i=0;i<SIZE;i++) {printf("벡터1의 각 성분값을 입력하세요: "); scanf("%d", &vector1[i]);} printf("벡터1의 값: (%d,%d,%d)\n", vector1[0],vector1[1],vector1[2]); for(i=0;i<SIZE;i++) {printf("벡터2의 각 성분값을 입력하세요: "); scanf("%d", &vector2[i]);} printf("벡터2의 값: (%d,%d,%d)\n", vector2[0],vector2[1],vector2[2]); vector_sum(vector1,vector2,vector3); printf("벡터3의 값: (%d,%d,%d)\n", vector3[0],vector3[1],vector3[2]); return 0; } void vector_sum(int a[],int b[],int c[]) { int i; for(i=0;i<SIZE;i++) { c[i]=a[i]+b[i]; } } | cs |
벡터 각 성분을 출력할 때 저는 귀찮아서 그냥 1,2,3 각각 썼는데 for문을 이용(상수 SIZE 이용해서) 하는 것이 좀더 범용적인 방법이라고 생각됩니다.
(b)벡터의 내적(dot product)를 계산하는 함수인 vector_dot_prod()를 작성하라. 이 함수를 테스트하기 위한 코드도 작성하라. 벡터의 내적은 다음과 같이 정의된다.
A⋅B=a1b1+a2b2+a3b3
두 벡터를 연산했을 때, 결과가 스칼라이다. 학부 수준에서의 내용은 내적 문서 참조. < , > 로 표기하기도 한다.
벡터의 내적(스칼라곱, 닷 프로덕트)
출처 : https://namu.wiki/w/%EB%B2%A1%ED%84%B0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h> #define SIZE 3 int vector_dot_product(int a[],int b[]); int main(void) { int vector1[SIZE]={}; int vector2[SIZE]={}; int vector3[SIZE]={}; int i; for(i=0;i<SIZE;i++) {printf("벡터1의 각 성분값을 입력하세요: "); scanf("%d", &vector1[i]);} printf("벡터1의 값: (%d,%d,%d)\n", vector1[0],vector1[1],vector1[2]); for(i=0;i<SIZE;i++) {printf("벡터2의 각 성분값을 입력하세요: "); scanf("%d", &vector2[i]);} printf("벡터2의 값: (%d,%d,%d)\n", vector2[0],vector2[1],vector2[2]); printf("벡터1과 벡터2의 내적 값:%d\n", vector_dot_product(vector1,vector2)); return 0; } int vector_dot_product(int a[],int b[]) { int i; int sum=0; for(i=0;i<SIZE;i++) { sum+=a[i]*b[i]; } return sum; } | cs |