3

我在使用带有复数的 Mathematica 时遇到了问题。难道我做错了什么?

两个例子:

  1. ComplexExpand[(x + I y)^(1/2)] 产生(x^2 + y^2)^(1/4) Cos[1/2 Arg[x + I y]] + I (x^2 + y^2)^(1/4) Sin[1/2 Arg[x + I y]]

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

  2. ComplexExpand[Sqrt[x^2 + y^2] Cos[Arg[x + I y]] + I Sqrt[x^2 + y^2] Sin[Arg[x + I y]]]
    产生相同的结果ComplexExpand 的参数,而它显然应该是 x + I y !

提前致谢!

4

1 回答 1

5

对于第二个,请记住 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]]

或者如果你输入

FullSimplify@a

你得到

E^(I Arg[x + I y]) Sqrt[x^2 + y^2]

只是因为 Mathematica 不知道 X 和 Y 是REALS

但是您可以显式声明它,因此 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 只需要

$Assumptions = True

但总的来说,不要指望 Mathematica 会按照你想要的方式呈现复数......

于 2010-12-03T23:36:51.673 回答