2012-01-01 57 views
8

当我尝试计算下面的积分在数学8,我得到这个奇怪的结果:为什么Mathematica不能解决这个定积分?

In[1]:= Integrate[y/((1 + x^2 + y^2)^(3/2)), {y, 0, 1}] 

Mathematica graphics

枫14可以解决这个一身轻松:


为什么Mathematica给我一个不同的结果?

+1

你不通过在这两个例子中相同的变量整合。请确保在StackOverflow上提出直接和明确的可回答的问题以获得很好的答案。在这种情况下,你的意思是,“我怎样才能用Mathematica来计算这个积分?”? – Szabolcs 2012-01-01 10:47:26

+0

你是对的,我复制粘贴错误的表达。我纠正了它。 – 2012-01-01 11:21:06

+7

致闭幕者:这是关于**编程语言** * Mathematica *的完美主题。这不是一个数学/数学问题。 – 2012-01-01 15:49:42

回答

12

试试这个

r = Integrate[y/((1 + x^2 + y^2)^(3/2)), {y, 0, 1}] 
r = Assuming[Element[x, Reals], Simplify[r]]; 
Together[r] 

这给

(-Sqrt[1+x^2]+Sqrt[2+x^2])/(Sqrt[1+x^2] Sqrt[2+x^2]) 

这是一样的枫叶的:

enter image description here

+0

非常感谢。我可以把这个作为一个通用规则,当我得到一个令人困惑的条件表达式与真实和虚构的部分我使用假设x =真实表达式?顺便说一句,在mathematica中的评估需要几秒钟,而我的机器在枫树中立即就有了。此外,使用FullSimplify可以进一步简化结果,但是当我使用FullSimplify在Assuming表达式中取代Simplify时,我会得到与Simplify相同的结果。 – 2012-01-01 11:02:47

+10

@MartinKoller您可以在文档中查找['ConditionalExpression'](http://goo.gl/orIqS)以查找它是什么。只有当某些假设为真时,结果才有效。如果'x == I',那么M​​aple给出的结果根本不正确。在这种情况下,Mathematica可以检测到这一点,并生成结果有效的条件。如果你只对实数值'x'感兴趣,那么就说* Integrate函数,Integrate [y /((1 + x^2 + y^2)^(3/2)),{ y,0,1}, 假设 - > x \ [Element] Reals]'它会快得多。 – Szabolcs 2012-01-01 11:52:19

相关问题