我想使用在Scipy优化模块的最小二乘函数中实现的Levenberg-Marquardt算法来拟合测量的阻抗数据。然而,我对如何提供残差感到有点困惑。
在文档中显示的示例中,很明显,您应该只提供实验值和计算值之间的减法。因此,与其创建一个返回
,我们应该编写一个返回

。
虽然这对于正常数据是直接的,但我不确定如何对阻抗数据执行此操作。每个阻抗测量(Z)都有实数部分和复数部分,因此目标函数为
其中wt是权重因子,w是频率(自变量),a是要查找的参数集。问题是我不知道如何正确地将残差提供给最小二乘函数,因为我不认为

会起作用的。
发布于 2019-05-15 13:20:51
the scipy.optimize.least_squares documentation中的最后一个示例展示了如何处理复杂的残差。也就是说,如果你有复杂的输入和输出:
def f(z):
return z - (0.5 + 0.5j)您可以将该函数包装为两个实数:
def f_wrap(x):
fx = f(x[0] + 1j*x[1])
return np.array([fx.real, fx.imag])https://stackoverflow.com/questions/56141698
复制相似问题