作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用solve_ivp解决初始值问题。问题是我的函数 f(x,y)=dy/dx 包含额外的参数。我尝试使用这个:
Pass args for solve_ivp (new SciPy ODE API)
但它总是给我错误。这是代码:
from numpy import arange
import math
import numpy as np
from scipy.integrate import solve_ivp
from numpy import pi
sigmav = 1.0e-9
Mpl = 1.22e19
ms=100.0
gg=100.0
gs=106.75
def Yeq(x):
return 0.145*(gg/gs)*(x)**(3/2)*np.exp(-x)
def ss(x,m_dm):
return (2/45)*((pi)**2)*gs*(m_dm**3/x**3)
def hubb(x,m_dm):
return 1.66*(gg**(1/2))*(m_dm**2/Mpl)*(1/x**2)
def derivada(x,yl,m_dm,σv):
return -(σv*ss(x,m_dm)*((yl**2)-(Yeq(x)**2)))/(x*hubb(x,m_dm))
xx=np.logspace(np.log10(3),3,100)
y00 = Yeq(xx[0])
x00 = xx[0]
sigmav = 1.7475e-9
ms=100.0
solucion1 = solve_ivp(fun=lambda x, y: derivada(x, y, args=(ms,sigmav),[np.min(xx),np.max(xx)],[y00],method='BDF',rtol=1e-10,atol=1e-10))
当我尝试运行solucion1 的单元时,它返回以下内容:
File "<ipython-input-17-afcf6c3782a9>", line 6
solucion1 = solve_ivp(fun=lambda x, y: derivada(x, y, args=(ms,sigmav),[np.min(xx),np.max(xx)],[y00],method='BDF',rtol=1e-10,atol=1e-10))
^
SyntaxError: positional argument follows keyword argument
这一定是非常简单的事情,但我刚刚开始使用 python,所以请帮助我。
最佳答案
您只是放错了右括号。由于 derivada 没有命名参数,因此删除其中的 args 语句,lambda 表达式已经绑定(bind)了这些附加参数。另外,传递的函数不是命名参数
solucion1 = solve_ivp(lambda x, y: derivada(x, y, ms, sigmav),[np.min(xx),np.max(xx)], [y00], method='BDF', rtol=1e-10, atol=1e-10)
或者采用您从 github 讨论中引用的形式,其中参数列表在其他地方构建
args = ( ms, sigmav )
solucion1 = solve_ivp(lambda x, y: derivada(x, y, *args),[np.min(xx),np.max(xx)], [y00], method='BDF', rtol=1e-10, atol=1e-10)
关于python - 使用 scipysolve_ivp 作为带有额外参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841367/
我正在尝试使用solve_ivp解决初始值问题。问题是我的函数 f(x,y)=dy/dx 包含额外的参数。我尝试使用这个: Pass args for solve_ivp (new SciPy ODE
我正在将代码从使用 scipy 的 odeint 转换为 scipy 的solve_ivp。使用 odeint 时,我将使用 while 循环,如下所示: while solver.successfu
我正在尝试求解耦合一阶 ODE 系统: 其中本例中的 Tf 被视为常数,并且给出了 Q(t)。 Q(t) 的图如下所示。用于创建时间 vs Q 图的数据文件可在 here 处获取。 . 针对给定 Q(
我是一名优秀的程序员,十分优秀!