gpt4 book ai didi

python - 科学 'Minimize the sum of squares of a set of equations'

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:31 26 4
gpt4 key购买 nike

我在 scipy 'leastsq' 优化例程中遇到问题,如果我执行下面的程序,它说

    raise errors[info][1], errors[info][0]
TypeError: Improper input parameters.

有时 索引超出数组范围...

from scipy import *
import numpy
from scipy import optimize
from numpy import asarray
from math import *

def func(apar):
apar = numpy.asarray(apar)
x = apar[0]
y = apar[1]
eqn = abs(x-y)
return eqn

Init = numpy.asarray([20.0, 10.0])
x = optimize.leastsq(func, Init, full_output=0, col_deriv=0, factor=100, diag=None, warning=True)
print 'optimized parameters: ',x
print '******* The End ******'

我不知道我的 func optimize.leastsq() 调用有什么问题,请帮助我

最佳答案

leastsq 使用向量,因此残差函数 func 需要返回长度至少为 2 的向量。因此,如果您将 return eqn 替换为 return [eqn, 0.],您的示例将起作用。运行它给出:

optimized parameters:  (array([10., 10.]), 2)

这是绝对差的最小值的众多正确答案之一。

如果你想最小化一个标量函数,fmin 是可行的方法,optimize.fmin(func, Init)

这里的问题是,尽管这两个函数对于标量来说看起来相同,但它们针对的是不同的目标。 leastsq 找到最小平方误差,通常来自一组理想化曲线,并且只是进行“最佳拟合”的一种方法。另一方面,fmin 找到标量函数的最小值。

很明显,您的示例只是一个玩具示例,这些都没有真正意义,因此您采用哪种方式将取决于您的最终目标。

关于python - 科学 'Minimize the sum of squares of a set of equations',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488227/

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