[关闭]
@samuelstark 2016-03-25T05:49:25.000000Z 字数 1529 阅读 495

Homework 5


1.摘要

这个程序使用 Eular 方法解了两个耦合的线性常微分方程,需要用户输入 A,B 的处值 NA,NB, 和 A,B 的时间常数 tauA,tauB, 结束时间 t_end, 以及每次计算的时间间隔 dt。之后画出了 NA,NB 随 t 的数值计算出的变化曲线以及真实曲线。

2.正文

目的是求解以下方程:


(1)解析解

分别有初值,则方程的解析解为:



其中

(2)数值解—— Eular 方法

处泰勒展开:


得到上式结果忽略了的高阶项。故对于:

(3)程序

这是完整代码
首先引用库:

  1. import pylab as plb
  2. import math

之后建立各个物理量的

  1. NA=[] #establish a list corresponding to NA
  2. NB=[] #establish a list corresponding to NB
  3. True_NA=[] #establish a list corresponding to True NA
  4. True_NB=[] #establish a list corresponding to True NB
  5. t=[] #establish a list corresponding to t

然后提示用户输入数据,之后计算每个时刻的数值计算出的,和真实的,并把他们添加到各自的中去:

  1. for i in range(int(t_end/dt)):
  2. NA.append(NA[i]+(NB[i]/tauB-NA[i]/tauA)*dt)
  3. NB.append(NB[i]+(NA[i]/tauA-NB[i]/tauB)*dt)
  4. True_NA.append(C1*math.exp(-(i+1)*dt*(alpha+1)/tauB)+C2)
  5. True_NB.append(-C1*math.exp(-(i+1)*dt*(alpha+1)/tauB)+C2*alpha)
  6. t.append((i+1)*dt)

最后打印结果并画图。

3.结果

用户输入的数据:

figure5_2

数值计算的结果:

figure5_3

其中,第一个 ,第二个 ,第三个

数值计算以及真实值曲线:

figure5_1

并且当 时,有

4.致谢

之前我的作业中并没有解析解的部分,但是在参考了2013301020145陈锋同学的作业后,我加上了这部分。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注