我正在尝试编写一个ode以解决谐波振荡器问题,而我的函数谐波在odeint命令中使用时遇到了这个问题。
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint
k=4.0
m=1.0
B=0
def harmonic((x, y), t):
return [y, -k * x / m + B / m * y]
给出错误消息:
File "<ipython-input-60-2d6b156227be>", line 1
def harmonic((x, y), t):
^
SyntaxError: invalid syntax
有人可以帮助我吗? 谢谢!
答案 0 :(得分:2)
看下面的例子:
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint
k = 4.0
m = 1.0
B = 0
def harmonic(var, t=None):
x, y = var[0], var[1] # var is assumed to be an array, usually numpy array
return [y, -k * x / m + B / m * y]
result = odeint(harmonic, (0.2, 0), np.linspace(0, 1, 100))
plt.plot(result[:,0], result[:,1], 'r-')
plt.show()
答案 1 :(得分:1)
(x, y)
代表一个元组。如果只想将x,y用作单个变量,只需使用x,y
。您的函数将如下所示:
def harmonic(x, y, t):
return [y, -k * x / m + B / m * y]
将x,y和t的假设值传递给谐波函数将返回由函数return
语句中的代码计算出的列表:
harmonic(2,3,5)
#Output:
[3, -8.0]