Wolfram mathematica Mathematica、Arg和Simplify

Wolfram mathematica Mathematica、Arg和Simplify,wolfram-mathematica,complex-numbers,Wolfram Mathematica,Complex Numbers,我在使用复数的Mathematica时遇到了问题。我做错什么了吗 两个例子: ComplexExpand[(x+y)^(1/2)] 收益率(x^2+y^2)^(1/4)Cos[1/2 Arg[x+iy]]+I(x^2+y^2)^(1/4) Sin[1/2 Arg[x+I y]] 到目前为止,我还没有找到办法 更简单的结果(确实存在!) ComplexExpand[Sqrt[x^2+y^2]Cos[Arg[x+iy]]+isqrt[x^2+y^2]Sin[Arg[x+iy]] 产生与Complex

我在使用复数的Mathematica时遇到了问题。我做错什么了吗

两个例子:

  • ComplexExpand[(x+y)^(1/2)] 收益率(x^2+y^2)^(1/4)Cos[1/2 Arg[x+iy]]+I(x^2+y^2)^(1/4) Sin[1/2 Arg[x+I y]]

    到目前为止,我还没有找到办法 更简单的结果(确实存在!)

  • ComplexExpand[Sqrt[x^2+y^2]Cos[Arg[x+iy]]+isqrt[x^2+y^2]Sin[Arg[x+iy]]
    产生与ComplexExpand参数相同的结果,但它显然应该是x+iy


  • 提前谢谢

    对于第二个,请记住Mathematica不能对符号进行假设,因此默认情况下,“数字”是复杂的

    这就是为什么当你进入时:

    a = Sqrt[x^2 + y^2] Cos[Arg[x + I y]] + I Sqrt[x^2 + y^2] Sin[Arg[x + I y]];
    ComplexExpand@a
    
    你得到

    Sqrt[x^2 + y^2] Cos[Arg[x + I y]] +  I Sqrt[x^2 + y^2] Sin[Arg[x + I y]]
    
    E^(I Arg[x + I y]) Sqrt[x^2 + y^2]
    
    或者如果你进去

    FullSimplify@a
    
    你得到

    Sqrt[x^2 + y^2] Cos[Arg[x + I y]] +  I Sqrt[x^2 + y^2] Sin[Arg[x + I y]]
    
    E^(I Arg[x + I y]) Sqrt[x^2 + y^2]
    
    只是因为Mathematica不知道X和Y是实的

    但是你可以显式地声明它,所以Mathematica可以把它们当作实数

    试试这个:

    a = Sqrt[x^2 + y^2] Cos[Arg[x + I y]] + I Sqrt[x^2 + y^2] Sin[Arg[x + I y]];
    $Assumptions = Element[x, Reals] && Element[y, Reals]
    FullSimplify[a]
    
    你会得到

    x + I y   
    
    请记住,重置您的美元假设只需要

    $Assumptions = True
    

    但一般来说,不要期望Mathematica会以您希望的方式呈现复数…

    您希望输出什么类型的表达式?
    Simplify
    FullSimplify
    都接受第二个参数来指定假设,因此您不必更改全局
    $assemptions
    。另外,默认情况下,
    ComplexExpand
    将第二个参数中未显式指定为复数的所有变量视为实数。Mathematica 7手册的内容如下:ComplexExpand[expr]扩展expr,假设所有变量都是实变量。因此,我期望x和y在没有任何进一步规范的情况下被视为实数,无论如何,第一个表达式(1)应该产生如下结果:w=((x^2+y^2)^(1/2)+x)/2^(1/2)+iy/(2((x^2+y^2)^(1/2)+x))^(1/2);这是(x+Iy)^(1/2)主值的代数形式