Mathematica不会NIntegrate条件函数

时间:2013-09-19 19:12:20

标签: wolfram-mathematica

为了说明我的问题,这是一个玩具示例:

F[x_] := Module[{out},
   If[x > 1,
    out = 1/2,
    out = 1
    ];
   out
   ];

可以评估和绘制该功能。但是,当我尝试以数字方式集成它时,我收到错误

NIntegrate[F[x], {x, 0, 2}]
  

NIntegrate :: inumr:831美元的被积函数已经评估了边界为{{0,2}}的区域内所有采样点的非数值。 >>

1 个答案:

答案 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