Python 如何从leastsq()的返回数据中获取雅可比矩阵?

Python 如何从leastsq()的返回数据中获取雅可比矩阵?,python,numpy,scipy,Python,Numpy,Scipy,我经常在我的博士论文中使用scipy.optimize.leastsq(),但是我不知道如何从leastsq()返回的数据中得到雅可比矩阵的估计值。我需要知道在极小化中使用的雅可比矩阵的估计值,以便与有限差分近似值进行比较 有人有公式吗?怎么得到 当您检查如何在leastsq()中计算协方差矩阵时,这可能会有点棘手。我想答案是没有人能够从optimize.leastsq中恢复雅可比矩阵 这方面的最新威胁 从leastsq返回的协方差矩阵的一些示例中,我认为在许多情况下,默认设置的精度不是很高 要

我经常在我的博士论文中使用
scipy.optimize.leastsq()
,但是我不知道如何从
leastsq()返回的数据中得到雅可比矩阵的估计值。我需要知道在极小化中使用的雅可比矩阵的估计值,以便与有限差分近似值进行比较

有人有公式吗?怎么得到


当您检查如何在
leastsq()中计算协方差矩阵时,这可能会有点棘手。我想答案是没有人能够从optimize.leastsq中恢复雅可比矩阵

这方面的最新威胁

从leastsq返回的协方差矩阵的一些示例中,我认为在许多情况下,默认设置的精度不是很高


要检查它有多好,您可以将返回的协方差矩阵与雅可比矩阵的外积进行比较。

雅可比矩阵leastsq使用的是有限前向差分,因此您不会赢得太多。是的,但在我的情况下,前向差分中的步长非常重要。因此,如果leastsq使用的值太小,则由于舍入误差,雅可比矩阵可能为零。因此,我需要将我自己计算的雅可比矩阵与leastsq中的雅可比矩阵进行比较。矩阵中的项是观测到的数据精度有限,还是从公式中得出的,因此原则上你可以按照你喜欢的精度来计算?它们是从“数值公式”中计算出来的,但我无法以给定的精度计算它们。这是因为它们来自一个非常复杂的问题,其中有很多“计算噪音”。正因为如此,我知道改变一个参数,比方说,0.001将毫无意义,并给出随机导数,但改变1.0将是正确的,导数将是正确的。这就是为什么我需要查看雅可比矩阵,以及更好地了解leastsq()使用的每个参数的步长。仅供参考:在
scipy.optimize.leastsq
中,雅可比矩阵的有限前向差分估计使用的步长大小由
epsfcn
关键字参数控制。或者,你也可以用类似的有限差分法提供你自己的函数来计算雅可比矩阵,这确实是一个很好的答案。关于leastsq()使用雅可比矩阵的有限差分近似,步长由epsfcn参数确定,上述评论是正确的。这可以通过查看传递给最小化函数的参数来简单地检查。然而,协方差矩阵的近似值可能不同于通过使用有限差分中的相同步骤计算雅可比矩阵而获得的近似值。这可能是因为np.dot(jacobian.T,jacobian)经常会变得定义不清并增加其逆矩阵。为什么不使用
autograd
包来计算雅可比矩阵呢?