【问题标题】:Mathematica won't NIntegrate a conditional functionMathematica 不会 NIntegrate 条件函数
【发布时间】:2023-04-01 22:36:01
【问题描述】:

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

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

可以评估和绘制函数。但是,当我尝试对其进行数值积分时,我得到一个错误

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

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

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    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](或者重启你的内核..)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多