Python优化

时间:2013-06-01 23:24:28

标签: python optimization scipy solver

我有两个点的数据,我已经测量过了,我有两个点的数据,我已经计算过了。我正在努力减少这些数据之间的差异。 e.g。

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

点1(计算)和点2(计算)的值作为二次分布的一部分连接:a * x ^ 2 + b * x + c。我希望仅更改'a'参数。

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

我如何使用python执行此操作?我正在考虑使用scipy,什么是合适的优化器?

1 个答案:

答案 0 :(得分:0)

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

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