mlGr09\\
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 reaalitasossa, luo sen avulla vastaava hila $\mathbf{Z}$ kompleksitasolle, ja aja funktio \texttt{escapeVelocity} jokaiselle matriisin $\mathbf{Z}$ alkiolle.
 

\textbf{Vihje:}
Reaaliakselin 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}.

\textbf{Vaativuus:} 2+ \\
\textbf{Tehtävän Latex-koodi:}\\
\href{../mlteht/mlGraphics/mlGr09.tex}{../mlteht/mlGraphics/mlGr09.tex}

\textbf{Ratkaisu:}  \\
%\href{../mlteht/mlGraphics/ratkaisut/html/mlGr09R.html}{../mlteht/mlGraphics/ratkaisut/html/mlGr09R.html} Publish ->  html-muodossa\\
%\href{../mlteht/mlGraphics/ratkaisut/html/mlGr09R.pdf}{../mlteht/mlGraphics/ratkaisut/html/mlGr09R.pdf} Publish -> pdf-muodossa\\
\href{../mlteht/mlGraphics/ratkaisut/mlGr09R.m} {../mlteht/mlGraphics/ratkaisut/mlGr09R.m} Funktio julia, talleta tiedostoon julia.m, aja (aluksi) 
'help julia'-esimerkki \\
     
%%%%%%%%% Harvemmin esiintyviä %%%%%%%%%%%%%%%%%%%%%%%%%%%
%\textbf{Aputiedostoja,viitteitä}\\
%  \begin{itemize}\\
%    \item 
%  \href{../mlteht/mlGraphics/apusrc/mlGr09A.m}{ Oppilaille: ohje-ja pohjatyöarkki (mw)} (Linkki mukaan mlGr09.tex-tiedostoon)\\
%\item
%\href{../mlteht/mlGraphics/apusrc/mlGr09Aope.tex}{ Opettajalle: Latex-lisäohjeita liitettäväksi tehtäväpaperiin}\\
%\end{itemize}\\
   
%\textbf{Vastaavanlaisia tehtäviä:}\\
   
%\begin{enumerate}\\
%\item Perusesim tähän kohtaan:\\
%\end{enumerate}\\
   
\textbf{Avainsanat:}Matlabgrafiikka,mlGraphics, iteraatio, Julia-joukko, Julia-set, dynaaminen systeemi, fraktaali, fractal \\

\textbf{Matlabfunktioita:} meshgrid, imagesc \\

\hrule
