FindFit返回一个奇怪的nrnum

时间:2013-05-10 06:02:21

标签: wolfram-mathematica

再次!

我正在尝试使用Mathematica填充数据点列表。问题是它给我一个错误,即当我假设所有参数都是Reals并且函数中没有虚构单位时,函数在尝试拟合时是复杂的。是什么让我相信我不了解Mathematica就是它在评估函数时所说的虚构术语应该被认为是一个完美的零点:2.975219565012465 * 10 ^ -753 I.但它是从哪里来的? / p>

现在代码:

FindFit[Table[{X[[i]], weight[[i]]}, {i, Length[weight]}], {allFunc[x,
a, b, c, d, e, f, g], {a \[Element] Reals, b \[Element] Reals, 
x \[Element] Reals, c \[Element] Reals, d \[Element] Reals, 
e \[Element] Reals, f \[Element] Reals, g \[Element] Reals}}, {{a, 
10.42}, {b, -0.05435}, {c, 7.59}, {d, 3.986}, {e, 88.19}, {f, 
6.958}, {g, 104500}}, x]

虽然allFunc是:

crystalBall[x_, \[Alpha]_, n_, \[Mu]_, \[Sigma]_, Norma_] :=
If[(x - \[Mu])/\[Sigma] > -\[Alpha],
Norma*Exp[-((x - \[Mu])^2/(2 \[Alpha]^2))],
Norma*(n/Abs[\[Alpha]])^
n Exp[-(Abs[\[Alpha]]^2/2)] (n/Abs[\[Alpha]] - Abs[\[Alpha]] - (
 x - \[Mu])/\[Sigma])^-n];
allFunc[x_, const_, slope_, alpha_, en_, miu_, sigma_, norm_] := 
Exp[const + slope*x] + crystalBall[x, alpha, en, miu, sigma, norm];

对于代码的方面感到抱歉。 我得到的错误是:

  

FindFit :: nrnum:函数值1.74493 * 10 ^ 14 + 2.975219565012465 * 10 ^ -753我不是{a,b,c,d,e,f,g}的实数= {13.3122,0.0104586 ,-58.8739,3.986,87.764,6.958,104500}。 >>

我已经在我的拟合范围内用这些参数绘制了函数,并且没有出现复杂的警告。我也在互联网上寻找解决方案,但我只是想要做一个复杂适合的人的问题,我不这样做。

1 个答案:

答案 0 :(得分:2)

将您的功能包装在Re []或Chop []