我在Mathematica中有一个隐含的等式,我用NSolve解决了这个等式。现在,我需要根据高斯来衡量各种解决方案,但我无法使其发挥作用。以下是我的建议:
a = (4.2*10^(-5));
b = 4067;
c = 112;
sol[d_] := Select[NSolve[s == (1 + a^2*(2*Pi*1000*d)^2)/((1 + c/(1 + (s*b)/(1 + a^2*(2*Pi*1000*d)^2)))^2 + a^2*(2*Pi*1000*d)^2), {s}], Chop[(Im[s] /. #)] == 0 &][[1]][[1]][[2]];
NIntegrate[Exp[-v^2]*sol[v], {v, -2, 2}]
然而,这不起作用。有谁知道我做错了什么?我想要的是非常简单,但我在实施它时遇到了一些问题。
最佳, 奈尔斯。
答案 0 :(得分:3)
试试这个;要点是使用NSolve
的第三个参数来指定域并确保仅在数字参数上调用函数sol2
。
sol2[d_?NumericQ] := NSolve[s == (1 +
a^2*(2*Pi*1000*d)^2)/((1 +
c/(1 + (s*b)/(1 + a^2*(2*Pi*1000*d)^2)))^2 +
a^2*(2*Pi*1000*d)^2), {s}, Reals][[1]][[1]][[2]]
NIntegrate[Exp[-v^2]*sol2[v], {v, -2, 2}]
(* 1.66556 *)
Plot[Exp[-v^2]*sol2[v], {v, -2, 2}]