\begin{Tehtava}
\begin{tehtava}
Olkoot $c$ ja $z_0$ kompleksilukuja. Tällöin rekursion 
\[
z_n = z_{n-1}^2+c
\]
määräämä dynaaminen systeemi tunnetaan kvadraattisena kuvauksena. Valituille luvuille
$c$ ja $z_0$ ylläoleva rekursio johtaa kompleksiseen lukujonoon $z_1,z_2,z_3\ldots$. Tätä
jonoa kutsutaan $z_0$:n kiertoradaksi. Riippuen lukujen $c$ ja $z_0$ valinnasta ratojen muotoja
on useita. 

Annetulle kiinteälle luvulle $c$ useimmilla $z_0$ rata lähestyy ääretöntä (eli $|z_n|$ kasvaa rajatta kun $n \rightarrow \infty $.) Joillakin $c$ ja $z_0$ rata kuitenkin suppenee kohti jotain periodista silmukkaa (eli arvot kiertävät $z_0$ jollain tietyllä etäisyydellä $|z_n|$); joillakin alkuarvoilla rata on kaoottinen. Nämä alkuarvot $z_0$ ovat kuvauksen Julia-joukko.

Tässä harjoituksessa kirjoitetaan MATLAB-ohjelma, joka laskee ns. täytetyn Julia-joukon, joka koostuu niistä alkioista $z_0$ joiden radat jollain annetulla arvolla $c$ eivät kasva rajatta -- tavallinen Julia-joukko on tämän joukon reuna. 

On näytetty, että jos $|z_n|$ kasvaa isommaksi kuin 2 jollain arvolla $n$, rekursio kasvaa rajatta. Arvoa $n$ jolla tämä tapahtuu, kutsutaan tässä tehtävässä pisteen $z_0$ ''pakonopeudeksi.'' 

Aloita kirjoittamalla funktio \texttt{n = escapeVelocity(z0,c,N)}, jossa $N$ on jokin yläraja pakonopeuksille (erityisesti: jos $|z_n|<2 \, \, \forall \,\, n<N$, funktion tulee palauttaa $N$. Näin vältetään ikuiset silmukat). 

Luodaksesi Julia-joukon kirjoita funktio \texttt{M=julia(zMax,c,N)}. Argumentti \texttt{zMax} määrää kompleksitasosta nelikulmion $|Im(z)|<z_{max},|Re(z)|<z_{maz}$. $c$ ja $N$ ovat samat argumentit kuin edellä, palautettava matriisi $\mathbf{M}$ koostuu määritetyn hilan pakonopeuksista. 

Aloita funktion \texttt{julia} kirjoittaminen määrittelemällä $500\times500$ hila realitasossa, luo sen avulla vastaava hila $\mathbf{Z}$ kompleksitasolle, ja aja funktio \texttt{escapeVelocity} jokaiselle matriisin $\mathbf{Z}$ alkiolle.
 
\end{tehtava}
\begin{vihje}
Realiakselin väli $[a,b]$ määritellään MATLABissa komennolla \texttt{I = linspace(a,b,n)}, missä n on haluttujen pisteiden määrä, kuten esim. 500. Hila reaalitasolle määritellään komennolla \texttt{[x y] = meshgrid(t1,t2) }, missä t1 ja t2 ovat välejä reaaliakselilta. Tästä luodaan kompleksitasoa peittävä hila komennolla \texttt{z = x+i*y}. 

Kompleksiluvun modulin saa selville itseisarvofunktiolla \texttt{abs}.

\end{vihje}


\end{Tehtava}
