Buffalo 发表于 2011-5-17 10:27:25

复值函数的拟合

现在需要拟合LD公式:a+\sum_{i=1}^k \frac{A_i}{B_i-x^2+ \sqrt{-1}x C_i},x是实变量。k可变,至少是3,大了以后更精确,当然参数变多,拟合更困难。现在的问题是mathematica拒绝对分式拟合。如果自己计算残差寻找极小值,则首先是参数太多,花费的时间长,另外就是不稳定,比方先自由寻找,找到一组参数(使残差极小),然后令其中的几个参数为刚才找到的参数,调整剩下的参数,结果找到的新参数全然不同。也就是说找到的可能是残差极小值而非最小值
各位有什么好办法?

wayne 发表于 2011-5-17 12:14:34

1# Buffalo
mathematica拒绝对分式拟合

能描述一下具体的情况吗

youyouyou 发表于 2011-5-17 15:47:36

可以试下1stOpt,直接支持对复数的拟合,也不需分解实部虚部。

Buffalo 发表于 2011-5-18 08:42:34

1# Buffalo


能描述一下具体的情况吗
wayne 发表于 2011-5-17 12:14 http://bbs.emath.ac.cn/images/common/back.gif

比如
s = Table, {i, 1, 50}];
FindFit

给出的结果是 The function value XXX is not a list of real numbers with dimensions XX at XX

Buffalo 发表于 2011-5-18 08:43:02

可以试下1stOpt,直接支持对复数的拟合,也不需分解实部虚部。
youyouyou 发表于 2011-5-17 15:47 http://bbs.emath.ac.cn/images/common/back.gif

4.0以上才可以,但是4.0现在还没出来

wayne 发表于 2011-6-4 16:19:07

4# Buffalo
的确是个问题。
我们常说的曲线拟合都是指 real 的。
更何况这里有多个分式,我想最省心的方法还是你所说的“自由寻找”,即 随机搜索法。
不过,我们可以让搜索智能化一点,比如 遗传算法 。

forcal 发表于 2011-6-5 09:44:31

1stOpt 4.0 早就出來快1年了。

Forcal也支持复数函数拟合。
页: [1]
查看完整版本: 复值函数的拟合