2

複素数を三角関数で表示したい。例えば:

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}]

代替テキスト

4

3 に答える 3

3

複素数zを極形式r(cos theta + i sin theta)で表すことができます。ここで、r =Abs[z]およびtheta=Arg[z]です。したがって、必要なMathematicaコマンドはAbs[]とArg[]だけです。

于 2010-10-13T23:01:11.293 に答える
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

于 2010-10-14T01:08:05.410 に答える
1

数学的に言えば、(-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]
于 2010-10-14T01:10:07.483 に答える