@samuelstark
2016-03-25T05:49:25.000000Z
字数 1529
阅读 495
这个程序使用 Eular 方法解了两个耦合的线性常微分方程,需要用户输入 A,B 的处值 NA,NB, 和 A,B 的时间常数 tauA,tauB, 结束时间 t_end, 以及每次计算的时间间隔 dt。之后画出了 NA,NB 随 t 的数值计算出的变化曲线以及真实曲线。
目的是求解以下方程:
分别有初值,则方程的解析解为:
将在处泰勒展开:
这是完整代码
首先引用库:
import pylab as plb
import math
之后建立各个物理量的:
NA=[] #establish a list corresponding to NA
NB=[] #establish a list corresponding to NB
True_NA=[] #establish a list corresponding to True NA
True_NB=[] #establish a list corresponding to True NB
t=[] #establish a list corresponding to t
然后提示用户输入数据,之后计算每个时刻的数值计算出的,和真实的,并把他们添加到各自的中去:
for i in range(int(t_end/dt)):
NA.append(NA[i]+(NB[i]/tauB-NA[i]/tauA)*dt)
NB.append(NB[i]+(NA[i]/tauA-NB[i]/tauB)*dt)
True_NA.append(C1*math.exp(-(i+1)*dt*(alpha+1)/tauB)+C2)
True_NB.append(-C1*math.exp(-(i+1)*dt*(alpha+1)/tauB)+C2*alpha)
t.append((i+1)*dt)
最后打印结果并画图。
用户输入的数据:
数值计算的结果:
其中,第一个 是 ,第二个 是 ,第三个 是 。
数值计算以及真实值曲线:
并且当 时,有 。
之前我的作业中并没有解析解的部分,但是在参考了2013301020145陈锋同学
的作业后,我加上了这部分。