Wolfram mathematica FindFit返回一个奇怪的nrnum

Wolfram mathematica FindFit返回一个奇怪的nrnum,wolfram-mathematica,Wolfram Mathematica,又来了 我正试图用Mathematica拟合数据点列表。问题是,它给了我一个错误,即函数在尝试拟合时是复杂的,即使我假设所有参数都是实的,并且函数中没有虚单位。让我相信这是因为我对Mathematica了解不够,它说在计算函数时得到的假想项应该被认为是一个完美的零:2.975219565012465*10^-753i。但它从何而来 现在是代码: FindFit[Table[{X[[i]], weight[[i]]}, {i, Length[weight]}], {allFunc[x, a, b,

又来了

我正试图用Mathematica拟合数据点列表。问题是,它给了我一个错误,即函数在尝试拟合时是复杂的,即使我假设所有参数都是实的,并且函数中没有虚单位。让我相信这是因为我对Mathematica了解不够,它说在计算函数时得到的假想项应该被认为是一个完美的零:2.975219565012465*10^-753i。但它从何而来

现在是代码:

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];
关于代码的方面,我很抱歉。 我得到的错误是:

函数值1.74493*10^14+2.975219565012465*10^-753 I在{a,b,c,d,e,f,g}={13.3122,0.0104586,-58.8739,3.986,87.764,6.958104500}处不是实数。>>


我在拟合范围内用这些参数绘制了函数,没有出现复杂的警告。我也在互联网上寻找解决方案,但我只收到想要进行复杂拟合的人的问题,而我没有。

用Re[]或Chop[]来包装函数