Подпись метода для якобиана функции наименьших квадратов в scipy - PullRequest
8 голосов
/ 19 октября 2010

Может ли кто-нибудь привести пример предоставления якобиана функции наименьших квадратов в scipy?

Я не могу понять, какую сигнатуру метода они хотят - они говорят, что это должна быть функция, но очень трудно определить, какие входные параметры и в каком порядке должна принимать эта функция.

1 Ответ

12 голосов
/ 19 октября 2010

Вот пример экспоненциального спада, который я получил, чтобы работать с этим:

import numpy as np
from scipy.optimize import leastsq

def f(var,xs):
    return var[0]*np.exp(-var[1]*xs)+var[2]

def func(var, xs, ys):
    return f(var,xs) - ys

def dfunc(var,xs,ys):
    v = np.exp(-var[1]*xs)
    return [v,-var[0]*xs*v,np.ones(len(xs))]

xs = np.linspace(0,4,50)
ys = f([2.5,1.3,0.5],xs)
yn = ys + 0.2*np.random.normal(size=len(xs))
fit = leastsq(func,[10,10,10],args=(xs,yn),Dfun=dfunc,col_deriv=1)

Если бы я хотел использовать col_deriv=0, я думаю, что мне пришлось бы в основном взять транспонирование того, что я возвращаю с dfunc. Вы совершенно правы: документация по этому вопросу не так уж и хороша.

...