scipy中最小二乘函数的雅可比矩阵方法签名

11 投票
1 回答
4122 浏览
提问于 2025-04-16 05:43

有没有人能给个例子,说明怎么在 scipy 的最小二乘函数里提供雅可比矩阵?

我搞不清楚他们想要的函数格式是什么——他们说应该是一个函数,但我很难弄明白这个函数应该接受什么输入参数,以及这些参数的顺序是什么。

1 个回答

16

这是我用来进行指数衰减拟合的代码:

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 中返回的结果转置一下。不过你说得对:关于这方面的文档确实不太好。

撰写回答