ホームページ > バックエンド開発 > Python チュートリアル > Python で方程式を解く 3 つの方法

Python で方程式を解く 3 つの方法

爱喝马黛茶的安东尼
リリース: 2019-06-14 18:09:10
オリジナル
32234 人が閲覧しました

Python で方程式を解く 3 つの方法:

関連する推奨事項: 「Python ビデオ

Python で方程式を解く 3 つの方法

Numpy Solving連立方程式

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次元」の状況とは何でしょうか?実際には、同じ形式を持つ 2 変数の線形方程式の複数のセットを同時に解くことです。たとえば、これら 2 つのグループを同時に解きたい場合:

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 と x0 だけです。 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 は線形方程式を解くためにも使用できます。 squares メソッドを使用して実際の結果を近似します。

SymPy は連立方程式を解きます

たとえば、問題を解決するには:

x + 2 * (x ** 2) + 3 * (x ** 3) - 6 = 0
ログイン後にコピー
これは直接的に行われます。 :

rree

以上がPython で方程式を解く 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート