【发布时间】:2020-10-14 00:13:06
【问题描述】:
我有一个电路的分析模型,其输出是 s 域中的传递函数,我正在使用 LMFIT 来拟合电路组件的值,以获得最佳的 TF拟合测量数据集。
我想让我的代码更加模块化,我认为一个好的方法是这样的;
import lmfit as lm
z1 = lm.models.ExpressionModel('r1 + l1 * x')
z2 = lm.models.ExpressionModel('1 / (c1 * x)')
rlc = z1 * z2 / (z1 + z2)
这里的 x 是 s,形式的复数自变量; s = 2 * pi * j * f
我知道,为了拟合复杂数据,您需要将函数包装在一个产生真实输出的函数中,但最后在拟合生成的 CompositeModel 时,我将采用 TF 的幅度 (abs()),我只是想知道;
问题 1:
lmfit.models.ExpressionModel 可以处理复杂的表达式吗? (如包含一个复杂的变量)
..和;
问题 2(可选):
如果没有,我可以用 lmfit.Model 代替吗? IE。只需定义一个返回复杂值的目标函数,然后像这样将其提供给 lmfit.Model;
def _z1(s, r1, l1):
return r1 + l1 * s
z1 = lm.Model(_z1)
它在 lmfit.Model 的文档中说它会自动生成残差函数,但是如果我只使用自己的残差函数拟合生成的复合模型,这是否会被使用?
还有;
问题 3:
这是不明智的吗? IE。会导致大量开销吗?
【问题讨论】:
标签: python optimization simulation lmfit circuit-diagram