Pierwiastek kwadratowy z liczby zespolonej z= x+I*y, gdzie liczby x i y są rzeczywiste

Zgodnie z wzorami podanymi w “zespolony_pierwiastek_kwadratowy_notatki.pdf” musimy rozważyć dwa przypadki, więc definiujemy dwie funkcje pomocnicze, a następnie tworzymy na ich podstawie funkcję końcową.

Tworzymy pierwiastek kwadratowy z zadanej liczby zespolonej z

z=.;

p1[z_]:={I (Sqrt[Abs[Re[z]]]),-I (Sqrt[Abs[Re[z]]])};

p2[z_]:={((I Im[z])/((Sqrt[2]) (Sqrt[Re[z]+(Sqrt[((Im[z])^2)+((Re[z])^2)])])))+((Sqrt[Re[z]+(Sqrt[((Im[z])^2)+((Re[z])^2)])])/(Sqrt[2])),-((I Im[z])/((Sqrt[2]) (Sqrt[Re[z]+(Sqrt[((Im[z])^2)+((Re[z])^2)])])))-((Sqrt[Re[z]+(Sqrt[((Im[z])^2)+((Re[z])^2)])])/(Sqrt[2]))};

p[z_]:=If[Re[z]≤0&&Im[z]==0,p1[z],p2[z]];

Teraz mamy gotową do działania funkcję liczącą pierwiastek kwadratowy z dowolnej liczby zespolonej. Jest potrzebna, bo to co daje Mathematica często nie nadaje się bezpośrednio do użycia !  Przypominam, że chcemy mieć jawną postać części rzeczywistej i urojonej wyniku !

Sqrt[5+6*I]

p[5+6*I]

Simplify[p[5+6*I]^2]

p[0]

p[4]

p[-4]

p[I]

p[I]^2

Solve[v^2==I,v]

FullSimplify[Solve[v^2==I,v]]

Podstawowe zastosowanie p[z] to wyznaczanie pierwiastków równania kwadratowego a*z^2 +b*z+c=0, gdzie a, b i c są dowolnymi liczbami zespolonymi i a≠0. W nowszych wersjach programu Mathematica może wystarczyć po prostu Solve, ale w poprzednich tak nie było !

ClearAll[a,b,c];

(* Ze względu na własności operacji na listach, rozw[a,b,c] daje listę dwóch pierwiastków równania kwadratowego a*z^2 +b*z + c =0 *)

rozw[a_,b_,c_]:=(-b+p[b*b-4*a*c])/(2*a)

rozw[3,4,5]

Solve[3*z^2+4*z+5==0,z]

(* W tym przypadku Solve wystarczyło ! *)

Simplify[3*(rozw[3,4,5])^2+4*rozw[3,4,5]+5]

(* Poniższe funkcje sprawdzają, czy rozwiązanie rzeczywiście spełnia równanie kwadratowe *)

check[a_,b_,c_]:=FullSimplify[a*(rozw[a,b,c])^2+b*(rozw[a,b,c])+c];

rozw[1,2,7]

check[1,2,7]

rozw[1+I,2-3*I,7-4I]

check[1+I,2-3*I,7-4I]

Solve[(1+I)*z^2+(2-3*I)*z+7-4I==0,z]

(* W tym przypadku Solve nie wystarczyło, a próba uproszczenia przy pomocy ComplexExpand ... ! *)

ComplexExpand[(Sqrt[-49-24 I])]

(* ... nie daje zadowalających wyników. Dlatego dobrze mieć do dyspozycji funkcje p[z] oraz rozw[a,b,c] *)