C:\Users\Administrator>pip install numpy
C:\Users\Administrator>pip list
Package Version
------------------ --------
appdirs 1.4.4
distlib 0.3.1
filelock 3.0.12
importlib-metadata 4.3.1
mpmath 1.2.1
numpy 1.20.3
pip 21.1.2
setuptools 40.8.0
six 1.16.0
sympy 1.8
typing-extensions 3.10.0.0
virtualenv 20.4.7
zipp 3.4.1
1. 이전 게시물에 설명한 Symbol을 이용한 방법
>>> import sympy as sp
>>> x, y = sp.symbols('x, y')
>>> eq1 = 3*x - 2*y - 3
>>> eq2 = 2*x + 5*y - 2
>>> result = sp.solve([eq1, eq2])
>>> print(result)
{x: 1, y: 0}
>>>
>>> x, y = sp.symbols('x, y')
>>> eq1 = sp.Eq(3*x - 2*y, 3)
>>> eq2 = sp.Eq(2*x + 5*y, 2)
>>> result = sp.solve([eq1, eq2])
>>> print(result)
{x: 1, y: 0}
2. 행렬을 이용한 방법
>>> import numpy as np
>>> A = np.array([[3, -2], [2, 5]])
>>> A
array([[ 3, -2],
[ 2, 5]])
>>> B = np.array([3, 2])
>>> B
array([3, 2])
>>> result = np.linalg.solve(A, B)
>>> print(result)
[1. 0.]
3. 역행렬을 이용한 방법
행렬A와 역행렬 A-1를 곱하면 단위행렬 E가 된다. 단위행렬은 n * n의 행렬 A에 곱해도 그 결과가 행렬 A가되는, 수에서 1과 같다.
A는 계수행렬, X는 미지수행렬. 계수행렬의 역행렬을 구하면 미지수행렬을 구할 수 있다.
>>> import numpy as np
>>> A = np.array([[3, -2], [2, 5]])
>>> B = np.array([3, 2])
>>> C = np.linalg.inv(A) # A의 역행렬 구하기
>>> result = np.dot(C, B) # 행렬의 곱
>>> print(result)
[1. 0.]