Intro
最近遇到了一个问题,要求一个由多个非线性方程组成的方程的 参数
已经目标方程的形式 求解对应非线性方程的未知参数
例如:
$$ s(t)=a\cdot f1(t)+b\cdot f2(t)+c \cdot f(3t) $$
其中:
$$f1(t)= w \cdot sin(k\cdot t)$$
$$f2(t)= 1- \frac{1}{\sqrt1-w^2}\cdot e^{-\alpha}\cdot sin[(1-\sqrt{1-w^2})+arccos(w)]$$
$f(3)$是一个cdf 概率累计分布函数
Python 解法
首先找了个LMFIT
的库,可以读文档使用
1 | from numpy import sqrt, pi, exp, sin, arccos, cos |
关键的问题在于初始params
的选择,这边可以使用一下Matlab
的lsqcurvefit
函数,参考下初始值的设定
Matlab
1 | t=1:15:400; |
问题
参数越多,拟合效果就很不好