## Komplexné čísla

### Základné tvary komplexného čísla

#### Algebraický tvar

Algebraický tvar komplexného čísla zapisujeme v tvare z=x+iy,
kde i je tzv. imaginárna jednotka. V systéme maxima ju zadávame
ako %i, teda z=x+%i*y. Hodnotu x nazývame reálna časť a hodnotu
y imaginárna časť komplexného čísla. 

Môžeme definovať komplexné číslo napr. v tvare:

z:3+2*%i;

Vidíme, že reélna časť Re z=3 a imaginárna časť Im z=2.
V maxime použijeme funkcie realpart(z) resp. imagpart(z): 

realpart(z);

imagpart(z);

S komplexnými číslami môžeme vykonávať všetky algebraické operácie,
avšak systém maxima výsledok automaticky neupravuje. Napr. súčin

(3+%i)*(2-5*%i);

Ak chceme výsledok v algebraickom tvare, je potrebné použiť funkciu 
rectform(), resp. cez menu
Simplify->Complex simplification->Convert to Rectform

rectform((3+%i)*(2-5*%i));

Podobne môžeme vypočítať hodnoty:

rectform(1/z);

rectform(z^2);

rectform((3+%i)/(2-5*%i));

Komplexne združené číslo ku číslu z=x+%i*y je číslo
x-%i*y, ktoré získame pomocou funkcie conjugate(z):

conjugate(z);

#### Exponenciálny a goniometrický tvar

Pri prevode komplexného čísla na goniometrický a exponenciálny tvar
využívame funkcie modul a argument komplexného čísla (detaily a význam
viď. slajdy ku komplexným číslam). V maxime máme pre výpočet modulu
funkciu cabs(̈́) a pre výpočet argumentu funkciu carg().

cabs(z);

carg(z);

cabs(1+%i);

carg(1+%i);

cabs(1/2+sqrt(3)*%i/2);

carg(1/2+sqrt(3)*%i/2);

Predchádzajúce výsledky porovnajte s geometrickým významom
funkcií modul a argiment vysvetleným na slajdoch.

Exponenciálny tvar komplexného čísla potom získame pomocou
funkcie polarform():

polarform(z);

polarform(1+%i);

polarform(1/2+sqrt(3)*%i/2);

Z výsledkov odvodíme, že goniometrický tvar čísla (1+%i) je
√2(cos(π/4)+%i*sin(π/4)), resp. pre číslo (1/2+%i*√3/2)
máme goniometrický tvar cos(π/3)+%i*sin(π/3).
Žiaľ, nie je k dispozícii funkcia, ktorej výsledkom by
bol priamo goniometrický tvar, treba ho odvodiť z
tavru exponenciálneho podľa deMoivrovho vzťahu
e^(%i*Θ)=cos(Θ)+%i*sin(Θ).
Pokúste sa sami takúto funkciu definovať. (Odmena 2 body).
Pozor, vo funkcii je potrebné zachovať hodnotu argumentu, teda napr.
cos(π/3) a zabrániť výpočtu jeho hodnoty, čo je 1/2.

#### Komplexné odmocniny

Pre určenie všetkých komplexných odmocnín môžeme využiť
funkciu solve(). Určíme napríklad všetky ôsme komplexné odmocniny
z 1.

riesenie:solve(u^8=1,u);

Pomocou funkcie map() si z daného zoznamu povyberáme všetky pravé strany,
takže na zozname necháme "mapovať" funkciu rhs():

odmocniny:map(rhs,riesenie);

Pokúsme sa teraz výsledky zobraziž v Gaussovej rovine.
Za tým účelom si pomocou funkcie map() oddelíme reálne
a imaginárne časti odmocnín. Teda:

realne:map(realpart,odmocniny);

imaginarne:map(imagpart,odmocniny);

Pre zobrazenie si načítame balíček draw

load(draw)$

draw2d(proportional_axes=xy,
    xaxis=true,
    yaxis=true,
    xrange=[-2,2],
    yrange=[-2,2],
    point\_type=7,
    point\_size=2,
    points(realne,imaginarne));

## Funkcie komplexnej premennej

### Výpočty funkčných hodnůt v komplexnom obore

