首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数学中定积分与不定积分的区别?

数学中定积分与不定积分的区别?
EN

Stack Overflow用户
提问于 2011-09-20 21:09:44
回答 2查看 1.9K关注 0票数 14

我注意到mathematica把某些确定的积分排除在外,但是如果我做一个不有限的积分,并减去结果函数的极限值,它就会给我一个答案。

计算定积分和不定积分有不同的算法吗?是否有什么原因,上面所描述的程序不是由Mathematica手工完成的呢?

示例:

正如评论中的人们所要求的那样,这里有两个例子。

代码语言:javascript
复制
Timing[Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), x]]
Out:={0.010452,(-c+r x)/(r^2 Sqrt[c^2+r^2-2 c r x])}

立即获取输出。同时,

代码语言:javascript
复制
Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1}]

一直在计算,让我的旧电脑慢下来。经过一段时间之后,它会返回一个非常长的结果,其中包含了很多情况。这里是数学7。在这个积分中没有奇点,也没有遇到复数等。为了得到这个值,让我们现在中止运行大约一分钟的计算,并使用微积分基本定理手动找到值。

代码语言:javascript
复制
g = (r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2)
l = Integrate[g, x] /. x -> -1;
u = Integrate[g, x] /. x -> 1;
u - l
Out:= (-c+r)/(r^2 Sqrt[c^2-2 c r+r^2])-(-c-r)/(r^2 Sqrt[c^2+2 c r+r^2])
FullSimplify[%] 
Out:= ((-c+r)/Sqrt[(c-r)^2]+(c+r)/Sqrt[(c+r)^2])/r^2

这实际上是正确的。最后,为了完整起见,让我们比较一下定积分的输出和时间:

代码语言:javascript
复制
Timing[Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 
   1}]]
Out:= {174.52,If[(Re[c/r+r/c]>=2||2+Re[c/r+r/c]<=0||c/r+r/c\[NotElement]Reals)&&((Im[r] Re[c]+Im[c] Re[r]<=0&&((Im[c]+Im[r]) (Re[c]+Re[r])>=0||Im[c]^3 Re[r]+Im[r] Re[c] (Im[r]^2-Re[c]^2+Re[r]^2)>=Im[c] (Im[c] Im[r] Re[c]+Re[r] (Im[r]^2 ... blah blah half a page

注意三分钟的计算时间和非常混乱的答案。

我的工作中有一个实际的例子,我注意到了这一点,但在截止日期提交之后,我感到困惑,却忘记了,直到今天,我再次面临同样的问题。

代码语言:javascript
复制
f = 1/((-I c + k^2/2 - 1/2 (a + k)^2) (I d + k^2/2 - 
    1/2 (-b + k)^2)) + 1/((I c + k^2/2 - 1/2 (-a + k)^2) (I c + I d + 
    k^2/2 - 1/2 (-a - b + k)^2)) + 1/((I d + k^2/2 - 
    1/2 (-b + k)^2) (I c + I d + k^2/2 - 
    1/2 (-a - b + k)^2)) + 1/((I c + k^2/2 - 1/2 (-a + k)^2) (-I d + 
    k^2/2 - 1/2 (b + k)^2)) + 1/((-I c + k^2/2 - 
    1/2 (a + k)^2) (-I c - I d + k^2/2 - 
    1/2 (a + b + k)^2)) + 1/((-I d + k^2/2 - 1/2 (b + k)^2) (-I c - 
    I d + k^2/2 - 1/2 (a + b + k)^2))

当我尝试定积分时,等了几个小时,我又等了又等(没错!)最后,我决定尝试一下在短时间内奏效的解决办法:

代码语言:javascript
复制
fl =  Integrate[f, k] /. k -> -1 ;
fu =  Integrate[f, k] /. k -> 1 ;
F = fu - fl;
F1 = F /. {a -> .01, c -> 0, d -> 1};

,请注意,,我说的不是像一条评论所建议的那样是奇点。Integrate[1/x, {x, -1, 1}]几乎立即返回Integrate::idiv: Integral of 1/x does not converge on {-1,1}. >>,这是一个非常合理的输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-21 03:02:06

我认为Daniel在上面的评论是正确的:“很可能是确定的集成代码正在检查集成路径上的奇点”

只需看:

代码语言:javascript
复制
Timing@Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1}]

Result -> None, I got bored waiting and aborted the calc

同时:

Timing@Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1},

Assumptions -> {r ∈ Reals && c ∈ Reals && c != r && c != -r}]

代码语言:javascript
复制
->{3.688, (-Sign[c - r] + Sign[c + r])/r^2} 

因此,这是您为常量指定哪些条件的问题。

西蒙在上面的评论中提出了另一种方法:

代码语言:javascript
复制
Timing@Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1},  
                 GenerateConditions -> False]

{10.375, ((-c + r)/Sqrt[(c - r)^2] + (c + r)/Sqrt[(c + r)^2])/r^2}

最后,你也可以:

代码语言:javascript
复制
Timing@Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1},  
                 GenerateConditions -> True]

{16.45, ConditionalExpression[.. A long expression ...., Re[c^2 + r^2] > 0]}
票数 12
EN

Stack Overflow用户

发布于 2011-09-21 17:35:09

贝里萨勒斯回答了这个问题。我只想对我在评论中的意思,以及它如何适用于这个例子有一点具体的说明。

被积体中的分母清楚地表明,如果,例如,r和c是实的、正的和r的,那么我们就有了一个问题。

代码语言:javascript
复制
In[1]:= InputForm[Timing[Integrate[(r - c*x)/(r^2 + c^2 - 2*r*c*x)^(3/2),
  {x, -1, 1}, Assumptions->r>c>0]]]
Out[1]//InputForm= {2.33, 2/r^2}

如果没有有用的假设,整合可能需要大量的时间来区分好坏行为的区域。引擎盖下的技术是令人望而生畏的(不平等处理可以是这样的)。也许它并不是在任何地方都能以最有效的方式应用。

更多资料可参阅

http://library.wolfram.com/infocenter/Conferences/5832/

http://dl.acm.org/citation.cfm?doid=2016567.2016569

丹尼尔·利希布鲁

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7491825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档