无效语法。也许你忘记了一个逗号? [已关闭]

问题描述 投票:0回答:1

我正在尝试求解二阶微分方程:

fy''+ df/dr y' - (1/r * df/dr + m^2 + rho/B)y=0

将简化为:

y''=- (1/f)*df/dr*y' + (1/f)*((1/r)*(df/dr)+ m^2+(rho/B))y
that f=1-(2*gamma/r)+etta/3*r^2+ gamma*r+ epsilon
##################solution######################
import numpy as np
import scipy as sp
from scipy.integrate import odeint

# primary quantities

m=1
rho=1
B=1
gamma=1
etta=1
epsilon=1
r=1
f= 1-(2*gamma/r)+(etta/(3*r*r))+ gamma*r+ epsilon
df= (2*gamma/(r*r))-((2/3)*(etta/r*r*r))+ gamma


def sode(y,x):
    y,z=y
    dydx=[z,((1/f)*df*z)+(1/f)*((1/r)*(df)+(m*m)+(rho/B))y]
    return dydx

x= np.linspace(0,1,10)
sol=odeint(sode,[2,-2],x)
print (sol)

当我运行程序时,该行与

dydx=[z,((1/f)*df*z)+(1/f)*((1/r)*(df)+(m*m)+(rho/B))y]

给出以下错误:

invalid syntax. Perhaps you forgot a comma?

任何指导将不胜感激。

python numpy differential-equations
1个回答
0
投票

如果你想用

( ... (rho/B))y
进行乘法,在 python 中你必须输入星号:
( ... (rho/B))*y

所以这行是:

dydx=[z,((1/f)*df*z)+(1/f)*((1/r)*(df)+(m*m)+(rho/B))*y]

© www.soinside.com 2019 - 2024. All rights reserved.