我的目标是显示数值解的准确性以及它如何随所选时间步长的值而变化。使用以下代码生成数值解:
def f(te3):
y3 = -r3*(te3 - te_surr) #y is the derivative
return y3
for i in range(1, len(t3)):
te3[i] = te3[i-1] + f(te3[i-1])*dt
然后绘制这些数值解:
plt.plot(t3,te3)
最初,dt被选为0.1。我试图显示为时间步长的不同值生成的各种图:0.05,0.01等。但我不确定如何将其实现到我的代码中,而不是手动输入dt的每个值,
dt2 = 0.05
dt3 = 0.025
dt4 = 0.01
dt5 = 0.005
dt6 = 0.001
然后为每个dt值更改上面显示的代码,依此类推。有没有办法可以将这些值存储为列表或数组,并使用它来绘制值?
也许你可以使用字典来保存每个te3
的dt
。例如:
dt_values = [0.05, 0.025, 0.1, 0.05, 0.001]
my_te3 = {0.05:[1,2,3], 0.025:[1,2,3]}
for i, dt in zip(range(1, len(my_te3[0.05])), dt_values):
my_te3[dt][i] = my_te3[dt][i-1] + f(my_te3[dt][i-1])*dt
然后,为了绘图,你只需要循环键:
for te3 in my_te3.itervalues():
plt.plot(t3,te3)
请注意,itervalues
仅适用于Python 2.7。对于Python 3,请改用.values
。