【发布时间】:2019-08-11 15:59:34
【问题描述】:
使用 scipy.optimize 时,我尝试成功的目标函数只能取一个变量,标量或向量。
例如,此代码有效:
from scipy import optimize
def f(x, a=2, b=-5, c=3):
return a*x*x+b*x+c
res=optimize.minimize_scalar(f)
print(res.x)
但是,如果我想要跟踪 res.x 随 a、b、c 的变化?以下代码不起作用,但如何使它起作用?
from scipy import optimize
def f(x, a, b, c):
return a*x*x+b*x+c
def change(a, b, c):
res=optimize.minimize_scalar(f(x, a, b, c))
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
我能想到的唯一方法是这样的:
from scipy import optimize
def change(a, b, c):
def f(x):
return a*x*x+b*x+c
res=optimize.minimize_scalar(f)
print(res.x)
return res.x
change(3, 2, 1)
change(3, -9, 0)
另一个函数里面的函数让我感觉很糟糕,还有其他方法吗?谢谢。
【问题讨论】:
-
a,b,c可以通过args参数传入(注意tuple要求)。 -
我不明白你的意思,你能显示一些代码吗?非常感谢!
-
docs.scipy.org/doc/scipy/reference/generated/… - 你看到
args参数了吗?? -
谢谢,刚看到,哈,想知道怎么用……
标签: scipy scipy-optimize