Wolfram mathematica 数学中的错误';s与PrincipalValue集成->;真的

Wolfram mathematica 数学中的错误';s与PrincipalValue集成->;真的,wolfram-mathematica,Wolfram Mathematica,似乎Mathematica对主值积分的处理在某些情况下失败了。考虑这两个表达式(应该给出相同的结果): 在Mathematica 7.0.0中,我得到 I Pi+Log[3] Log[3] 在以后的版本中是否已修复此问题?有没有人有(或多或少)通用解决方案的想法 编辑:上述两个表达式应计算相同的结果,第一个表达式通过计算积分的一般形式并在x0=1处对其求值,第二个表达式通过将x0设置为1执行积分。由于柯西主值具有精确的数学定义,Mathematica应给出相同的结果,否则拒绝回答 编辑2:同一

似乎Mathematica对主值积分的处理在某些情况下失败了。考虑这两个表达式(应该给出相同的结果):

在Mathematica 7.0.0中,我得到

I Pi+Log[3]
Log[3]
在以后的版本中是否已修复此问题?有没有人有(或多或少)通用解决方案的想法

编辑:上述两个表达式应计算相同的结果,第一个表达式通过计算积分的一般形式并在
x0=1
处对其求值,第二个表达式通过将
x0
设置为
1
执行积分。由于柯西主值具有精确的数学定义,Mathematica应给出相同的结果,否则拒绝回答

编辑2:同一个bug的一个可能更简单的例子,在
积分的内部和外部放置一个因子-1,给出不同的答案(第二个给出正确答案,第一个没有):


我不认为这是
PrincipalValue
中的错误。在第一行中,
PrincipalValue
无法“正确”工作,因为只有在完成
Integrate
后,磁极的位置才知道

编辑: 我在Mathematics玩了一会儿,这就是发生的事情。您可以使用命令自己查看。输出有点混乱(这就是为什么我不在这里复制它),但是您可以看到在哪里完成集成,在哪里替换
x0
的值,以及这与
主值的关系

编辑2:
回到解决你的实际问题上来。如果你使用一个假设来指定x=1/2 x0的哪一侧,那么这两个例子给出了相同的答案。

我假设Wolfram Alpha使用最新版本的Mathematica,它不喜欢你的第一个表达式,并给出了第二个表达式: 对数(3)+常数

{x%2C+-无穷大%2C+无穷大}%2C+++主值+-%3E+True]

这篇文章可能适用于这种情况,但我不是数学专家,所以我不知道?
然而,在某些情况下,几个不同的答案都与正式的数学定义一致。因此,例如,在计算符号积分时,通常有几个不同的表达式,它们都产生相同的导数

在8.0中似乎是固定的:

In[1]:= $Version
Out[1]= "8.0 for Mac OS X x86 (32-bit) (November 13, 2010)"

In[2]:= 
Integrate[UnitBox[x]/(x0 - x), {x, -Infinity, Infinity}, 
   PrincipalValue -> True, Assumptions -> {x0 > 0}] /. 
  x0 -> 1 // Simplify

Out[2]= Log[3]

In[3]:= Integrate[
 UnitBox[x]/(x0 - x) /. x0 -> 1, {x, -Infinity, Infinity}, 
 PrincipalValue -> True]

Out[3]= Log[3]

从你的答案看来,你认为PrimalPalm是对积分算法的一种方法指导,而我认为它是请求数学上定义良好的结果,即积分的柯西主值。由于这个结果有一个严格的数学定义,如果Mathematica以两种不同(但数学上等价)的方式要求结果时得出两种不同的答案,它就构成了一个bug(从我的角度来看)。严格来说,不是我这样认为主值,我只是告诉你Mathematica的行为;-)。这个问题可能在数学上是等价的,但这并不意味着它在计算上是等价的或可能的。看看这两种情况下Trace的输出,想想如果x0->I会发生什么。看看在替换之前如何很难确定积分的主值?我还想指出,这两种方法在数学上并不等价。正如您所指出的,第一个积分是用x0作为自由参数计算的。现在我的数学有点生疏了,但这似乎取消了积分成为定积分的资格,因此即使在纯数学意义上也不可能选择Cauchy主值。我不太同意数学等价性,但不是继续讨论(没有MathML),我在问题中添加了另一个bug示例。对于这个新的例子,我希望我们能同意Mathematica对同一个问题给出了不同的结果?在我需要的所有情况下,翻转标志都能解决问题,因此我不会对此进行更多的研究——以Wolfram的收费为代价,他们当然应该自己进行窃听!好的,那是一只虫子!为了获得更好的演示,请删除
假设->{x0>0}
部分。谢谢。Wolfram Alpha似乎不理解标准Mathematica中的
替换
规则
语法,因此我不太确定它回答的是什么问题。正如brainfsck在下面指出的,这在v8.Janus中得到了修复,在Mathematica.stackexchange.com上,我们刚刚从stackoverflow/Mathematica获得了一个迁移的问题。你是回答者之一,我们注意到你还没有在那里注册。如果您作为SO/MMA的常客之一,也能在mathematica.stackexchange.com上注册,我们将不胜感激。
-Integrate[ UnitBox[x]/(x0 - x), {x, -Infinity, Infinity}, PrincipalValue -> True, Assumptions -> {x0 > 0}]
 Integrate[-UnitBox[x]/(x0 - x), {x, -Infinity, Infinity}, PrincipalValue -> True, Assumptions -> {x0 > 0}]
In[1]:= $Version
Out[1]= "8.0 for Mac OS X x86 (32-bit) (November 13, 2010)"

In[2]:= 
Integrate[UnitBox[x]/(x0 - x), {x, -Infinity, Infinity}, 
   PrincipalValue -> True, Assumptions -> {x0 > 0}] /. 
  x0 -> 1 // Simplify

Out[2]= Log[3]

In[3]:= Integrate[
 UnitBox[x]/(x0 - x) /. x0 -> 1, {x, -Infinity, Infinity}, 
 PrincipalValue -> True]

Out[3]= Log[3]