Scipyのodeint関数を使い、常微分方程式を解いてみる。
簡単な例として、
を、初期値
で解く。
真の解は
である。
以下がpythonスクリプト。xの0から3まで積分している。数値計算で得られた値を+で、真の解より得られる値を実線で図示している。
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
#solve dy/dx=y
#define derivative
def dy_dx(y,x):
return y
#integration
x1=np.linspace(0,3, 10)
x=np.linspace(0,3, 100)
y1, infodict = integrate.odeint(dy_dx, 1., x1, full_output=True)
print infodict
# plot
plt.plot(x1,y1,'+',markersize=12) #solusion
plt.plot(x,np.exp(x)) #true solution
plt.savefig("ode_ex.png")
plt.show()
参照:
LoktaVolterraTutorial
http://www.scipy.org/LoktaVolterraTutorial
A Coupled Spring-Mass System
http://www.scipy.org/Cookbook/CoupledSpringMassSystem

0 件のコメント:
コメントを投稿