循环数字不更新

汤姆·韦斯纳

我试图绘制一个在垂直振荡表面上弹跳的球。我认为代码(与变量有关)正在运行,但是由于循环,数字没有更新以反映变量的变化。我希望这不是模糊问题,但为什么他们不更新?

谢谢!

import numpy as np
import matplotlib.pyplot as plt


    h_b=np.array([10])#initial ball height
    g=-9.8 #gravity acceleration
    #v_b=np.array([0]) 
    v_b=np.array([0.0001])#initial ball velocity
    dt=0.1 #time-step

    a=3 #amplitude of surface's movement
    f=0.2 #frequency of the oscillations
    h_s=np.array([0]) #height of the oscillating surface 
    v_s=np.array([a*2*np.pi*f]) #velocity of the oscillating surface

    r=0.9 #coefficient of restitution

    x=np.linspace(0,20,20)

    t=np.array([0]) # setting up the time array


    fig= plt.figure()
    ax1=fig.add_subplot(1,2,1)
    ax2=fig.add_subplot(1,2,2)
    while np.abs(h_b[-1])>0.00001 and np.abs(v_b[-1])>0.00001 :
        while h_b[-1]>h_s[-1] :
            n=len(v_b)
            ax1.clear()
            ax1.set_xlim(0,20)
            ax1.set_ylim(-a,50)
            ax1.plot(10,h_b[n-1],'.',x,np.ones(20)*h_s[n-1])
            ax2.clear()
            ax2.plot(t,h_b)
            plt.show()
            v_b=np.append(v_b,v_b[n-1]+g*dt)
            h_b=np.append(h_b,h_b[n-1]+v_b[n-1]*dt)
            h_s=np.append(h_s,a*np.sin(2*np.pi*f*n*dt))
            v_s=np.append(v_s,a*2*np.pi*f*np.cos(2*np.pi*f*n*dt))
            t=np.append(t,n*dt)
            plt.pause(0.1)
        v_b[-1]=v_s[-2]-r*(v_b[-2]-v_s[-2])
        print('%f' % v_b[-1])
        h_b[-1]=h_s[-1]+0.0001
存在的重要性欧内斯特

你不应该plt.show在循环中调用它意味着在脚本结束时只调用一次。如果您删除 plt.show(),它将按预期工作。

import numpy as np
import matplotlib.pyplot as plt

plt.ion()
h_b=np.array([10])#initial ball height
g=-9.8 #gravity acceleration
#v_b=np.array([0]) 
v_b=np.array([0.0001])#initial ball velocity
dt=0.1 #time-step

a=3 #amplitude of surface's movement
f=0.2 #frequency of the oscillations
h_s=np.array([0]) #height of the oscillating surface 
v_s=np.array([a*2*np.pi*f]) #velocity of the oscillating surface

r=0.9 #coefficient of restitution

x=np.linspace(0,20,20)

t=np.array([0]) # setting up the time array


fig= plt.figure()
ax1=fig.add_subplot(1,2,1)
ax2=fig.add_subplot(1,2,2)
plt.draw()

while np.abs(h_b[-1])>0.00001 and np.abs(v_b[-1])>0.00001 :

    while h_b[-1]>h_s[-1] :
        n=len(v_b)
        ax1.clear()
        ax1.set_xlim(0,20)
        ax1.set_ylim(-a,50)
        ax1.plot(10,h_b[n-1],'.',x,np.ones(20)*h_s[n-1])
        ax2.clear()
        ax2.plot(t,h_b)

        v_b=np.append(v_b,v_b[n-1]+g*dt)
        h_b=np.append(h_b,h_b[n-1]+v_b[n-1]*dt)
        h_s=np.append(h_s,a*np.sin(2*np.pi*f*n*dt))
        v_s=np.append(v_s,a*2*np.pi*f*np.cos(2*np.pi*f*n*dt))
        t=np.append(t,n*dt)
        plt.pause(0.1)
    v_b[-1]=v_s[-2]-r*(v_b[-2]-v_s[-2])
    print('%f' % v_b[-1])
    h_b[-1]=h_s[-1]+0.0001

plt.ioff()
plt.show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新多行而不循环

来自分类Dev

连续不更新循环

来自分类Dev

AngularJS循环不更新视图

来自分类Dev

Python的while循环不更新

来自分类Dev

如何获取数字数组而不循环

来自分类Dev

For循环不总是更新C#

来自分类Dev

JTextField不更新for循环中的用户输入

来自分类Dev

画布在每次循环迭代后不更新

来自分类Dev

为什么向量不循环更新?

来自分类Dev

变量不更新通过csv文件循环

来自分类Dev

更新多行而不循环:PHP-MySQL

来自分类Dev

cmd.exe不递增for循环中的数字

来自分类Dev

循环直到两个数字不匹配

来自分类Dev

Angular JS-模型不更新数字输入字段

来自分类Dev

如何将数字与列表中的所有数字进行比较而不循环列表?

来自分类Dev

jQuery Each循环不更新变量中的HTML

来自分类Dev

为什么我的for循环不更新给定变量?

来自分类Dev

如何创建在此循环中不更新的变量?

来自分类Dev

SwiftUI为什么不更新嵌套ForEach循环中的值?

来自分类Dev

jQuery Each循环不更新变量中的HTML

来自分类Dev

while循环似乎不记得变量更新-不涉及管道

来自分类Dev

为什么我的for循环不更新给定变量?

来自分类Dev

判断并发队列是否已更新而不循环

来自分类Dev

Python 中的循环不更新数组,为什么?

来自分类Dev

循环批处理文件,目标不更新

来自分类Dev

在循环中从 PHP 文件中获取时不更新值

来自分类Dev

循环不循环

来自分类Dev

虽然不循环的循环

来自分类Dev

时间循环不循环