2015년 4월 30일 목요일

sympy 선형대수 4 : 선형 대수 연산

 심파이에서 행렬객체에 수행할 수 있는 선형대수 관련 연산을 다음 표에 정리하엿다.

[표 1] 선형대수 연산
연산
기능
A.T
A.H
A.D
전치행렬(transposition)
복소전치행렬(hermite conjugation)
Dirac transposition
A.rank()
행렬의 랭크(rank)
A.det()
행렬식 (determinant)
A.inv()
역행렬 (inverse matrix)
A.LUsolve(b)
행렬방정식 Ax=b 를 푼다.
A.norm()
norm을 구한다.
A.eigenvals(**flags)
A.eigenvecs(**flag)
행렬의 고유값을 구한다.
행렬의 고유값과 고유벡터를 구한다.
A.evalf()
행렬 각 요소의 실수 근사값을 구한다.
A.applyfunc(f)
행렬 각 요소에 함수 f를 적용한다.

숫자로만 이루어진 행렬뿐만 아니라 대수 기호가 포함된 행렬에 대한 연산도 수행 가능하다.

>>> x=symbols('x') # x 를 기호로 설정
>>> C=Matrix([[x,2],[1,x]])
>>> D=ones(2)*x

>>> C
[x  2]
[1  x]

>>> D
[x  x]
[x  x]

>>> C.det()
2    
x  - 2

>>> C*D
[  2             2   ]
[x  + 2*x  x  + 2*x  ]
[   2           2    ]
[ x  + x    x  + x   ]

만약 대수 기호 대신에 숫자를 입력하고 싶다면 subs() 메쏘드를 이용한다.

>>> C.subs(x,11)
[11  2 ]
[1   11]

>>> y=symbols('y')

>>> D.subs(x,y**2+1)
[ 2       2    ]
[y  + 1  y  + 1]
[ 2       2    ]
[y  + 1  y  + 1]

>>> D.subs(x,sqrt(y))
[  ___    ___     ]
[\/ y     \/ y    ]
[  ___    ___     ]
[\/ y     \/ y    ]


댓글 없음:

댓글 쓰기