前提・実現したいこと
Pythonで微分方程式を解いてグラフに表示させたいです。
dy(i)/dt=-ay(i){b-exp(b-cx(i)**4)}+Σ[d*y(k)exp{(x(i)-x(k)/2)**2/(ex(k)**2)}]
Σの変数はkで0<k<3です。
縦軸に変数y、横軸に変数x(0<x<3)
時間は120sec,dt=6.0sec
F_dy=lambda value: -self._a*value[1]*(self._b-math.exp(self._b-self._c*value[0]**4))
この部分で、変数i,kをどのようにコードに組み込んだらいいのか分かりません。
式の前半部分は書けているのですが、Σ以降がまだ書けていません。
Python初心者なので分かりやすく教えていただきたいです。
宜しくお願いします。
現在のコードでのエラーはありません。
試したこと
現在のコードは以下の通りです。
↓
import matplotlib.pyplot as plt import numpy as np import math class Phelps_Model(object): def __init__(self, a, b, c, d, e, t, dt, x, y): self._a=a self._b=b self._c=c self._d=d self._e=e self._t=t self._dt=dt self._x=x self._y=y def calc(self): resultx=[] resulty=[] F_dy=lambda value: -self._a*value[1]*(self._b-math.exp(self._b-self._c*value[0]**4)) for i in range(0,len(self._t)): yy=F_dy([self._x,self._y])*self._dt self._y+=yy resultx.append(self._x) resulty.append(self._y) self.show(resultx,resulty) def show(self,x,y): fig=plt.figure() ax=fig.add_subplot() ax.plot(x,y,'o') plt.xlim(0, 4.0) plt.ylim(0, 100) ax.set_xlabel('fiber length') ax.set_ylabel('Number of fibers') plt.show() a=0.2 b=1.0 c=1.337 d=0.002 e=0.02 x=0.0 y=0.0 dt=6.0 t=np.arange(0,120,dt) Phelps_Model(a,b,c,d,e,t,dt,x,y).calc()
回答1件
あなたの回答
tips
プレビュー