Python在数值上解决了谐振子图形产生不需要的结果

问题描述 投票:2回答:2

我一直试图在数值上求解基本谐振子的图形但是当物体上的加速度与距离中心的距离的倒数成反比时会出现问题:

import math
from pylab import *
xg = [2]
xt = [0]
k = 1

dt = 1/1000
Vx = 0
for i in range(800000):
    a = -1/xg[i-1] #acceleration on the object
    Vx = Vx + dt*a
    xg.append(xg[i-1]+Vx*dt)
    xt.append(i*dt)
plot(xt,xg)
show()

正如你所看到的那样,它似乎会因为某种原因而下降并且不会返回。

我想知道是什么导致了这种情况发生,我一直试图解决这个问题几个小时。

是的,我是python,堆栈交换和数字解决问题的新手。任何反馈都表示赞赏

python physics numerical
2个回答
2
投票

试试这个

import math
from pylab import *
xt = [2]
t = [0]
k = 1

dt = 0.0001
Vx = 0
for i in range(800000):
    t.append(dt*i)
    a = -k*xt[i]
    xt.append(xt[i] + dt*Vx)
    Vx = Vx + dt*a
plot(t,xt)
show()

你最终得到这个:(我也把时间步长fyi减少到1/10000)enter image description here


0
投票

假设您希望加速度与距离的倒数成比例,当xg接近0时,数值将发散,从而导致数值不稳定。

© www.soinside.com 2019 - 2024. All rights reserved.