【问题标题】:How can I speed up NIntegrate computation?如何加快 NIntegrate 计算?
【发布时间】:2018-11-28 12:48:20
【问题描述】:

我想画一个定积分

myIntegral[x_] := NIntegrate[Sqrt[(a - b)^2 + (c - d)^2]/ (a - b), {a, 0, x}, {b, x, 1}, {c, 0, 1}, {d, 0, 1}]
Plot[myIntegral[x], {x, 0, 1}]

我正在使用 Mathematica 11.3。当我评估代码时,Mathematica 立即给出了一些关于数值积分收敛太慢的警告,然后它似乎卡在了计算中。 我尝试了 NIntegrate 的一些选项,例如建议 here,但没有成功。 有没有办法在可接受的时间内(例如几分钟)获得 Plot 的结果?

【问题讨论】:

标签: plot wolfram-mathematica numerical-integration


【解决方案1】:

Integrate 触手可及。

Assuming[0<x<1,
 Simplify[
   Integrate[Sqrt[(a-b)^2 + (c-d)^2]/(a-b), {a,0,x}, {b,x,1}, {c,0,1}, {d,0,1}]]]

给你

(-11*Sqrt[2] + 11*Sqrt[2+(-2+x)*x] + x*(-8-7*Sqrt[2+(-2+x)*x] + 13*Sqrt[1+x^2] +
 2*x*(6-3*Sqrt[2+(-2+x)*x] + x*(-4+2*x + Sqrt[2+(-2+x)*x] - Sqrt[1+x^2]))) +
 18*x^2*ArcCoth[Sqrt[2+(-2+x)*x]] + 9*ArcSinh[1] - 3*ArcSinh[1-x] - 3*ArcSinh[x] +
 6*Log[1-x] + 9*x*Log[-1+Sqrt[2+(-2+x)*x]] + 3*((-2+x)*Log[1+Sqrt[2+(-2+x)*x]] -
 4*x*Log[-(((-1+x)*(1 + Sqrt[1+x^2]))/x)] + x^3*(Log[2+x^2+2*Sqrt[1+x^2]] +
 2*Log[(1-x)/(x+x*Sqrt[2-2*x+x^2])])))/36

这应该比在个人NIntegrate上绘制数千个要快得多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2014-03-26
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多