计算定积分和不定积分的算法是否不同?为什么Mathematica不能手动执行上述过程? 例子: 由于评论中有人要求提供示例,所以这里提供两个例子。
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])}
立即获取输出。 而,
Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1}]
这个计算使我的旧电脑变慢了。过了一段时间,它返回了一个不必要地冗长的结果,并包含了很多情况。这是Mathematica 7。在这个积分中没有奇点或复数等问题。为了得到值,请让计算运行大约一分钟,然后手动使用微积分基本定理的推论。
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
哪一个实际上是正确的。最后,为了完整起见,让我们比较一下确定积分的输出和时间:
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
请注意这个问题需要计算三分钟的时间,而且回答非常混乱。
这是我的一个实际工作例子,我注意到它并感到困惑,但在提交截止日期之后就忘记了,直到今天我再次面临同样的问题。
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))
我尝试计算定积分,等了很久,几个小时后(真的!),我最终决定尝试一个可以立即工作的解决方案:
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}. >>
,这是一个完全合理的输出。
Integrate[1/x, {x, -1, 1}]
为例思考。 - Dr. belisariusGenerateConditions -> False
通常会使定积分的行为类似于减去不定积分的极限。然而,你必须小心,因为Belisarius提示了一个原因。(始终将定积分结果与数值积分进行比较) - Simon