Elementárne funkcie v komplexnom obore definujeme pomocou nekonečných
mocninových radov (viď. slajdy).
Pri samotných výpočtoch využívame jednak deMoivrov vzťah
e^(%i*Θ)=cos(Θ)+%i*sin(Θ)
a Eulerove vzťahy
cos(Θ)=(e^(%i*Θ)+e^(-%i*Θ))/2 resp. sin(Θ)=(e^(%i*Θ)-e^(-%i*Θ))/(2*%i)

Príklad: Určme hodnotu e^(%i*%pi/2).

Hodnotu môžeme priamo vypočítať v maxime

exp(%i*%pi/2);

Výsledok môžeme konfrontovať s postupom na základe deMoivrovho vzťahu

cos(%pi/2)+%i*sin(%pi/2);

Podobne určíme hodnotu e^(-%i*%pi/2).

cos(-%pi/2)+%i*sin(-%pi/2);

Príklad: Ukážeme že funkcia e^z je v komplexnom obore periodická
s periódou 2πi.

Zrejme môžeme písať e^(z+2πi)=e^z*e^(2πi).
Podľa deMoivrovho vzťahu vypočítame hodnotu e^(2πi).

cos(2*%pi)+%i*sin(2*%pi);

Platí teda e^(z+2πi)=e^z.
Môžeme aj priamo v maxime vypočítať

exp(z+2*%i*%pi);

čo sa zhoduje s výsledkome^z .

exp(z);

Príklad: určme reálnu a imaginárnu časť funkcie w=e^z.

Upravme si e^z=e^(x+%i*y)=e^x*e^(%i*y). Podľa deMoivrovho vzťahu
ďalej máme e^(%i*y)=cos(y)+%i*sin(y). Celkom teda
Re e^z=e^x*cos(y) a Im e^z=e^x*sin(y).
Rovnaký výsledok dostaneme aj výpočtom v maxime.
Buď ho vidíme z algebraického tvaru výsledku

rectform(exp(x+%i*y));

alebo využijeme funkcie realpart() a imagpart()

[realpart(exp(x+%i*y)),imagpart(exp(x+%i*y))];

Príklad: Určme reálnu a imaginárnu časť funkcie cos(z).

Podľa Eulerovho vzťahu je 
cos(z)=1/2*(e^(iz)+e^(-iz)), teda

subst(x+%iy,z,1/2*(exp(%i*z)+exp(-%i*z)));

a po roznásobení

rectform(%i*(x+%i*y));

rectform(-%i*(x+%i*y));

dostávame
cos(z)=1/2*(e^(ix-y)+e^(y-ix)).
Určíme reálne a imaginárne časti oboch exponenciálnych funkcií

prva:[realpart(exp(%i*x-y)),imagpart(exp(%i*x-y))];

druha:[realpart(exp(y-%i*x)),imagpart(exp(y-%i*x))];

Reálnu časť cos(z) teda určíme ako súčet:

1/2*(prva[1]+druha[1]);

Ak vyberieme cos(x) pred zátvorku a uvedomíme si,
že
(e^y+e^(-y))/2=cosh(y)
dostaneme výslednú reálnu časť funkcie cos(z)

realpart(cos(x+%i*y));

Podobne pre imaginárnu časť dostávame

1/2*(prva[2]+druha[2]);

Ak vyberieme sin(x) pred zátvorku a uvedomíme si,
že
(e^y-e^(-y))/2=sinh(y)
dostaneme výslednú imaginárnu časť funkcie cos(z)

imagpart(cos(x+%i*y));

#### Úloha
Opakujte postup a určte reálnu a imaginárnu
časť funkcie w=sin(z).

Príklad: Nájdime také komplexné číslo z, že sin(z)=5.

Ak ste splnili úlohu 2.1.1, presvedčili ste sa, že pre reálnu
a imaginárnu časť funkcie sin(z) platí:

[realpart(sin(x+%i*y)),imagpart(sin(x+%i*y))];

Dve komplexné čísla sa rovnajú, ak sa rovnajú ich reálne a komplexné
časti. Tak zostavíme systém rovníc
sin(x)*cosh(y)=5
cos(x)*sinh(y)=0

Druhá rovnica je splnená ak sinh(y)=0 alebo cos(x)=0.

sinh(y)=0 <=> y=0 ⇒ v prvej rovnici je cosh(0)=1
a preto sin(x)=5. Riešenie tejto rovnice ale neexistuje (uvedomte
si, že riešenie x už teraz hľadáme v reálnom obore).

