Halten von Phasenfaktoren in Sqrt

Jan 06 2021

Ich versuche, bestimmte holomorphe Funktionen zu zeichnen, die quadratische und höhere Wurzeln enthalten. Im Sinne der komplexen Analyse ist die Funktion$f:z\mapsto z^\alpha$ für einige $\alpha\in\mathbb C$ hat einen Phasenfaktor $e^{2\pi i\alpha}$ beim $z=0$, was bedeutet, dass auf einer kleinen Kreisbahn herum $0$ die Funktion $f$greift diesen Faktor auf. Gibt es eine Möglichkeit, dies in Mathematica zu implementieren?

Beispielsweise,

g[z_] = z^4;
Sqrt[g[Exp[Pi I/2]]]

gibt 1 als Ergebnis, wo ich möchte, dass Mathematica die Phase behält $g(e^{\pi i/2})=e^{2\pi i}$ und dann berechnen $$\sqrt{g(e^{\pi i/2})}=e^{\pi i}=-1.$$Mit Sqrtoder$(\cdot)^{1/2}$Dies scheint nicht möglich zu sein, da sie die Hauptquadratwurzeln auswählen. Vielen Dank für deine Hilfe!

BEARBEITEN Hier ist ein Beispiel:

lim = 5; dlim = 20; 
f1[z_] = Sqrt[z^8];
f2[z_] = z^4;
p1 = ParametricPlot[{Re[f1[1 + d I]], Im[f1[1 + d I]]}, {d, -dlim, 
    dlim}, PlotRange -> {{-lim, lim}, {-lim, lim}}];
p2 = ParametricPlot[{Re[f2[ 1 + d I]], Im[f2[1 + d I]]}, {d, -dlim, 
    dlim}, PlotRange -> {{-lim, lim}, {-lim, lim}}];
GraphicsGrid[{{p1, p2}}]

Offensichtlich sind die Funktionen f1und f2nicht die gleichen, genauso wie$\sqrt{x^2}=|x|$ ist ungleich zu $x$ auf $\mathbb R\ni x$. Für meinen Zweck bin ich eher an einer Auflösung der Quadratwurzel interessiert, die zu einer glatten Funktion führt. Die obigen Darstellungen sehen wie folgt aus:

Im linken Bild sieht man Punkte, an denen die Funktion den Astschnitt der Quadratwurzel kreuzt. Ich frage mich, ob es einen Weg gibt, dies zu vermeiden, wie im rechten Bild, ohne die Quadratwurzel von Hand auflösen zu können. Zum Beispiel, wenn man einen Ausdruck hinzufügt$z^8$ das ähnliche Phasen enthält, möchte ich eine gemeinsame Phase aus der Quadratwurzel herausnehmen, um nicht vom Astschnitt betroffen zu sein.

Man kann auch die obige Funktion deformieren, um zu sagen $f(z)=\sqrt{z^8+\varepsilon}$ für einige $\varepsilon>0$. Dann gibt es keine Möglichkeit, die Quadratwurzel für generisch zu ziehen$z$und es ist nicht möglich, eine Verformung des rechten Bildes zu zeichnen. Ich bin trotzdem daran interessiert, einen Weg zu finden, so dass das richtige Bild kontinuierlich deformiert wird.

Das eigentliche Interesse von mir sind Quadratwurzeln der modularen Funktionen EllipticThetaund DedekindEta, die sich unter bestimmten fraktionalen linearen Transformationen mit Phasen transformieren. Dann ist es gut definiert, Ausdrücke wie zu haben$\sqrt{\vartheta_4(z)^8+\varepsilon \vartheta_2(z)^4\vartheta_3(z)^4}$ da beide Summanden mit den gleichen Phasen transformieren.

Alle oben genannten Probleme ergeben sich aus der Tatsache, dass Mathematica bei jedem Schritt komplexe Zahlen entweder in kartesischen Koordinaten ausdrückt oder alles Modulo ignoriert $2\pi$in polarer Form. Es wäre schön, einen Weg zu finden, um Mathematica daran zu hindern, ohne jede einzelne Operation neu definieren zu müssen. Vielen Dank!

Antworten

5 Dominic Jan 07 2021 at 02:38

Dies ist ein Beispiel für das allgemeine Problem, eine mehrwertige Funktion auf einem kontinuierlichen Pfad analytisch fortzusetzen.

Im Falle einer algebraischen Funktion wie $w=\sqrt{z^8}$können wir es schreiben als $f(z,w)=w^2-z^8=0$ und in Ihrem Fall lassen $z(t)=1+it$, schreiben: $$ \frac{dw}{dt}=-\frac{f_z}{f_w}\frac{dz}{dt}=\frac{4i(1+it)^7}{w} $$ Als nächstes lösen wir das (mehrwertige) IVP: $$ \frac{dw}{dt}=\frac{4i(1+i t)^7}{w};\quad \{w_0\}=\{f(z(t_0),w)=0\} $$ wo die DE und Anfangswerte $\{w_0\}$ zum $t_0=-5$ sind eingerichtet als:

tStart = -5;
tEnd = 5;
thez[t_] = 1 + t I;
theDE = w'[t] == ((4 I z^7)/w /. {z -> thez[t],
    w -> w[t]});
wStart = w /. Solve[w^2 == (1 + tStart I)^8, w]

Lösen Sie nun beide IVPs und zeichnen Sie die Ergebnisse auf:

colors = {Red, Blue};
plotTable = Table[
   dSol = 
    First[NDSolve[{theDE, w[-5] == wStart[[i]]}, 
      w, {t, tStart, tEnd}]];
   theSol[t_] := Evaluate[Flatten[w[t] /. dSol]];
   ParametricPlot[{Re[theSol[t]], Im[theSol[t]]}, {t, tStart, tEnd}, 
    PlotRange -> {{-5, 5}, {-5, 5}}, PlotStyle -> colors[[i]]],
   {i, 1, 2}];
Show[plotTable]