【问题标题】:Producing multiple plots for multiple timestep values为多个时间步长值生成多个图
【发布时间】:2018-06-03 15:18:39
【问题描述】:

我的目标是展示数值解的准确性以及它如何随所选时间步的值而变化。使用以下代码生成数值解:

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 值更改上面显示的代码,依此类推。有没有办法可以将这些值存储为列表或数组并使用它来绘制值?

【问题讨论】:

    标签: python python-2.7 numpy matplotlib


    【解决方案1】:

    也许您可以使用字典为每个dt 保存te3。例如:

    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

    【讨论】:

    • 我在尝试绘图时收到消息“x 和 y 必须具有相同的第一维”,知道为什么吗?
    • t3te3 的大小不同。它们必须具有相同数量的组件才能被绘制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2013-06-17
    • 1970-01-01
    • 2021-06-11
    • 2015-03-11
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多