我正在尝试求解二阶微分方程:
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?
任何指导将不胜感激。
如果你想用
( ... (rho/B))y
进行乘法,在 python 中你必须输入星号:( ... (rho/B))*y
所以这行是:
dydx=[z,((1/f)*df*z)+(1/f)*((1/r)*(df)+(m*m)+(rho/B))*y]