Я использую минимизацию по методу наименьших квадратов, чтобы подогнать множество параметров, но результаты мало удивительны, я думаю, это может быть связано с минимизацией. Действительно, когда я изменяю условия инициализации, результаты будут другими...
В первый раз я пытаюсь настроить начальные значения параметров с помощью команды «xtol», которые указывают желаемую ошибку в приближенном решении, но результаты не лучше, поэтому я хотел бы знать, можно ли указать границы для каждый параметр. Это последнее решение может быть более точным, не так ли?
Кроме того, термины, которые мне нужно подобрать, являются параметрами ряда, возможно, есть лучший способ решить эту проблему, чем я сделал, написав 2 заказа...
def residual_V2will2(vars, XA, YA, x0, y0, A2, donnees):
aI = vars[0]
aII = vars[1]
modeleV2 = ma.masked_invalid(np.sqrt((XA-x0)**2 + (YA-y0)**2)**(1/2)*aI/(2*G)*((Kappa - 1/2. + \
1)*np.sin(np.arctan(((YA-y0)/(XA-x0)))/2) + \
1/2.*np.sin(np.arctan(((YA-y0)/(XA-x0)))*(-3/2.))) + np.sqrt((XA-x0)**2 + \
(YA-y0)**2)*aII/(2*G)*((Kappa - 2)*np.sin(np.arctan(((YA-y0)/(XA-x0)))) + \
np.sin(np.arctan(((YA-y0)/(XA-x0)))*(-1))) + A2)
return (donnees-modeleV2)
from scipy.optimize import leastsq
vars = [KI, A2, x0, y0]
out_V_west = sco.leastsq(residual_V2west, vars, args=(XAvect, YAvect, Vmvect))
print out_V_west
Итак, если я следую за вами, у меня должно быть что-то вроде этого:
def residual_V2west(vars, XA, YA, donnees):
KI = vars[0]
A2 = vars[1]
x0 = vars[2]
y0 = vars[3]
modeleV2 = ...
penalization = abs(2.-modeleV2)*10000
return (donnees-modeleV2 - penalization)
Но вроде не лучше :( хотя я пытаюсь играть со значениями пенализации...
(donnees - modeleU2 + penalization)
- person Saullo G. P. Castro   schedule 30.09.2014var
,XAvect
,YAvect
,Vmvect
) разумно нормализованы, т. е. порядка ~1. - person   schedule 30.09.2014