ホームページ  >  記事  >  バックエンド開発  >  Python は微分方程式を解くことができますか?

Python は微分方程式を解くことができますか?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-06-18 15:11:105351ブラウズ

Sympy

Sympy は、積分や微分方程式などのさまざまな数学演算手法を含む数学記号ライブラリ (sym はシンボル、シンボルの略) であり、 Python 強力な数学演算サポートを提供します。画像の場合、すべて離散計算を行っており、ほとんどの演算はnumpyの配列ですが、実はこのライブラリには積分微分や三角法などの最も基本的な数学演算が含まれており、最も基本的なものと言えます。工学分野での使用 MATLAB と同等です。

Python は微分方程式を解くことができますか?

sympy のインストール

sudo pip install sympy または sudo pip3 install sympy

anaconda を使用する場合は conda sympy のインストール

関連する推奨事項:pythonvideo>>

odeint() 関数

odeint() 関数は scipy ですライブラリ 微分方程式を数値的に解く関数
odeint() 関数には少なくとも 3 つの変数が必要です。1 つ目は微分方程式関数、2 つ目は微分方程式の初期値、3 つ目は微分方程式の独立変数です。 。

例:

#y"+a*y'+b*y=0 
from scipy.integrate import odeint        #使用odeint之前,首先从scipy.integrate中调用它from pylab import *
def deriv(y,t):        # 返回值是y和y的导数组成的数组
    a = -2.0
    b = -0.1
    return array([ y[1], a*y[0]+b*y[1] ])
time = linspace(0.0,50.0,1000)
yinit = array([0.0005,0.2])     # 初值
y = odeint(deriv,yinit,time)
 
figure()
plot(time,y[:,0],label='y')    #y[:,0]即返回值的第一列,是y的值。label是为了显示legend用的。
plot(time,y[:,1],label="y'")     #y[:,1]即返回值的第二列,是y’的值
xlabel('t')
ylabel('y')
legend()
show()

出力結果は次のとおりです:

Python は微分方程式を解くことができますか?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。