Trois façons de résoudre des systèmes d'équations en python :
Recommandations associées : "vidéo python"
Numpy Résoudre le système d'équations
x + 2y = 3 4x + 5y = 6
Bien sûr, nous pouvons écrire manuellement la solution analytique, puis écrire une fonction pour la résoudre. Il s'agit en fait simplement d'utiliser Python pour effectuer des "calculs numériques". Mais en fait, numpy.linalg.solve peut résoudre directement des équations linéaires.
Généralement, nous supposons que les équations linéaires ont la forme de Ax=b, où A est la matrice des coefficients et b est unidimensionnel (n-dimensionnel également Oui, cela sera mentionné ci-dessous), x est une variable inconnue en prenant comme exemple le système d'équations linéaires le plus simple à deux variables ci-dessus, nous pouvons utiliser numpy.linalg.solve pour écrire comme ceci. :
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.]]
Alors comme mentionné précédemment Quelle est la situation « à n dimensions » ? En fait, il s'agit de résoudre plusieurs ensembles d'équations linéaires de deux variables de même forme en même temps. Par exemple, si l'on veut résoudre ces deux ensembles en même temps :
x + 2y = 3 4x + 5y = 6
et <🎜. >
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 résout des équations non linéaires
De manière générale, nous n'avons besoin d'utiliser que func et x0. une fonction construite par nous-mêmes, qui est le système d'équations qui doit être résolu L'extrémité gauche de (l'extrémité droite est 0), et x0 est la valeur initiale donnée.Regardons un exemple spécifique pour solve :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]
SymPy résout le système d'équations
Par exemple, pour résoudre un problème :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]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!