SymPy-행렬

수학에서 행렬은 숫자, 기호 또는 표현식의 2 차원 배열입니다. 행렬 조작 이론은 특정 규칙에 따라 행렬 객체에 대한 산술 연산을 수행하는 것을 다룹니다.

선형 변환은 행렬의 중요한 응용 프로그램 중 하나입니다. 특히 물리학과 관련된 많은 과학 분야는 매트릭스 관련 응용 프로그램을 사용합니다.

SymPy 패키지에는 매트릭스 처리를 다루는 매트릭스 모듈이 있습니다. 객체가 행렬을 나타내는 Matrix 클래스를 포함합니다.

Note: If you want to execute all the snippets in this chapter individually, you need to import the matrix module as shown below −

>>> from sympy.matrices import Matrix

Example

>>> from sympy.matrices import Matrix 
>>> m=Matrix([[1,2,3],[2,3,1]]) 
>>> m
$\displaystyle \left[\begin{matrix}1 & 2 & 3\\2 & 3 & 1\end{matrix}\right]$

파이썬 셸에서 위의 명령을 실행하면 다음과 같은 출력이 생성됩니다.

[1 2 3 2 3 1]

매트릭스는 적절한 크기의 List 개체에서 만들어집니다. 지정된 수의 행과 열에 목록 항목을 배포하여 행렬을 얻을 수도 있습니다.

>>> M=Matrix(2,3,[10,40,30,2,6,9]) 
>>> M
$\displaystyle \left[\begin{matrix}10 & 40 & 30\\2 & 6 & 9\end{matrix}\right]$

파이썬 셸에서 위의 명령을 실행하면 다음과 같은 출력이 생성됩니다.

[10 40 30 2 6 9]

매트릭스는 변경 가능한 객체입니다. matrices 모듈은 또한 불변 행렬을 얻기 위해 ImmutableMatrix 클래스를 제공합니다.

기본 조작

그만큼 shape Matrix 객체의 속성은 크기를 반환합니다.

>>> M.shape

위 코드의 출력은 다음과 같습니다.

(2,3)

row () 및 col () 메서드는 각각 지정된 수의 행 또는 열을 반환합니다.

