Gio*_*nni 3 wolfram-mathematica complex-numbers
我在使用复杂数字的Mathematica时遇到了问题.难道我做错了什么?
两个例子:
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]]
到目前为止我找不到更简单的结果(确实存在!)
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!
提前致谢!
对于第二个,请记住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
Run Code Online (Sandbox Code Playgroud)
你得到
Sqrt[x^2 + y^2] Cos[Arg[x + I y]] + I Sqrt[x^2 + y^2] Sin[Arg[x + I y]]
Run Code Online (Sandbox Code Playgroud)
或者如果你进入
FullSimplify@a
Run Code Online (Sandbox Code Playgroud)
你得到
E^(I Arg[x + I y]) Sqrt[x^2 + y^2]
Run Code Online (Sandbox Code Playgroud)
仅仅因为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]
Run Code Online (Sandbox Code Playgroud)
你会得到的
x + I y
Run Code Online (Sandbox Code Playgroud)
请记住,仅重置您的$ Assumptions需要
$Assumptions = True
Run Code Online (Sandbox Code Playgroud)
但总的来说,不要指望Mathematica会以你想要的方式呈现复杂的数字......