파이썬에서 연립방정식을 푸는 세 가지 방법:
관련 권장 사항: "python video"
Numpy는 연립방정식을 푼다
x + 2y = 3 4x + 5y = 6
물론 수동으로 분석 솔루션을 작성할 수도 있고 그런 다음 함수를 작성합니다. 이는 실제로 Python을 사용하여 "수치 계산"을 수행하는 것입니다. 그러나 실제로 numpy.linalg.solve는 선형 방정식 시스템을 직접 풀 수 있습니다.
일반적으로 우리는 선형 방정식 시스템을 가정합니다. 는 Ax=b와 같이 풀립니다. 그 중 A는 계수 행렬이고, b는 1차원(n 차원도 허용되며 이는 아래에서 언급함)이며, x는 2개의 가장 간단한 선형 방정식 시스템을 취하는 미지의 변수입니다. 위의 변수를 예로 들어 numpy.linalg.solve를 사용합니다. 다음과 같이 작성할 수 있습니다.
In [1]: import numpy as np ...: A = np.mat('1,2; 4,5') # 构造系数矩阵 A ...: b = np.mat('3,6').T # 构造转置矩阵 b (这里必须为列向量) ...: r = np.linalg.solve(A,b) # 调用 solve 函数求解 ...: print r ...: Out[1]: [[-1.] [ 2.]]
그럼 앞서 언급한 "n차원" 상황은 무엇인가요? 실제로 이는 동일한 형태를 갖는 두 변수의 선형 방정식의 여러 세트를 동시에 푸는 것입니다. 예를 들어, 동일한 형태를 갖는 두 변수의 선형 방정식의 두 세트를 동시에 풀고 싶다면:
x + 2y = 3 4x + 5y = 6
및
x + 2y = 7 4x + 5y = 8
를 다음과 같이 작성할 수 있습니다.
In [2]: import numpy as np ...: A = np.mat('1,2; 4,5') # 构造系数矩阵 A ...: b = np.array([[3,6], [7,8]]).T # 构造转置矩阵 b (这里必须为列向量), ...: 注意这里用的是 array ...: r = np.linalg.solve(A,b) # 调用 solve 函数求解 ...: print r ...: Out[2]: [[-1. -6.33333333] [ 2. 6.66666667]]
SciPy는 비선형 방정식 시스템을 해결합니다.
일반적으로 func만 사용하면 되며, Func는 우리가 직접 구성한 함수입니다. 풀어야 할 방정식 시스템의 왼쪽 끝(오른쪽 끝은 0)이고 x0은 주어진 초기 값입니다.
풀려는 구체적인 예를 살펴보겠습니다.
x + 2y + 3z - 6 = 0 5 * (x ** 2) + 6 * (y ** 2) + 7 * (z ** 2) - 18 = 0 9 * (x ** 3) + 10 * (y ** 3) + 11 * (z ** 3) - 30 = 0
는 다음과 같이 쓸 수 있습니다.
In [3]: from scipy.optimize import fsolve ...: ...: def func(i): ...: x, y, z = i[0], i[1], i[2] ...: return [ ...: x + 2 * y + 3 * z - 6, ...: 5 * (x ** 2) + 6 * (y ** 2) + 7 * (z ** 2) - 18, ...: 9 * (x ** 3) + 10 * (y ** 3) + 11 * (z ** 3) - 30 ...: ] ...: ...: r = fsolve(func,[0, 0, 0]) ...: print r ...: Out[3]: [ 1.00000001 0.99999998 1.00000001]
물론 SciPy를 사용하여 선형 방정식을 풀 수도 있습니다. 이는 scipy.optimize.fsolve가 본질적으로 결과를 근사화하는 최소 제곱 방법이기 때문입니다.
SymPy는 방정식 시스템을 해결합니다
, 하나를 풀면:
x + 2 * (x ** 2) + 3 * (x ** 3) - 6 = 0
는 직접적으로:
In [4]: from sympy import * ...: x = symbols('x') ...: solve(x + 2 * (x ** 2) + 3 * (x ** 3) - 6, x) Out[4]: [1, -5/6 - sqrt(47)*I/6, -5/6 + sqrt(47)*I/6]
위 내용은 파이썬에서 방정식을 푸는 세 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!