gpt4 book ai didi

python - SciPy LeastSq Dfun 用法

转载 作者:太空狗 更新时间:2023-10-30 03:06:51 25 4
gpt4 key购买 nike

我正在尝试让我的雅可比行列式与 SciPy 的优化库的 leastsq 函数一起工作。

我有以下代码:

#!/usr/bin/python
import scipy
import numpy
from scipy.optimize import leastsq

#Define real coefficients
p_real=[3,5,1]

#Define functions
def func(p, x): #Function
return p[0]*numpy.exp(-p[1]*x)+p[2]

def dfunc(p, x, y): #Derivative
return [numpy.exp(-p[1]*x),-x*p[0]*numpy.exp(-p[1]*x), numpy.ones(len(x))]

def residuals(p, x, y):
return y-func(p, x)

#Generate messy data
x_vals=numpy.linspace(0,10,30)
y_vals=func(p_real,x_vals)
y_messy=y_vals+numpy.random.normal(size=len(y_vals))

#Fit
plsq,cov,infodict,mesg,ier=leastsq(residuals, [10,10,10], args=(x_vals, y_vals), Dfun=dfunc, col_deriv=1, full_output=True)

print plsq

现在,当我运行它时,我得到 plsq=[10,10,10] 作为我的返回。当我取出 Dfun=dfunc, col_deriv=1 时,我得到接近 p_real 的东西。

谁能告诉我什么给了我?或者指出比 SciPy 提供的更好的文档来源?

顺便说一句,我使用雅可比行列式是因为我相信(也许是错误的)它会导致更快的收敛。

最佳答案

residuals 改为负值:

def residuals(p, x, y):
return func(p, x)-y

你得到

[ 3.  5.  1.]

希望这有帮助:)

关于python - SciPy LeastSq Dfun 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com