我一直試圖數值求解對於基本諧波振盪器的曲線圖,但是當在對象上的加速度成比例,從中心的距離的倒數發生問題:Python的數值求解諧振子圖形產生不想要的結果
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,堆棧交換和數值解決問題。任何反饋表示讚賞
您的代碼在我的電腦上無法使用。它只是按照我的預期在屏幕上打印一個點。我想知道你怎麼能製作這樣的圖表? – phil
請注意,'dt = 1/1000'將在Python中始終爲'0'。 'dt = 1.0/1000'可能是你想要的。 – phil
我猜他正在使用python3。關於你的問題:諧波振盪器的加速度與距離成正比。因此,您必須計算加速度:'a = -xg [i-1]'。此外,你會得到這種一階積分的漂移。 – jotasi