计算Runge Kutta而不是绘图的函数

2024-04-24 23:54:46 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在写一个脚本,它将使用龙格库塔方法求解并绘制一首颂歌。我想让脚本使用不同的函数,以便以后可以对其进行扩展。如果我在没有函数定义的情况下编写它,它可以正常工作,但是使用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")

Tags: 函数脚本pltprintp2pfp1append
1条回答
网友
1楼 · 发布于 2024-04-24 23:54:46

如果您声明了一个函数,则需要在某个时刻调用它,例如:

def rk(p,q,h):
    pass # your code here

if __name__ == '__main__':
    rk(1,2,1)

将函数调用放在if __name__ == '__main__'块中可以确保只在直接运行脚本时调用函数,而不是从另一个脚本导入它时调用该函数。(如果您感兴趣,请在此详细介绍:What does if __name__ == "__main__": do?

还有一个更好的选择;为了避免硬编码fn args(您的实际代码应该对意外的命令行输入进行一些错误处理):

^{pr2}$

相关问题 更多 >