>>> M.row(0)
$\displaystyle \left[\begin{matrix}10 & 40 & 30\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[10 40 30]

>>> M.col(1)
$\displaystyle \left[\begin{matrix}40\\6\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[40 6]

Python의 슬라이스 연산자를 사용하여 행 또는 열에 속하는 하나 이상의 항목을 가져옵니다.

>>> M.row(1)[1:3]
[6, 9]

Matrix 클래스에는 주어진 행렬에서 지정된 행 / 열을 삭제하는 row_del () 및 col_del () 메서드가 있습니다.

>>> M=Matrix(2,3,[10,40,30,2,6,9]) 
>>> M.col_del(1) 
>>> M

파이썬 셸에서 위의 명령을 실행하면 다음과 같은 출력이 생성됩니다.

Matrix([[10, 30],[ 2, 9]])

다음 명령을 사용하여 출력에 스타일을 적용 할 수 있습니다.

$\displaystyle \left[\begin{matrix}10 & 30\\2 & 9\end{matrix}\right]$

위의 코드를 실행하면 다음과 같은 출력이 나타납니다.

[10 30 2 9]

>>> M.row_del(0) 
>>> M

$\displaystyle \left[\begin{matrix}2 & 9\end{matrix}\right]$

위의 코드를 실행하면 다음과 같은 출력이 나타납니다.

[2 9]

마찬가지로 row_insert () 및 col_insert () 메서드는 지정된 행 또는 열 인덱스에 행 또는 열을 추가합니다.

>>> M1=Matrix([[10,30]]) 
>>> M=M.row_insert(0,M1)
>>> M

$\displaystyle \left[\begin{matrix}10 & 30\\2 & 9\end{matrix}\right]$

위의 코드를 실행하면 다음과 같은 출력이 나타납니다.

[10 40 30 2 9]

>>> M2=Matrix([40,6]) 
>>> M=M.col_insert(1,M2) 
>>> M

$\displaystyle \left[\begin{matrix}10 & 40 & 30\\2 & 6 & 9\end{matrix}\right]$

위의 코드를 실행하면 다음과 같은 출력이 나타납니다.

[10 40 30 6 9]

산술 연산

일반 연산자 +,-및 *는 더하기, 빼기 및 곱하기를 수행하기 위해 정의됩니다.

>>> M1=Matrix([[1,2,3],[3,2,1]]) 
>>> M2=Matrix([[4,5,6],[6,5,4]]) 
>>> M1+M2

$\displaystyle \left[\begin{matrix}5 & 7 & 9\\9 & 7 & 5\end{matrix}\right]$

위의 코드를 실행하면 다음과 같은 출력이 나타납니다.

[5 7 9 9 7 5]

>>> M1-M2
$\displaystyle \left[\begin{matrix}-3 & -3 & -3\\-3 & -3 & -3\end{matrix}\right]$

위의 코드를 실행하면 다음과 같은 출력이 나타납니다.

[- 3 -3 -3 -3 -3 -3]

행렬 곱셈은 다음 경우에만 가능합니다.-첫 번째 행렬의 열 수가 두 번째 행렬의 행 수와 같아야합니다. -결과는 첫 번째 행렬과 동일한 행 수, 두 번째 행렬과 동일한 열 수를 갖습니다.

>>> M1=Matrix([[1,2,3],[3,2,1]]) 
>>> M2=Matrix([[4,5],[6,6],[5,4]]) 
>>> M1*M2
$\displaystyle \left[\begin{matrix}31 & 29\\29 & 31\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[31 29 29 31]

>>> M1.T
$\displaystyle \left[\begin{matrix}1 & 3\\2 & 2\\3 & 1\end{matrix}\right]$

다음 출력은 코드를 실행 한 후 얻습니다.

[1 3 2 2 3 1]

행렬의 행렬식을 계산하려면 det () 메서드를 사용하십시오. 행렬식은 정사각형 행렬의 요소에서 계산할 수있는 스칼라 값입니다.

>>> M=Matrix(3,3,[10,20,30,5,8,12,9,6,15])
>>> M
$\displaystyle \left[\begin{matrix}10 & 20 & 30\\5 & 8 & 12\\9 & 6 & 15\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[10 20 30 5 8 12 9 6 15]

>>> M.det()

위 코드의 출력은 다음과 같습니다.

-120

매트릭스 생성자

SymPy는 많은 특수한 유형의 매트릭스 클래스를 제공합니다. 예를 들어, 단위 행렬, 모두 0과 1로 구성된 행렬 등이 있습니다. 이러한 클래스는 각각 눈, 0 및 1로 명명됩니다. 단위 행렬은 대각선으로 떨어지는 요소가 1로 설정되고 나머지 요소는 0으로 설정된 정사각형 행렬입니다.

Example

from sympy.matrices import eye eye(3)

Output

Matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
$\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[1 0 0 0 1 0 0 0 1]

진단 행렬에서 대각선의 요소는 제공된 인수에 따라 초기화됩니다.

>>> from sympy.matrices import diag 
>>> diag(1,2,3)

$\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 2 & 0\\0 & 0 & 3\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[1 0 0 0 2 0 0 0 3]

0 행렬의 모든 요소는 0으로 초기화됩니다.

>>> from sympy.matrices import zeros 
>>> zeros(2,3)

$\displaystyle \left[\begin{matrix}0 & 0 & 0\\0 & 0 & 0\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[0 0 0 0 0 0]

마찬가지로 1은 모든 요소가 1로 설정된 행렬입니다.

>>> from sympy.matrices import ones
>>> ones(2,3)

$\displaystyle \left[\begin{matrix}1 & 1 & 1\\1 & 1 & 1\end{matrix}\right]$

위 코드의 출력은 다음과 같습니다.

[1 1 1 1 1 1]