2013-06-01 6 views
1

У меня есть данные из двух точек, которые я измерил, и у меня есть данные из двух точек, которые я вычислил. Я пытаюсь свести к минимуму разницу между этими данными. напримерОптимизация Python

Минимизировать разницу между точкой 1 (измеренной) и точкой 1 (рассчитанной). Минимизировать разницу между точкой 2 (измеренной) и точкой 2 (рассчитанной).

Значения точки 1 (вычисленной) и точки 2 (рассчитаны) связаны как часть квадратичного распределения: a * x^2 + b * x + c. Я хочу изменить только параметр «a».

Поэтому я стараюсь свести к минимуму разницу для точек 1 и 2, изменив только один параметр.

Как бы это сделать, используя python? Я думаю использовать scipy, что будет подходящим оптимизатором?

ответ

0

scipy.optimize имеет хорошие методы, такие как fsolve, root и minimize. Прочтите документацию, чтобы выяснить, как они работают, но вот краткий пример, чтобы найти корень линейной функции:

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 
Смежные вопросы