2013-06-01 80 views
1

我有兩點我測得的數據,我有兩點計算得到的數據。我試圖儘量減少這些數據之間的差異。例如Python優化

最小化點1(實測)和點1(計算)之間的差異。 最小化點2(測量)和點2(計算)之間的差異。

點1(計算)和點2(計算)的值作爲二次分佈的一部分相連:a * x^2 + b * x + c。我只想改變'a'參數。

因此,我試圖通過只更改一個參數來最小化點1和點2的差異。

我該如何使用python來做到這一點?我正在考慮使用scipy,什麼是合適的優化器?

回答

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