我应该如何创建函数来提供残差,以便使用scipy.optimize.leastsquares拟合阻抗数据?

2024-09-29 21:57:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用Levenberg-Marquardt算法在Scipy的优化模块的最小二乘函数中实现来拟合测量的阻抗数据。但是,我对如何提供残差有点困惑

在文档中显示的示例中,很明显您应该只提供实验值和计算值之间的减法。因此,我们不应该创建返回sqr的函数,而应该编写一个返回sqrs2数组的函数

虽然这是直接为正常数据,我不知道如何做到这一点的阻抗数据。每个阻抗测量(Z)都有一个实部和一个复部,因此目标函数变成imp,其中wt是权重因子,w是频率(自变量),a是要查找的参数集。问题是我不知道如何正确地为最小二乘函数提供残差,因为我认为imp2不起作用


Tags: 模块数据函数文档算法示例目标scipy
1条回答
网友
1楼 · 发布于 2024-09-29 21:57:16

the ^{} 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])

相关问题 更多 >

    热门问题