我想以三角形显示复数。例如:
z = (-4)^(1/4);
我不确定那个命令是什么,写起来很傻:
我想,命令是ExpToTrig
,但解决方案可能不仅仅是1+i
(或者它可以,我在滥用它?)。如何以trig形式显示复数。
命令是ExpToTrig
,它只是不提供所有解决方案(或者我没有找到方法)。最后通过编写纯函数NrootZpolar[n][z]
解决了我的问题:
NrootZpolar :=
Function[x,
Function[y,
( Abs[y] ^ (1/x) *
( Cos[((Arg[y] + 360° * Range[0, x - 1]) / x)] +
I*Sin[((Arg[y] + 360° * Range[0, x - 1]) / x)]))
]
]
并使用:
In[689]:= FullSimplify[NrootZpolar1[4][-4]]
Out[689]= {1 + I, -1 + I, -1 - I, 1 - I}
要想象:
ComplexListPlot[list_] := ListPlot[Transpose[{Re[list], Im[list]}], AxesLabel -> {Re, Im}, PlotLabel -> list, PlotMarkers -> Automatic]
Manipulate[ComplexListPlot[FullSimplify[NrootZpolar1[n][z]]], {z, -10, 10}, {n, 1, 20}]
答案 0 :(得分:2)
你可以用极坐标r(cos theta + i sin theta)表示复数z,其中r = Abs [z],theta = Arg [z]。因此,您需要的唯一Mathematica命令是Abs []和Arg []。
答案 1 :(得分:1)
如果您只是偶尔需要这样做,那么您可以定义一个像
这样的函数In[1]:= ComplexToPolar[z_] /; z \[Element] Complexes := Abs[z] Exp[I Arg[z]]
这样
In[2]:= z = (-4)^(1/4);
In[3]:= ComplexToPolar[z]
Out[3]= Sqrt[2] E^((I \[Pi])/4)
In[4]:= ComplexToPolar[z] == z // FullSimplify
Out[4]= True
要扩展功能(不是这是你问题的一部分),你可以使用
In[5]:= ComplexExpand[, TargetFunctions -> {Abs, Arg}]
最后,如果你总是想要以极性形式写的复数,那就像
In[6]:= Unprotect[Complex];
In[7]:= Complex /: MakeBoxes[Complex[a_, b_], StandardForm] :=
With[{abs = Abs[Complex[a, b]], arg = Arg[Complex[a, b]]},
RowBox[{MakeBoxes[abs, StandardForm],
SuperscriptBox["\[ExponentialE]",
RowBox[{"\[ImaginaryI]", MakeBoxes[arg, StandardForm]}]]}]]
会自动进行转化
In[8]:= 1 + I
Out[8]= Sqrt[2]*E^(I*(Pi/4))
请注意,这仅适用于明确复杂的数字 - 即具有FullForm
Complex[a,b]
的数字。它将在上面定义的z
上失败,除非您使用Simpify
之类的内容。
答案 2 :(得分:0)
从数学上讲,(-1)^(1/4)是对符号的滥用。没有这样的数字。
你用憎恶(:)表达的是一个等式的根源:
z^4 == 1
在Mathematica中(如在数学中一般)使用弧度比使用弧度更方便。以弧度表示,您可以定义例如
f[z1_,n_] := Abs[z] (Cos[Arg[z]] + I Sin[Arg[z]]) /.Solve[z^n+z1 == 0, z,Complex]
或
g[z1_,n_] := Abs[z] (Exp [I Arg[z]]) /.Solve[z^n+z1 == 0, z,Complex]
取决于您的符号偏好(三角形或指数...但最后一个是首选)。
为(-4)^(1/5)
获取所需的表达式,只需输入
g[4,5] or f[4,5]