#!/usr/bin/env python # coding: utf-8 # ### Linear Algebra # In[1]: import numpy as np # In[4]: A= [[1,2],[3,4]] # In[6]: B=[[3,4],[4,5]] # $\begin{bmatrix} 1&2 \\ 3&4 \\ \end{bmatrix}$ $\begin{bmatrix} 3&4 \\ 4&5 \\ \end{bmatrix}$ # In[7]: np.dot(A,B) # ### inner product # $ (1,2,3) \cdot (0,1,0) = 2$ # In[8]: a=np.array([1,2,3]) # In[9]: b=np.array([0,1,0]) # In[10]: np.inner(a,b) # In[11]: np.inner(np.eye(2),7) # ### 행렬의 거듭제곱 # In[13]: from numpy import linalg as LA # In[14]: i=np.array([[0,1],[-1,0]]) # In[16]: LA.matrix_power(i,3) # In[17]: LA.matrix_power(i,4) # ### 행렬의 Eigenvalue, Eigenvector # In[18]: D=np.diag((1,2,3)) # In[19]: D # In[20]: w,v = LA.eig(D) # In[25]: w, v # #### 위의 Eigenvalue는 1,2,3 이고 뒤에는 대응하는 벡터들 # In[26]: w,v = LA.eig(np.array([[1,-1],[1,1]])) # In[27]: w # In[28]: v # ### Determinant # In[29]: LA.det(D) # ### Rank # In[30]: LA.matrix_rank(np.eye(4)) # In[31]: LA.matrix_rank(D) # In[33]: LA.matrix_rank(np.zeros((4,4))) # ### Linear equation # $ \begin{eqnarray} 3x +y= 9 \\ x+2y= 8\end{eqnarray}$ # In[34]: a=np.array([[3,1],[1,2]]) # In[35]: b=np.array([9,8]) # In[36]: x=LA.solve(a,b) # In[37]: x # #### 확인 # In[38]: np.allclose(np.dot(a,x),b) # ### 역행렬 # In[39]: a # In[42]: ai=LA.inv(a) # In[43]: ai # In[44]: np.dot(a,ai) # In[45]: np.dot(ai,a) # In[46]: np.allclose(np.dot(a,ai),np.eye(2)) # In[ ]: