嗨我正在研究一個腳本,將解決和繪製使用龍格庫塔方法ODE。我希望腳本使用不同的功能,以便稍後可以對其進行擴展。如果我將它與函數定義一起編寫,它可以正常工作,但使用def()它不會打開繪圖窗口或打印結果。比你!函數計算龍格庫塔不繪圖
from numpy import *
import matplotlib.pyplot as plt
#H=p^2/2-cosq
#p=dp=-dH/dq
#q=dq=dH/dp
t = 0
h = 0.5
pfa = [] #Create arrays that will hold pf,qf values
qfa = []
while t < 10:
q = 1*t
p = -sin(q*t)
p1 = p
q1 = q
p2 = p + h/2*q1
q2 = q + h/2*p1
p3 = p+ h/2*q2
q3 = q+ h/2*p2
p4 = p+ h/2*q3
q4 = q+ h/2*p4
pf = (p +(h/6.0)*(p1+2*p2+3*p3+p4))
qf = (q +(h/6.0)*(q1+2*q2+3*q3+q4))
pfa.append(pf) #append arrays
qfa.append(qf)
t += h #increase time step
print("test")
plt.plot(pfa,qfa)
print("test1")
plt.show()
print("tes2t")
你是不是叫'rk',但即使你做什麼,你只例如將計算單個點,圖形將顯示,但是爲空。 – talonmies 2012-02-18 23:48:16
@talonmies你能解釋我怎樣才能把它繪製出來? – Surfcast23 2012-02-19 23:27:50
你正在要求'plot()'畫一條線,但只提供一個點。如果你做了'plot([p,pf],[q,qf])',它會嘗試繪製兩點。即使如此,它仍然不會繪圖,因爲如果'h <6',因爲你正在進行整數計算並且'h/6 = 0',所以'p'和'pf'和'q'和'qf'將會相等。對於所有正數h小於6.另外,如果這確實應該是一個4階段顯式龍格庫塔方法,那麼看起來你的公式不正確。 – talonmies 2012-02-20 06:23:19