Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica Mathematica:以极坐标形式显示复数_Wolfram Mathematica_Complex Numbers - Fatal编程技术网

Wolfram mathematica Mathematica:以极坐标形式显示复数

Wolfram mathematica Mathematica:以极坐标形式显示复数,wolfram-mathematica,complex-numbers,Wolfram Mathematica,Complex Numbers,我想以三角形式显示复数。例如: z = (-4)^(1/4); 我不确定这是什么命令,写这样的话很愚蠢: 我想,这个命令是ExpToTrig,但解决方案不可能仅仅是1+I(或者它可以,我误用了它?)。如何以三角形式显示复数 编辑: 命令是ExpToTrig,它只是没有给出所有的解决方案(或者我没有找到解决方案的方法)。最终解决了我编写纯函数的问题NrootZpolar[n][z]: NrootZpolar := Function[x, Function[y, ( A

我想以三角形式显示复数。例如:

z = (-4)^(1/4);
我不确定这是什么命令,写这样的话很愚蠢:

我想,这个命令是
ExpToTrig
,但解决方案不可能仅仅是
1+I
(或者它可以,我误用了它?)。如何以三角形式显示复数

编辑: 命令是
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}]

可以用极坐标形式r(cosθ+i sinθ)表示复数z,其中r=Abs[z]和θ=Arg[z]。因此,您只需要使用Abs[]和Arg[]这两个Mathematica命令。

如果您只需要偶尔执行,那么您可以定义如下函数

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[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))
请注意,这只适用于显式复数——即具有
复数[a,b]
完整形式的数字。除非在上面定义的
z
上使用类似于
Simpify
的东西,否则它将失败。

从数学上讲,(-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]

根据您的符号偏好(三角或指数…但最后一个是首选)

要获得所需的
(-4)^(1/5)
表达式,只需键入

g[4,5] or f[4,5]

你的答案是唯一解决OP可能存在的潜在问题的答案。i、 e.w=z的n个不同根^n@Simon我想问题不在于Mathematica本身,而在于将“基数”操作符理解为指数运算的多值逆。我试图解决这个问题……您的最后一段代码没有给出您期望的答案的原因是
/4
位于错误的位置。它不应该碰到
Arg[x]
术语。将右括号
移到右边的字符处,所有操作都正常。在您提供的图像中也会出现相同的错误。顺便说一句,要写出漂亮的公式,你不应该使用普通的
输入
单元格。相反,右键单击笔记本并选择
Insert New Cell>DisplayFormula
另请参见
g[z1_,n_] := Abs[z] (Exp [I Arg[z]]) /.Solve[z^n+z1 == 0, z,Complex]  
g[4,5] or f[4,5]