행렬 간 산술 연산은 +, -, *, ** 연산자로 수행할 수 있다. *은 행렬 간 곱셈을, **은 거듭제곱을 수행한다.
[표 1] 행렬의 기본 연산
연산
|
기능
|
A+B, A-B
|
행렬간 덧셈, 뺄셈
|
A*B
|
행렬간 곱셈 (A의 열 수와 B의 행 수가 같아야 한다.0
|
A**k
|
행렬 A의 k 거듭 제곱
|
v1.dot(v2)
|
벡터 v1과 v2의 내적(dot product)
|
덧셈과 곱셈은 두 행렬의 크기가 같아야 하고 행렬 간 곱셈은 차수 조건에 맞아야 한다. 즉, 첫 번째 행렬의 열 수와 두 번재 행렬의 행 수가 같아야 곱셈이 성립한다.
>>> A=randMatrix(3,4)>>> B=randMatrix(4,2)>>> A[2 48 28 60][2 9 18 88][79 14 17 25]>>> B[10 49][47 95][18 67][60 59]>>> A*B[6380 10074][6047 7351 ][3254 7815 ]>>> B*A # 오류발생 |
파이썬에서 **가 거듭제곱 연산자이므로 심파이에서도 행렬의 거듭제곱은 ** 연산자로 수행한다. 거듭제곱을 수행하려면 행렬이 정방행렬이어야 한다.
>>> A=Matrix([[1,2],[2,3]])⎡1 2⎤⎣2 3⎦>>> A**10⎡514229 832040 ⎤⎣832040 1346269⎦ |
댓글 없음:
댓글 쓰기