为了说明我的问题,这是一个玩具示例:
F[x_] := Module[{out},
If[x > 1,
out = 1/2,
out = 1
];
out
];
可以评估和绘制该功能。但是,当我尝试以数字方式集成它时,我收到错误
NIntegrate[F[x], {x, 0, 2}]
NIntegrate :: inumr:831美元的被积函数已经评估了边界为{{0,2}}的区域内所有采样点的非数值。 >>
答案 0 :(得分:2)
集成和其他一些函数将首先使用符号值进行一些探测。仅给出符号x时,您的模块将仅返回(别名)输出。
通过仅为数值定义F来解决此问题。 NIntegrate会发现这个,然后使用数值。
In[1]:= F[x_?NumericQ] := Module[{out},
If[x > 1, out = 1/2, out = 1]; out];
NIntegrate[F[x], {x, 0, 2}]
Out[2]= 1.5