应用Python求解上篇函数在一系列离散点处的近似值。

 1 # -*- coding: utf-8 -*-
 2 
 3 import numpy as np
 4 import random as r
 5 import matplotlib.pyplot as plt
 6 import math
 7 
 8 p0=2
 9 lam=5
10 #dp/dt=lam*p,p(0)=p0,求p(t)
11 x=[]
12 y=[]
13 for i in np.arange(0, 1.5, 0.001):
14     x.append(i)
15     y.append(p0*math.exp(lam*i))
16 
17 plt.plot(x,y,linewidth=5)
18 
19 
20 #欧拉求解,向前分成300点分
21 xx=[0]
22 yy=[p0]
23 ds=1*1.0/100
24 for i in np.arange(0+ds, 1.5, ds):
25     xx.append(i)
26     yy.append(yy[-1]+lam*yy[-1]*ds)
27     
28 plt.plot(xx,yy,'b',marker='+') 
29 
30 
31 #欧拉求解,向后分成300点分
32 xx2=[0]
33 yy2=[p0]
34 ds=1*1.0/100
35 for i in np.arange(0+ds, 1.5, ds):
36     xx2.append(i)
37     yy2.append(yy2[-1]*1.0/(1-lam*ds))
38     
39 plt.plot(xx2,yy2,'r',marker='*') 
40 
41 #欧拉求解,修正分成300点分
42 xx3=[0]
43 yy3=[p0]
44 ds=1*1.0/100
45 for i in np.arange(0+ds, 1.5, ds):
46     xx3.append(i)
47     yy3.append((yy3[-1]+ds/2*lam*yy3[-1])/(1-ds/2*lam))
48     
49 plt.plot(xx3,yy3,'--','r',linewidth=2) 
50 
51 plt.show()

运行结果:

     

 

 posted on 2020-06-08 21:07  ぺあ紫泪°冰封ヤ  阅读(1745)  评论(0编辑  收藏  举报
Live2D