Mathematica: Показать комплексные числа в полярной форме

Я хочу отображать комплексные числа в форме триггера. Например:

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

альтернативный текст


person Margus    schedule 13.10.2010    source источник
comment
Причина, по которой ваш последний фрагмент кода не дает ожидаемого ответа, заключается в том, что /4 находится не в том месте. Это не должно нарушать условия Arg[x]. Переместите закрывающие скобки ) на символы вправо и все заработает.   -  person Simon    schedule 14.10.2010
comment
Та же ошибка сделана в изображении, которое вы предоставляете. Кстати, чтобы написать красивые формулы, вы не должны использовать обычную ячейку Input. Вместо этого щелкните правой кнопкой мыши блокнот и выберите Insert New Cell > DisplayFormula.   -  person Simon    schedule 14.10.2010


Ответы (3)


Если вам нужно делать это только время от времени, вы можете просто определить такую ​​​​функцию, как

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.

person Simon    schedule 14.10.2010
comment
См. также groups.google.com/d/topic/ comp.soft-sys.math.mathematica/ - person Simon; 06.09.2011

Вы можете выразить комплексное число z в полярной форме r(cos theta + i sin theta), где r = Abs[z] и theta = Arg[z]. Таким образом, единственные команды Mathematica, которые вам нужны, это Abs[] и Arg[].

person John D. Cook    schedule 13.10.2010

С математической точки зрения, (-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]

or

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]
person Dr. belisarius    schedule 14.10.2010
comment
Ваш ответ - единственный ответ, который касался вероятного основного вопроса, который был у ОП. то есть n различных корней w=z^n - person Simon; 14.10.2010
comment
@Simon Я предполагаю, что проблема не в самой Mathematica, а в понимании оператора счисления как многозначного, обратного возведению в степень. Я пытался обратиться к этому... - person Dr. belisarius; 14.10.2010