Wolfram mathematica Mathematica赢得';t整合条件函数

Wolfram mathematica Mathematica赢得';t整合条件函数,wolfram-mathematica,Wolfram Mathematica,为了说明我的问题,这里有一个玩具示例: F[x_] := Module[{out}, If[x > 1, out = 1/2, out = 1 ]; out ]; 可以计算并绘制函数。然而,当我尝试对它进行数值积分时,我得到了一个错误 NIntegrate[F[x], {x, 0, 2}] NIntegrate::inumr:被积函数out$831已对边界为{{0,2}的区域中的所有采样点求值为非数值。>> Integrate和其他一些函数将首

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

F[x_] := Module[{out},
   If[x > 1,
    out = 1/2,
    out = 1
    ];
   out
   ];
可以计算并绘制函数。然而,当我尝试对它进行数值积分时,我得到了一个错误

NIntegrate[F[x], {x, 0, 2}]
NIntegrate::inumr:被积函数out$831已对边界为{{0,2}的区域中的所有采样点求值为非数值。>>


Integrate和其他一些函数将首先对符号值进行一些探索。当只给模块指定符号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
不要忘记清除[F](或重新启动内核…)