函数结尾处的return关键字引发语法错误

时间:2019-06-03 19:43:07

标签: python

我只是想对ODE进行数字积分。

以下解决方法将所需的ODE嵌入包装器中,该包装器将把变量的微分元素传递到odeint函数中。

import numpy as np
import math
from scipy.integrate import odeint
import matplotlib.pyplot as plt

def f(s,t):
    l = 1
    h = s[0]
    dhdt = 2*((l*math.sin(h)-1)-math.power((l*math.sin(h)-1,1.5))/ (t*l*math.cos(h))
    return dhdt

t = np.linspace(0,20)
s0=[0]

s = odeint(f,s0,t)

plt.plot(t,s[:,0],'r--', linewidth=2.0)

plt.show()

口译员抱怨如下:

C:\Users\Matinking>python C:\Users\...\tt.py
  File "C:\Users\...\tt.py", line 10
    return dhdt
     ^
SyntaxError: invalid syntax

缩进规则看起来没有违反,那么我在这里做错什么了?

1 个答案:

答案 0 :(得分:1)

当您在看起来不错的行上收到SyntaxError时,应检查它之前的行。如果您看一下,可以看到您缺少括号。

math.power也不是一个函数。如果要提高指数,则应使用pow**运算符。我不确定这是否是您正在执行的操作,但是如果是这样,代码应如下所示:

def f(s,t):
    l = 1
    h = s[0]
    dhdt = 2*((l*math.sin(h)-1)-pow(l*math.sin(h)-1,1.5)/ (t*l*math.cos(h)))
    return dhdt