1

我有来自我测量的两个点的数据,我有来自我计算的两个点的数据。我试图最小化这些数据之间的差异。例如

最小化点 1(测量)和点 1(计算)之间的差异。最小化点 2(测量)和点 2(计算)之间的差异。

点 1(计算)和点 2(计算)的值连接为二次分布的一部分:a*x^2+b*x+c。我只想更改“a”参数。

因此,我试图通过仅更改一个参数来最小化第 1 点和第 2 点的差异。

我将如何使用 python 做到这一点?我正在考虑使用 scipy,什么是合适的优化器?

4

1 回答 1

0

scipy.optimize有一些很好的方法,例如fsolve,rootminimize. 阅读文档以了解它们是如何工作的,但这里有一个简短的示例来查找线性函数的根:

import scipy
from scipy.optimize import fsolve

def function_to_find_root_of(x, slope, yintercept):
    ''' x is a list of all the variables you need to minimize
        the other variables will be passed in as constants '''

    return slope*x + yintercept

m = 4
b = 7
print fsolve(function_to_find_root_of, x0=[10], args=(m, b), xtol=1e-10)
#prints [-1.75], which is the root of y=4x+7
于 2013-06-02T00:24:29.453 回答