嗨,我正在写一个脚本,它将使用龙格库塔方法求解并绘制一首颂歌。我想让脚本使用不同的函数,以便以后可以对其进行扩展。如果我在没有函数定义的情况下编写它,它可以正常工作,但是使用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")
如果您声明了一个函数,则需要在某个时刻调用它,例如:
将函数调用放在
if __name__ == '__main__'
块中可以确保只在直接运行脚本时调用函数,而不是从另一个脚本导入它时调用该函数。(如果您感兴趣,请在此详细介绍:What does if __name__ == "__main__": do?)还有一个更好的选择;为了避免硬编码fn args(您的实际代码应该对意外的命令行输入进行一些错误处理):
^{pr2}$相关问题 更多 >
编程相关推荐