Analyzujeme ešte druhý prípad 
cos(x)=0  <=> x=π/2 (resp. π/2+k*π, k∈Z, ale my hľadáme jedno riešenie,
preto sa uspokojíme s hodnotou π/2).
Pretože sin(π/2)=1, dostaneme rovnicu cosh(y)=5.

Riešenie pomocou funkcie solve() nám však v tomto prípade veľa úžitku
neprinesie:

solve(cosh(y)=5,y);

preto postupujeme tak, že si funkciu cosh(y) rozpíšeme
a dostaneme rovnicu
(e^y+e^(-y))/2=0,
čo upravíme do podoby
e^(2y)-10*e^y+1=0
a substitúciou e^y=v dostaneme kvadratickú rovnicu
v^2-10*v+1=0.
Tú už dokážeme vyriešiť pomocou solve()

solve(v^2-10*v+1,v);

Pretože v=e^y, máme

y=ln(5±2√6)

a celkom teda máme riešenie pôvodnej rovnice v tvare

z=π/2+%i*ln(5±2√6)

#### Úloha
Nájdite komplexné číslo z také, že cos(z)=-3.

## Zobrazenie funkcií komplexnej premennej

Prezentácia komplexných funkcií komplexnej premennej vo forme grafu,
tak ako sme boli zvyknutí u reálnej funkcie reálnej premennej
samozrejme nie je možná (výsledný graf by musel byť 4-rozmerný).
Môžeme si však aspoň prezentovať, ako sa pri danej funkcii "deformujú"
vodorovné a zvislé priamky v komplexnej rovine.
Využívame pri tom tzv. konformné zobrazenia,
tj. také, ktoré zachovávajú uhly. V našom prípade teda pôjde o pravé uhly
medzi pôvodnými priamkami a krivkami, ktoré z nich vzniknú pri
transfomácii.

Pozn.: Uhol, pod ktorým sa pretínajú krivky definujeme ako uhol,
pod ktorým sa pretínajú dotyčnice týchto kriviek v ich priesečníku. 

Pre potreby zobrazenia si najskôr definujeme funkciu, ktorá nám bude
zobrazovať transformovanú mriežku kolmých priemok.

mriezkaC(_f,a):=block(
[fx,fy,fxt,fyt,pl,j,ngrid],
fx:realpart(rectform(subst(z=x+%i*y,_f))),
fy:imagpart(rectform(subst(z=x+%i*y,_f))),
pl:[],
ngrid:29,
 for j:0 thru ngrid do(
 fxt:subst([x=-a+j*2*a/ngrid,y=t],fx),
 fyt:subst([x=-a+j*2*a/ngrid,y=t],fy),
 pl:cons([parametric(fxt,fyt,t,-a,a)] , pl)
 ),
pl:cons([color=red],pl),
 for j:0 thru ngrid do(
 fxt:subst([y=-a+j*2*a/ngrid,x=t],fx),
 fyt:subst([y=-a+j*2*a/ngrid,x=t],fy),
 pl:cons([parametric(fxt,fyt,t,-a,a)] , pl)
 ),
pl:cons([color=blue],pl),
pl:cons([xlabel="",ylabel=""],pl),
pl:cons([nticks=200],pl),
apply(draw2d,pl)
);

Ako vidíme, funkcia má 2 arguenty. Prvým je funkcia, ktorú chceme
zobraziť a druhý rozsah hodnôt, ktorých transfomácie uvidíme.

Ako prvú si môžeme zobraziť základnú mriežku, ktorú budeme transformovať

mriezkaC(z,3);

Ako prvé si môžeme ilustrovať transfomície roviny v mocninových funkciách.
Uvedomte si, že červenou farbou sú vykreslené obrazy pôvodne zvislých
a modrou frabou obrazy pôvodne vodorovných priamok.

mriezkaC(z^2,3);

mriezkaC(sqrt(z),3);

mriezkaC(1/z,3);

mriezkaC(z^3,1);

Exponenciálna a logaritmická funkcia

mriezkaC(exp(z),1);

mriezkaC(exp(z),3);

mriezkaC(exp(z),%pi);

mriezkaC(log(z),1);

mriezkaC(log(z),%pi);

Goniometrické funkcie

mriezkaC(cos(z),%pi);

mriezkaC(sin(z),%pi);

mriezkaC(tan(z),1);