%% Omia m��rityksi�:
\def\maple{{\sc Maple}}
\def\Maple{{\sc Maple}}
\def\m{{\sc Maple}}
\def\maplea{{\sc Maple}a}
\def\matl{{\sc Matlab}}
\def\mlb{{\sc Matlab}}
\def\oct{{\sc Octave}}
 
\includegraphics*{nauhakone.eps}
\artikkeli{Polynomit, interpolaatio ja funktion approksimointi}
\kirjoittanut{\textbf{\emph{Heikki Apiola}}\\
Lehtori\\
Matematiikan laitos, Teknillinen korkeakoulu}
 
\vspace{0.2cm}
 
\begin{multicols}{2}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\newcommand{\R}{\mathbb{R}}
%\newcommand{\bma}{\begin{bmatrix} }
%\newcommand{\ema}{\end{bmatrix} }

%\newtheorem{lause}{Lause}
%\newtheorem{seur}[lause]{Seuraus}
%\newtheorem{maarit}{M\"a\"aritelm\"a}
%\newtheorem{esim}{Esimerkki} 
%\newtheorem{huom}{Huomautus}
%\newtheorem{teht}{Teht\"av\"a}
%\newtheorem{intteht}{Interpolaatioteht\"av\"a}


\subsubsection*{Johdanto, taustaa}


Kirjoitus liittyy aihepiiriin \emph{numeerinen analyysi, tieteellinen 
laskenta, tietokoneen k�ytt� matematiikassa}. Siihen liittyvi�
kirjoituksia on jonkinverran esiintynyt Solmun historian aikana,
esimerkiksi 

\emph{Jouni Sepp�nen}: Fibonaccin lukujen laskennasta\\
(\texttt{solmu.math.helsinki.fi/1998/2/seppanen/}),

Oma kirjoitukseni symbolilaskentaohjelmistosta Maple\\
(\texttt{solmu.math.helsinki.fi/1999/5/apiola/}),

\emph{Antti Rasila}: Numeerista matematiikkaa Python-kie\-lel\-l�
(\texttt{solmu.math.helsinki.fi/2004/2/python2.pdf}).

Tarkoitukseni on aloittaa kirjoitussarja, jossa k�sitell��n numeerisen
matematiikan eri teemoja siin� hengess�, ett� esitiedoiksi riitt�v�t
lukion matematiikan tiedot.
Kirjoitukset voisivat 
parhaassa tapauksessa tarjota ideoita lukion erikoiskursseille, 
jotka ovat tyyppi� ''numeerinen analyysi/tieteellinen
laskenta/matemaattinen mallinnus''.

Samalla esittelen alan tietokoneohjelmistojen k�ytt��. Niit� on kahta
p��tyyppi�: numeeriset ja symboliset. J�lkimm�isist� kirjoitin yll� mainitussa
viitteess� aika laajasti 
%\texttt{solmu.math.helsinki.fi/1999/5/apiola}.
T�ll� kertaa esittelen pient� nurkkaa suuresta ja kauniista ohjelmasta
nimelt��n \emph{Matlab}. Kyseess� on hyvin tehokas ja suuren suosion maailmalla
saanut tieteellisen laskennan ty�kalu. Kts.\ \texttt{www.mathworks.com}.

Lukija, joka haluaa etup��ss� seurata matemaattista kehittely�,
voi j�tt�� ohjelmakoodit ja selostukset lukematta ja suorittaa
joitakin laskuja vaikkapa omalla laskimellaan.
Toisaalta \matl:sta kiinnostunut lukija voi opetella rinnakkain
sek� \matl-ajattelua ett� sen tukemaa matematiikkaa.
T�ss� on hyv� k�ytt�� lis�apuna vaikkapa opasta:
\texttt{www.math.hut.fi/\~{}apiola/}\texttt{matlab/}\texttt{opas/lyhyt/}



Harvalla koululaisella on \matl-ohjelma k�yt�ss��n, siksi onkin
suositeltavaa hakea verkosta julkisohjelma \oct,
\texttt{www.octave.org/}, joka on
''riisuttu versio'' \matl:sta. Sill� voidaan tehd� kaikki
kirjoituksen esimerkit, ja sen avulla p��see sis�lle \matl:n 
ajatusmaailmaan.


Luettavuuden parantamiseksi ja matemaattisen juonen seuraamisen helpottamiseksi
sijoitan suurimman osan ohjelmakoodeista ja ohjeista tekstitiedostoihin,
joiden sis�lt�� en ota varsinaiseen kirjoitukseen mukaan.
Monet n�ist� ovat ajovalmiita \matl-skriptej�, eli komentotiedostoja.
My�s kaikki kirjoituksen kuvien tekemiseen k�ytetyt \matl-skriptit
ovat mukana. Koodit ja ohjeet ovat saatavilla
sivulta \texttt{solmu.math.helsinki.fi/2004/3/apiola/}, 
josta ne voi haluttaessa
suoraan leikata/liimata \matl-istuntoon.

Symbolilaskennasta kiinnostunut lukija voi aivan hyvin (ja jopa
helpomminkin) tehd� esimerkit Maplella tai Mathematicalla.
Edellisen suhteen ohjeita on saatavissa edell� mainitusta kirjoituksesta
\texttt{solmu.math.helsinki.fi/1999/5/apiola}. 
Jos sinulla sattuu olemaan
\maple\/ k�ytett�viss�si ja haluat ohjeita esimerkkeihin, niin l�het�
mailia: \texttt{heikki.apiola@hut.fi}, 
saat paluupostissa asiaankuuluvan \maple-ty�arkin.

\textbf{Esitiedot.} Kirjoituksen lukemiseen tarvittavat 
matemaattiset esitiedot sis�lt�v�t vain perusalgebraa, 
hieman tottumusta polynomien k�sittelyss� ja
funktio-opin perusteita. 


\subsubsection*{Johdattelua}

Ajatellaanpa, ett� veden viskositeetti on m��r�tty 
kokeellisesti eri l�mp�tiloissa, ja saatu seuraavanlainen taulukko, joka
on annetulla tarkkuudella virheet�n.

%\begin{table}[htp]
\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\hline      %1tabular1taulukko1latex
L�mp�tila & $2^{\circ}$ & $5^{\circ}$  & $7^{\circ}$ & $15^{\circ}$ \\
\hline        
Viskositeetti & $1.670$ & $1.519$ & $1.430$ & $1.140$\\ 
\hline        
\end{tabular}
%\caption{}
%\label{taulukko}
%\end{table}

\textsc{Taulukko 1.}
\end{center}

Voitaisiin kysy� vaikkapa viskositeetin arvoa l�mp�tilassa $10^\circ$.

Er�s ratkaisuyritys olisi
sovittaa aineistoon polynomi siten, ett� se kulkee kaikkien 
annettujen taulukkopisteiden kautta. T�ll�in on luonnollista hakea kolmannen asteen
polynomia, koska siin� on nelj� m��r�tt�v�� kerrointa, ja
annettuna on 
sama m��r� pisteit�. Saadaan nelj�n yht�l�n ja nelj�n tuntemattoman
yht�l�ryhm�, joka voidaan ratkaista eliminaatiomenetelm�ll�. 
N�in saatavien kertoimien avulla voidaan kirjoittaa ratkaisupolynomi:
\begin{align*}
p(x)=&-2.6282\times 10^{-5}x^{3} + 1.5346\times 10^{-3}x^2 \\
&-6.0051\times 10^{-2}x+1.7842
\end{align*}
Kts.\ 
%\texttt{solmu.math.helsinki.fi/2004/3/apiola/}
\texttt{viskositeetti.m}.

T�llaista polynomia, 
jonka kuvaaja kulkee kaikkien annettujen taulukkopisteiden kautta,
sanotaan t�h�n taulukkoon (''dataan'') liittyv�ksi 
\emph{interpolaatiopolynomiksi}.

Asettamallemme teht�v�lle saadaan nyt ratkaisuapproksimaatio laskemalla
$p(10)=1.310$.

%\begin{figure}[hbt]
\begin{center}
\includegraphics[width=8cm]{apiola/viskositeetti.eps} 

\textsc{Kuva 1.} Mittauspisteit� ja interpoloitu piste.
\end{center}

T�ss� kirjoituksessa opitaan (viel�) yksinkertaisempi menetelm� 
vastaavanlaisten 
teht�vien ratkaisemiseksi. Menetelm�n verraton arvo on siin�, ett�
samalla, kun saadaan kauniin yksinkertainen ratkaisutapa, tarjoutuu
my�s helppo tapa yksik�sitteisen ratkaisun olemassaolon todistamiselle.

Miten voidaan tutkia edell� olevan ratkaisun mielekkyytt� ja virhek�yt�st�?
N�it� keskeisi� kysmyksi� kosketellaan (kevyesti) joidenkin dramaattistenkin 
esimerkkien valossa kirjoituksen loppupuolella. 
Samalla pohdiskellaan, milloin interpolaatio soveltuu ja milloin ei, ja
esitell��n my�s muiden funktioiden kuin polynomien k�ytt�� tarkoitukseen.


\textbf{Approksimointia interpoloiden ja interpoloimatta}


Olkoon annettu taulukko 
%\vskip 0.5cm
%\begin{table}[htp]
\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\hline      %1tabular1taulukko1latex
$x_0$ & $x_1$ & $x_2$ & $\ldots$ & $x_n$\\ 
\hline        
$y_0$ & $y_1$ & $y_2$ & $\ldots$ & $y_n$\\ 
\hline        
\end{tabular}

\textsc{Taulukko 2.}
%\caption{}
%\label{taulukkoo}
%\end{table}
%\vskip 0.5cm
\end{center}

Edell� olevaa johdantoesimerkki� mukaillen ja yleist�en voidaan kysy�
funktiota $g$, jonka kuvaaja kulkee annettujen taulukkopisteiden kautta.

Luonnollisin l�ht�kohta on etsi� polynomia. 
Teht�v�n� on silloin m��ritt�� korkeintaan astetta $n$ oleva polynomi $p$, 
joka toteuttaa ehdot 
\[
p(x_0)=y_0, p(x_1)=y_1,\ldots,p(x_n)=y_n.
\]
Interpolaatio tarjoaa joissakin tapauksissa menetelm�n annetun funktion 
approksimointiin annetulla v�lill�. 

%Approksimaation hyvyyden mittaamiseen
%on erilaisia, sovelluksesta riippuvia kriteerej�. Er�s luonnollinen
%p��m��r� on minimoida maksimivirhett�. 


Tarkastellaan t�ss� lyhyesti my�s muita approksimaatiotapoja 
my�s muilla funktioilla kuin
polynomeilla.


Katsotaan tilannetta kolmelta eri n�k�kulmalta.

\begin{tehtratk}
\item[1.]
Voidaanko l�yt�� yksinkertainen matemaattinen funktio $g$, jonka arvoja
n�m� annetut taulukkoarvot ovat, ts. $g(x_k)=y_k, k=0,\ldots,n$ ?

\item[2.]
Taulukko on per�isin mittauksista, joissa saattaa esiinty� virheit�.
Teht�v�n� olisi l�yt�� matemaattinen lauseke, joka approksimoi aineistoa,
mutta kuvaaja ei kulje tarkalleen annettujen taulukkopisteiden kautta.

\item[3.]
On annettu funktio $f$, mahdollisesti tietokoneohjelman muodossa. Funktion
arvojen $f(x)$ laskenta on ''kallista'', eli vaatii paljon laskentatehoa.
Kysymys kuuluu: Voidaanko l�yt�� yksinkertaisempi funktio $g$, joka
approksimoi riitt�v�n tarkasti funktiota $f$ ja jonka arvojen laskenta
on ''halvempaa''. Funktiolta $g$ vaaditaan usein lis�ksi yksinkertaisuutta
esimerkiksi siten, ett� sit� on helppo derivoida ja integroida.
\end{tehtratk}

Kohdassa 1) on kysymys interpolaatiosta, funktio $g$ voi olla polynomi, 
mutta se voi olla muutakin tyyppi�.

Kohdan 2) tapauksessa interpolaatio ei ole j�rkev� tapa, koska on turha
yritt�� pakottaa approksimaatiota kulkemaan virhett� sis�lt�vien arvojen kautta
tarkasti. T�h�n sopii yleens� hyvin ns. pienimm�n neli�summan approksimaatio,
jolla annettujen arvojen p��suunta, ''trendi'' saadaan esitetyksi.

Kohtaan 3) voi soveltua interpolaatio, mutta tilanteesta riippuen my�s jokin
muu approksimointitapa.


Polynomit ovat hyv� l�ht�kohta approksimoiviksi funktioiksi. Niill� on
helppo suorittaa yhteen- v�hennys- ja kertolaskuja, niit� voidaan
derivoida ja integroida helposti, jne. 

Muitakin funktioluokkia esiintyy sovellutuksissa. Jaksollisten ilmi�iden
mallintamisessa on luonnollista k�ytt�� ''trigonometrisia polynomeja'', 
eli muotoa
\[
a_0 + a_1 \cos x + a_2 \cos 2 x + \ldots + b_1\sin x + b_2 \sin 2x + \ldots
\]
olevia funktioita.
 
Ent�p�, jos k�yt�ss�mme on suuri taulukko, sanokaamme $1000$ arvoparia
$(x_k,y_k)$? T�ll�in interpolaatiopolynomin asteluku voisi olla
$999$. T�llainen polynomi heilahtelee varsin voimakkaasti, ja sen laskenta
on muutenkin hyvin ty�l�st� ja virhealtista. 
Tilanteeseen soveltuu luontevasti ns.\ splinifunktio, joka koostuu 
''polynomipaloista''.
N�it� esitell��n lyhyesti tarinamme lopussa.


\subsubsection*{Kouluesimerkki, logaritmitaulukko}

L�hdet��n liikkeelle jostain taulukoidusta funktiosta. Kaikille 
vanhemman polven koulunk�vij�ille tuttuakin tutumpi funktiotaulukko
on logaritmitaulu. Kun taulukon k�yt�n tekniikan osasi, sai varmasti
yhden laskun ylioppilaskirjoituksissa aikaan.

Teht�v�n� oli yleens� laskea ''vaikea teht�v�'', kahden monella numerolla 
annetun luvun $a$ ja $b$ tulo hakemalla taulukosta $\log a$ ja $\log b$ ja
laskemalla n�iden summa (''helppo teht�v�''). Alkuper�isen teht�v�n ratkaisu
saatiin hakemalla taulukosta logaritmipuolelta summaa $\log a + \log b$
l�hinn� oleva $y$-arvo ja katsomalla k��nteiseen suuntaan vastaava $x$-arvo.

Jos haluat lis�havainnollistusta ja hieman
logaritmiharjoittelua, avaapa sivu \\
\texttt{www.eminent.demon.co.uk/sliderul.htm}. Kuvan ja perusteellisempaa
opastusta aiheeseen l�yd�t vaikkapa sivulta 
\texttt{www.sliderules.clara.net/}.

Teht�v�tyyppi on mekaanisena suorituksena aika mielenkiinnoton, mutta
sis�lt�� koko joukon matemaattista viisautta.
Kuten yll� olevissa viitteiss� esitell��n, periaate on implementoitu
elegantiksi 
laskentav�lineeksi, laskutikuksi, jota ilman ei viel�
niinkin my�h��n kuin 1960--1970-lukujen vaihteessa voitu kuvitella 
luonnontieteilij�iden ja insin��rien koskaan p�rj��v�n.

Lis�ksi siin� n�kyy pelkistetyss� muodossa
er�s varsin paljon matematiikassa ja sen sovelluksissa k�ytett�v� 
yleinen periaate: ''Vaikea'' teht�v� muunnetaan sopivalla muunnoksella
''helpoksi'', ratkaistaan ''helppo'' teht�v� ja k��nteismuunnetaan
''helppo'' ratkaisu. 

%Konkreettisena esimerkkin� mainittakoon er�iden
%ns. integraalimuunnosten k�ytt� differentiaaliyht�l�iden ratkaisemisessa.
%Tunnetuimmat n�ist� lienev�t 
%\emph{Fourier}- ja \emph{Laplace}-muunnokset, joista jotkut
%matemaattisista aineista kiinnosteet koululaiset ovat saattaneet
%kuulla puhuttavan.

T�m�nkertaisen teeman kannalta oleellista on, ett� tuossa kouluteht�v�ss� 
oli mukana interpolaatio. Logaritmien summa
ei yleens� osu tarkalleen taulukoituun arvoon, joten sit� joudutaan 
py�rist�m��n. Jos arvo on l�hemp�n� puoliv�li� kuin kumpaakaan p��tepistett�,
saadaan parempi tarkkuus laskemalla p��tepistearvoja vastaavien $x$-arvojen
keskiarvo. Hienommin sanottuna, suoritetaan \emph{lineaarinen interpolaatio}
taulukkopisteiden v�lill�.

Esimerkkin� lasketaan taulukko logaritmifunktion arvoista
pisteiss� $1.0, 1.2, 1.4, 1.6, 1.8, 2.0$.

Suoritamme laskut 
\matl:lla (tai \oct:lla). 

%T�ss�, kuten suurimmassa osassa esimerkkej�mme,
%k�yt�mme \matl:ia pelk�st��n kehittyneen� (vektori)laskimena.

\matl-ohjelmalle annettavat komennot alkavat kehotemerkeill� 
\verb_(>>)_. Ohjelman palauttamat tulokset ovat komentoa seuraavilla
riveill� ilman kehotealkua.
(Huomaa, ett� \matl:ssa \texttt{log} tarkoittaa luonnollista, 
$e$-kantaista logaritmia.)

\end{multicols}

\begin{verbatim}
>> X=1:0.2:2     % Luvut alkaen 1:st�, 0.2:n v�lein, 2:een saakka.
X =
    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

>> Y=log(X)      % Logaritmifunktion arvot X-pisteiss�.
Y =
         0    0.1823    0.3365    0.4700    0.5878    0.6931

>> xytaulukko=[X;Y]   % 2-rivinen ``matriisi'',jossa X- ja Y-arvot allekkain,  

xytaulukko =
    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000
         0    0.1823    0.3365    0.4700    0.5878    0.6931
\end{verbatim}

\begin{multicols}{2}

\vspace{0.2cm}

\textbf{Matlab-k�sitteit�}
 
Jos haluat perehty� tarkemmin, p��set alkuun edell� mainitulla\\
\texttt{www.math.hut.fi/\~{}apiola/matlab/opas/lyhyt/}, kts.
my�s kirjallisuusviitett� 5.


 
Esittelemme nyt lyhyesti n�ihin riveihin liittyvi� periaatteita.


\matl\/ operoi ''\emph{matriiseilla}'', 
jolla tarkoitetaan suorakulmion muotoista lukutaulukkoa.
Erikoistapaus matriisista on \emph{vektori}, jossa on vain yksi rivi
(vaakavektori) tai yksi sarake (pystyvektori).

Muuta \matl-oppia emme varsinaiseen kirjoitukseen sis�llyt�. Oheismateriaalina
olevat \matl-komentotiedostot on varustettu runsailla selitt�vill� 
ja opettavaisilla kommenteilla. Ne ovat \texttt{.m}-loppuisia tekstitiedostoja ja saatavissa siis sivulta
 
\texttt{solmu.math.helsinki.fi/2004/3/apiola/}.

%\verb_ ../logaritmitaulu.html_

Matriisilaskentaa ei tarvita kirjoituksen 
ymm�rt�miseksi, mutta olkoon pikku maistiaisena siit� k�sitteist�st�,
jonka kaikki matematiikkaa ja sen sovelluksia koulun j�lkeen 
opiskelevat hetimiten kohtaavat. Samalla saamme hy�dyllisen puhetavan,
jonka avulla \matl-kielen operaatioita on helppo kuvata ja ymm�rt��.

%\verb_ ../logaritmitaulu.html_

%\begin{figure}[hbt]
\begin{center}
\includegraphics[width=8cm]{apiola/kuva1.eps} 
\end{center}

\textsc{Kuva 2.} Logaritmifunktion paloittain lineaarinen interpolaatio.
%\end{figure}

Yll� olevassa laskussa muodostamme vektorin \texttt{X}, johon sovellamme
funktiota \texttt{log}. T�ll�in \matl\/ soveltaa funktiota \texttt{log} 
argumenttivektorin jokaiseen komponenttiin, joten saamme yhdell�
k�skyll� kaikkien \texttt{log}-funktion arvojen vektorin \texttt{Y}.

Jos suoritamme \matl-komennon
\texttt{plot(X,Y)}, ohjelma piirt�� {\tt (X(k),Y(k))}-pisteiden
v�liset janat. N�in saamme 
kuvan, joka esitt�� logaritmifunktion \emph{``paloittain lineaarista
interpolaatiota''} annetuissa $x$-pisteiss�. 


Ennenkuin jatkamme approksimointiteemaa, kertaamme hiukan polynomien
ominaisuuksia.


\subsubsection*{Polynomeista}


Koulumatematiikassa polynomit tulevat varmasti jokap�iv�isiksi tuttaviksi.
Niill� opitaan suorittamaan peruslaskutoimituksia, derivointi ja integrointi 
on sujuvaa. Niiden kuvaajat tulevat tutuiksi, ainakin  
alhaisilla asteluvuilla, polynomiyht�l�it� opitaan ratkaisemaan, kun
asteluku $ \leq 2$, jne.

T�ss� kirjoituksessa valotan er�it� polynomien k�ytt�alueita, joita
matematiikassa on miltei rajattomasti.

Aloitan kertaamalla koulusta tutun lauseen.

\textbf{Lause 1.}
%\begin{lause}\label{polyteki} 
%\begin{theorem} 
Jos polynomilla 
\[
p(x)=a_0 + a_1 x + a_2 x^2 + \ldots + a_n x ^n
\] 
on nollakohta $x_0,$
niin $p(x)$ on jaollinen $(x-x_0)$:lla.
%\end{lause}
%\end{theorem}

\begin{proof}
Muodostetaan erotus
\[
p(x)-p(x_0)=a_1(x-x_0)+a_2(x^2 -x_0^2) + \ldots + a_n (x^n-x_0^n).
\]
Jokaisessa termiss� $(x^k-x_0^k)$ on $(x-x_0)$ tekij�n� johtuen kaavasta
\[
x^k-x_0^k = (x-x_0)(x^{k-1} + x^{k-2}x_0 + \ldots + x x_0^{k-2}+ x_0^{k-1}).
\]
\end{proof}
%\qed

\textbf{Teht�v� 1.}
%\begin{teht}
Johda yll� oleva kaava. Voit laskea ensin vaikka tapauksen $k=3$,
jolloin varmasti n�et koko juonen. 
Kerro vain auki kaavan oikea puoli sopivassa j�rjestyksess�.
%(Et tarvitse oppikirjaa etk� Maol:n kaavakokoelmaa.)
%\end{teht}

Saamme heti yksinkertaisen, mutta t�rke�n tosiasian.

%\begin{seur}{[Yksik�sitteisyys]}\label{yksikas}
\textbf{Seuraus 2.} [Yksik�sitteisyys]
Jos kaksi korkeintaan astetta $n$ olevaa polynomia yhtyy $(n+1):$ss� eri
pisteess�, niin ne yhtyv�t kaikkialla (ts.\ ovat identtiset).
%\end{seur}

\begin{proof}
Olkoot $p$ ja $q$ korkeintaan astetta $n$ olevia polynomeja, jotka saavat
samat arvot pisteiss� $x_0,\ldots,x_n.$ T�ll�in erotuspolynomi 
$r(x)=p(x)-q(x)$ on niinik��n korkeintaan astetta $n.$ Olkoon tuo asteluku
$d \leq n$.
Erotuspolynomilla $r$ on oletuksen
mukaan $d+1$ (jopa $n+1$) erillist� nollakohtaa $x_0,\ldots,x_d.$ 
Kun lausetta sovelletaan per�kk�in $d$ kertaa,
seuraa erotuspolynomille esitys 
\[
r(x)=c (x-x_0). \ldots . (x-x_{d-1}),
\]
miss� $c$ on jokin vakio.
Koska my�s $r(x_d)=0$ ja kaikki tekij�t $x_d - x_i, i=0 \ldots d-1$ ovat
nollasta erillisi�, on tulon nollas��nn�n
mukaan oltava $c=0,$ eli erotuspolynomi $r(x)=p(x)-q(x)$ on identtisesti $0$.
\end{proof}
%\qed

%\begin{huom}
%Todistus saattaa n�ytt�� oudolta tapauksessa, jossa erotuspolynomin asteluku
%on pienempi kuin $n$. Siin� tapauksessa riitt�isi muodostaa tuloesitys,
%jossa
%\end{huom}

%\begin{huom}
\textbf{Huomautus 1.}
Yksinkertaisimmassa tapauksessa $n=1$ on geometrisesti kyse siit�, ett�
tason kaksi pistett� m��r�� yksik�sitteisesti suoran. Tapaus $n=2$
tarkoittaa, ett� $3$ pistett� m��r�� yksik�sitteisesti paraabelin. 
%\end{huom}

%\begin{huom}
\textbf{Huomautus 2.}
Jos olemme tavalla tai toisella l�yt�neet interpolaatioteht�v�lle ratkaisun,
niin seuraus 2:n mukaan t�m� on ainoa ratkaisu.
(Toki polynomit saattavat esiinty� erilaisissa muodoissa, mutta yksik�sitteisyys (samuus) merkitsee, ett� ne ovat
sievennett�viss� toisikseen.) 
%\end{huom}

\subsubsection*{Lagrangen interpolaatiomenetelm�}

Kerrataan viel�:

%\begin{intteht} 
\textbf{Interpolaatioteht�v�}
Annettu $x_k$- ja $y_k$-pisteet, $k=0,\ldots,n$ (taulukko 1).
M��r�tt�v� korkeintaan astetta $n$ oleva polynomi $p$ siten, ett� 
$p(x_k)=y_k, k=0,\ldots,n$.

%\end{intteht}


Voisimme muodostaa yht�l�systeemin polynomin kertoimien ratkaisemiseksi,
kuten teimme johdantona olevassa viskositeettiesimerkiss�.
Jotta saisimme t�t� kautta osoitetuksi ratkaisun olemassaolon yleisesti,
joutuisimme kohtalaisen pitkiin matriisilaskennallisiin kehittelyihin.
Lis�ksi t�m� ratkaisutapa on numeerisesti ''h�iri�altis'', pienill� 
l�ht�virheill� on taipumus moninkertaistua laskun kuluessa.



Esit�mme h�mm�stytt�v�n suoraviivaisen ratkaisun teht�v�llemme. 
Se on t�ysin
riippumaton yht�l�ryhmien teoriasta. Emme tarvitse matriiseja
emmek� determinantteja. Saamme olemassaolon todistetuksi konstruoimalla
suoraan k�ytt�kelpoisen muodon teht�v�n ratkaisulle. 

Itse asiassa teht�v�lle on kaksi nerokkaan yksinkertaista ratkaisutapaa, 
joihin kumpaankin liittyy kuuluisan matemaatikon nimi: \emph{Lagrange}
ja \emph{Newton}. Esit�mme ratkaisun edellisen mukaan.

\textbf{Lineaarinen interpolaatio}

Jotta idea tulisi esiin mahdollisimman pelkistetysti, l�hdet��n 
yksinkertaisimmasta tilanteesta, jossa pisteit� on kaksi ja kyseess�
on siten lineaarinen interpolaatio.

Analyyttisen geometrian tiedoilla osaamme muodostaa suoran kahden annetun
pisteen $(x_0,y_0)$ ja $(x_1,y_1)$ kautta.
Voimme kirjoittaa interpolaatiopolynomin muotoon:
\[
p(x)=y_0+\frac{y_1 - y_0}{x_1-x_0} (x-x_0).
\]
Jotta saataisiin yleistyskelpoinen muoto,
kirjoitetaan kaava painotettuna keskiarvona $y$-arvoista ker��m�ll�
$y$-termien kertoimet tekij�iksi:
\[
p(x)=y_0 \frac{x-x_1}{x_0-x_1} + y_1 \frac{x-x_0}{x_1-x_0}.
\]
Merkit��n kaavassa esiintyvi� ensimm�isen asteen polynomeja $L_0(x)$ ja
$L_1(x),$ jolloin siis
\[
p(x)=y_0 L_0(x)+y_1 L_1(x).
\]
Polynomeilla $L_0$ ja $L_1$ on ominaisuudet $L_0(x_0)=1, L_0(x_1)=0$
ja $L_1(x_0)=0, L_1(x_1)=1.$ Niit� kutsutaan 1. asteen \emph{Lagrangen
kertojapolynomeiksi}. 


%\begin{figure}[ht]
\begin{center}
\includegraphics[width=8cm]{apiola/kuva3.eps}

\textsc{Kuva 3.} 1. asteen Lagrangen polynomit $L_0$ ja $L_1$.
%\label{fig:linlag}
\end{center}
%\end{figure}


%\begin{esim}
\textbf{Esimerkki 1.}
Olkoon annettu logaritmitaulukkoarvot $\ln 9.0 = 2.1972$ ja $\ln 9.5=2.2513.$
Laske lineaarista interpolaatiota k�ytt�en likiarvo $\ln 9.2$:lle.
%\end{esim}

%\begin{proof}[Ratkaisu]
\textit{Ratkaisu.}
Lasketaan Lagrangen polynomit, kun $x_0=9.0, x_1=9.5.$ (Huomaa, ett� Lagrangen
polynomit m��r�ytyv�t pelk�st��n $x_0-$ ja $x_1$-arvoista.)
\[
L_0(x)=\frac{x-9.5}{9.0-9.5},\ L_1(x)=\frac{x-9.0}{9.5-9.0}.
\]
Kun sijoitetaan $x=9.2,$ saadaan $L_0(9.2)=0.6$, $L_1(9.2)=0.4.$
Siis $p(9.2)=y_0 0.6 + y_1 0.4 = 2.1972 0.6 + 2.2513 0.4 = 2.2188.$

Miten suuri virhe tehd��n? Logaritmin arvo 5:n numeron 
tarkkuudella on 2.2192, joten virhe on 2.2192 - 2.2188 = 0.0004.
Saamme 4 oikeaa numeroa.
%\end{proof}

\textbf{Kvadraattinen interpolaatio}

Miten voisimme edell� olevaa menettely� yleist��. Kun siirrymme lineaarisesta
kvadraattiseen tapaukseen, tulee samalla selv�sti n�kyviin, miten yleinen 
tilanne hoidetaan.

Nyt on siis annettu $3$ pistett� $x_0,x_1,x_2$ ja vastaavat $y_0,y_1,y_2.$
Jos osaisimme muodostaa toisen asteen polynomit $L_0, L_1, L_2$ siten, ett�

\begin{tabular}{ccc}
$L_0(x_0)=1$,& $L_0(x_1)=0$,& $L_0(x_2)=0$ \\
$L_1(x_0)=0$,& $L_1(x_1)=1$,& $L_1(x_2)=0$ \\
$L_2(x_0)=0$,& $L_2(x_1)=0$,& $L_2(x_2)=1$, \\
\end{tabular}

voisimme kirjoittaa interpolaatiopolynomin heti:
\[
p(x)=y_0 L_0(x) + y_1 L_1(x) + y_2 L_2(x).
\]

\textbf{Perustelu}:
\begin{tehtratk}
\item[1)] Polynomi on toisen asteen polynomien summana 
korkeintaan astetta $2$.\\
\item[2)] Lis�ksi 
\[
p(x_0)=y_0\underbrace{L_0(x_0)}_{1}+
        y_1\underbrace{L_1(x_0)}_0+
        y_2 \underbrace{L_2(x_0)}_0 = y_0.
\]
Aivan samoin saadaan $p(x_1)=y_1$ ja $p(x_2)=y_2.$
\end{tehtratk}

Siisp� asettamamme teht�v�n ratkaisuna on t�m� polynomi $p.$ 
Kaiken lis�ksi se on
seuraus 2:n perusteella yksik�sitteinen.

Miten sitten tuollaiset $L_k$-polynomit l�ydet��n? Katsotaan vaikka $L_0:$aa.
Polynomin pit�� saada arvo 0 pisteiss� $x_1$ ja $x_2.$  Sellainen polynomi
on $c(x-x_1)(x-x_2)$, miss� $c$ on mielivaltainen vakio.
M��r�t��n vakio $c$ siten, ett� ehto $L_0(x_0)=1$ toteutuu, ts.
$c(x_0-x_1)(x_0-x_2)=1,$ josta saadaan kerroin $c=1/((x_0-x_1)(x_0-x_2))$,
joten
\[
L_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}.
\]
Aivan samoin saadaan 
\begin{align*}
&L_1(x)=\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)},\\
&L_2(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}.
\end{align*}
Jos merkit��n $l_0(x)=(x-x_1)(x-x_2), l_1(x)=(x-x_0)(x-x_2)$,
$l_2(x)=(x-x_0)(x-x_1),$ niin
\[
L_k(x)=\frac{l_k(x)}{l_k(x_k)}, k=0,1,2.
\]
Sanallisesti sanottuna: $L_k(x)$:n osoittajassa on tekij�t 
$(x-x_j), j\neq k$,
ja nimitt�j� saadaan osoittajasta korvaamalla $x$ arvolla $x_k.$ 


%\begin{figure}[ht]
\begin{center}
\includegraphics[width=8cm]{apiola/lag2.eps}
\textsc{Kuva 4.} 2. asteen Lagrangen polynomit $L_0$, $L_1$ ja $L_2$.
%     \label{fig:LagL}
\end{center}
%\end{figure}


%\begin{teht}
\textbf{Teht�v� 2.}
T�ydenn� edellist� esimerkki� siten, ett� otat lis�pisteen
$\ln 11.0 = 2.3979$. Laske n�in saatavan toisen asteen polynomin arvo
samassa pisteessa $x=9.2$ ja vertaa virheit�.
%\end{teht}

%\begin{huom}
\textbf{Huomautus 3.}
\emph{Lagrangen} menetelm�n varjopuoli on, ett� lis�tt�ess� 
interpolaatiopisteit�,
joudutaan kaikki laskut suorittamaan uudestaan. T�ss� suhteessa edell� 
mainittu \emph{Newtonin} menetelm� on etev�mpi. 
%\end{huom}

Kuten luonnollista on, tarkkuus paranee, kun annettuja pisteit� lis�t��n,
approksimoitavan funktion kannalta ajatellen on luonnollista, ett� kun
k�ytett�viss�mme on yksi lis�parametri, jolla suora voidaan ''taivuttaa'' 
paraabeliksi, niin tarkkuutta saadaan parannetuksi.


\textbf{Yleinen tapaus}

Annettu pisteet $x_0, \ldots, x_n$ ja vastinpisteet $y_0,\ldots, y_n$.
Etsit��n siis korkeintaan astetta n olevaa polynomia p, jolle $p(x_k)=y_k,
k=0,\ldots,n.$

Edellinen yleistyy nyt ilmeisell� tavalla.

1) Muodostetaan $n$-asteiset Lagrangen kantapolynomit, joilla on ominaisuus: 
$L_k(x_j)=1$, kun $k=j$ ja $0$, kun $k\neq j$. 

Kirjoitetaan kaava $L_0$:lle:
\[
L_0(x)=\frac{(x-x_1)(x-x_2) \ldots (x-x_n)}
{(x_0-x_1)(x_0-x_2)\ldots (x_0 - x_n)}.
\]
Vastaavasti saadaan muut kantapolynomit $L_k, k=1,\ldots,n.$

\textbf{S��nt�.} Kenties on selvemp�� antaa sanallinen kuvaus
$L_k$-polynomin muodostamiss��nn�st� kuin yleinen kaava:

$L_k(x)$ saadaan osam��r�n�, jonka osoittajassa on 
termien
$(x-x_j)$ tulo, josta puuttuu tekij� $(x-x_k)$.
Nimitt�j� saadaan korvaamalla osoittajan $x$ 
luvulla $x_k.$ 
(Puuttuva termi on juuri se, jossa tapahtuisi t�ll� kohdalla 
$0$:lla jako.)

2) Aivan samoin kuin edell� kvadraattisessa tapauksessa, n�hd��n heti,
ett� ratkaisuna teht�v�llemme on polynomi
\[
p(x)=y_0 L_0(x)+y_1 L_1(x) + \ldots + y_n L_n(x).
\]

Kootaan tulos viel� lauseeksi.

%\begin{lause}
\textbf{Lause 3.}
Polynomi-interpolaatioteht�v�ll� (PI) on yksik�sitteinen 
ratkaisu $p$, joka voidaan esitt�� muodossa.
\[
p(x)=y_0 L_0(x)+y_1 L_1(x) + \ldots + y_n L_n(x),
\]
miss� $L_k:$t ovat edell� esitettyj� \emph{Lagrangen polynomeja} 
%\end{lause}

\begin{proof}
Olemassaolopuolen perustelimme edell�,
yksik�sitteisyys saadaan taas suoraan seuraus 
2:sta.
%s. \pageref{yksikas}.
\end{proof}



\subsubsection*{Harjoitusteht�vi�}

%\begin{teht}
\textbf{Teht�v� 3.}
Ratkaise johdantoesimerkkin� oleva viskositeettiteht�v� Lagrangen menetelm�ll�.
(Huomaa, ett� interpolaatiopolynomia ei ole tarpeen ''kertoa auki''.)
%\end{teht}

%\begin{teht}
\textbf{Teht�v� 4.}
Osoita, ett� pisteisiin $x_0, x_1, x_2$ liittyv�t Lagrangen kantapolynomit
$L_0, L_1, L_2$ toteuttavat ehdon $L_0(x)+L_1(x)+L_2(x)=1$ 
kaikilla reaaliluvuilla $x$. Yleist� mieleivaltaiselle $n$:lle.

\textbf{Vihje.} Voit toki tehd� tapauksen $n=3$ sievent�m�ll� tai
antamalla symboliohjelman (Maple, Mathematica) sievent��.
Mutta varsinainen yleiseen tilanteeseen sopiva
ahaa-el�mys syntyy, kun sovellat vain 
interpolaatiolausetta (tai pelk�st��n seurauslausetta 2)  sopivasti.
%\end{teht}


\subsubsection*{Interpolaatiovirhe}

Kuten edell� oli puhe, interpolaatiota voidaan k�ytt�� menetelm�n� funktion 
approksimointiin. Olennainen kysymys on t�ll�in, miten suuri virhe tehd��n.

Jos kyseess� on $n+1$ kertaa jatkuvasti derivoituvan funktion interpolointi
$n+1$:ss� pisteess� (siis korkeintaan n-asteisella polynomilla), 
voidaan virheelle johtaa kaunis kaava, joka on muotoa
\[
|f(x)-p(x)|\leq M |(x-x_0)(x-x_1)\ldots (x-x_n)|,
\]
miss� vakio $M$ on (n+1):sen derivaatan itseisarvon $|f^{(n+1)}|$ maksimi
ao.\ v�lill� jaettuna luvulla $(n+1)! = 1 \cdot 2 \cdot \ldots \cdot (n+1).$

Emme ryhdy t�m�n kaavan perustelemiseen, emmek� my�sk��n esittele sen
soveltamista t�ll� kertaa. Sensijaan otamme tuntumaa siihen, mink�laisia
yll�tyksi� voi virhek�yt�ksen suhteen tulla vastaan.

Edell� n�imme esimerkkej� ensimm�isen ja toisen asteen 
interpolaatiopolynomista. Havaitsimme esimerkkiemme yhteydess�, ett� interpolaatiopisteit� lis��m�ll� ja siis polynomin astelukua kasvattamalla saimme
virheen taulukkopisteiden v�lill� pienenem��n. Niinp� her�� luonnollinen 
kysymys. 

\emph{Jos interpolaatiopisteit� lis�t��n rajatta, 
l�heneek� interpolaatiovirhe
nollaa?}

Virhekaavasta ei ole mahdollista p��tell� yleisesti, koska siin� esiintyy
$ \max |f^{(n+1)}|.$ Seh�n voi periaatteessa k�ytt�yty� aika mielivaltaisella
tavalla $n:$n kasvaessa.


Niinp� tulee mieleen vastaesimerkin hakeminen. Sellaisen on yst�v�llisesti 
meille tarjoillut matemaatikko \emph{C.~Runge} jo v.\ 1901. 

%\begin{esim}[Rungen koe]
\textbf{Esimerkki 2 (Rungen koe).}
Tarkastellaan funktiota $f(x)=\frac{1}{1+25 x^2}$ v�lill� 
$\lbrack -1,1\rbrack$. Katsotaan, mit� tapahtuu, kun suoritetaan tasav�linen
polynomi-interpolaatio ja pisteit� (polynomin astelukua) kasvatetaan.
%\end{esim}

%\verbatiminput{runge.m}


%\begin{figure}[hbt]
\begin{center}
\includegraphics[width=8cm]{apiola/runge.eps} 

\textsc{Kuva 5.} Rungen funktion $\frac{1}{1+25x^2}$ interpolointia.
\end{center}
%\end{figure}

Vasemmassa yl�kuvassa on $f(x)=\frac{1}{1+25x^2}$ 
($1:$een saakka kurkottava) ja $5$-asteinen 
interpolaatiopolynomi, oikeassa yl�kuvassa 
on mukana heilumassa $20$-asteinen interpolaatiopolynomi.

Vasemmassa alakuvassa on oikea yl�kuva
rajoitettuna keskemm�lle
v�li� (v�lille $\lbrack -0.6,0.6\rbrack$). 
Oikeassa alakuvassa on t�m�n virhek�yr�, eli $f(x)-p_{20}(x)$
samaisella keskiosalla.

Kuvista n�hd��n, ett� kun interpolaatiopolynomin aste kasvaa $5$:st� $20$:een,
niin tarkkuus v�lin keskivaiheilla paranee huomattavasti. 
Toisaalta v�lin reunojen l�heisyydess� korkempiasteinen polynomi heilahtelee 
aivan villisti, ja
kuvan perusteella tuntuu varsin uskottavalta se \emph{Rungen} todistama 
tosiasia, ett� koko v�lill� laskettu maksimivirhe l�henee jopa ��ret�nt�, 
kun $n$ kasvaa rajatta.

T�m� k�yt�s antaa aiheen arvella, ett� tasav�linen pisteist� ei olekaan
hyv�, vaan kannattaisi valita pisteet niin, ett� ne ovat keskell�
harvassa ja reunoille ment�ess� tihenev�t.
Samainen \emph{Runge} havaitsi, ett� valitsemalla pisteet 
ns.\ \emph{Tsebyshev-polynomien} nollakohdiksi, saadaan virhe suppenemaan
kohti nollaa.
Kyseinen pisteist� tosiaankin kasaantuu kohti v�lin reunoja, ja se on
t�m�n teht�v�n kannalta optimaalinen.

%Mainittakoon, ett� n�m� polynomit voidaan m��ritell� ovelan n�k�isell�
%kaavalla: $T_n(x)=\cos(n \arccos x),$ 
%\footnote{Jos ajattelet moninkertaisen kulman kosinin kaavoja, niin n�et, 
%ett� polynomejahan t�st� syntyy.}
%Nollakohtien laskemiseksi t�ytyy vain mietti�, milloin kosini saa arvon nolla.
%Siit� p��dyt��n arvoihin
%$\cos \left( {\frac {\pi \, \left( 1+2\,k \right) }{2n}} \right),
%k=0,\ldots,n-1.$ N�m� todellakin kasautuvat kohti v�lin $\lbrack -1,1\rbrack$
%reunoja.

Kuvat on tehty \matl-skriptill� \texttt{runge.m}. 
%Se sis�lt�� my�s Tsebyshev-pisteiss� interpolointia ja vahvistaa j�lkimm�ist�
%v�itett�.
Sit� muokkamalla voit kehitell� omia kokeilujasi.


\subsubsection*{Polynomeista palapolynomeihin}

Viittasimme kirjoituksen alkupuolella ongelmaan, joka liittyy laajan 
taulukon interpolointiin. Siin� esiintyv�� problematiikkaa havainnollistimme
\emph{Rungen kokeilla}.  
Logaritmitaulukon yhteydess� emme suinkaan pyrkineet
polynomiin, jonka kuvaaja kulkee kaikkien taulukkopisteiden kautta, vaan
suoritimme \emph{paloittain lineaarisen} interpolaation. Yleisemmin voisimme
pyrki� k�sittelem��n interpolaatioteht�v�� sopivissa palasissa, jotka
koostuisivat korkeamman kuin 1. asteen polynomeista ja jotka liitoskohdissa
s��dett�isiin mahdollisimman sileiksi, ts. j�rjestett�isiin kertoimet niin,
ett� saadaan mahdollisimman monta jatkuvaa derivaattaa liitoskohdissa. 

T�m�n periaatteen mukaista palapolynomia on ruvettu kutsumaan englanniksi 
nimell� ''spline'', jonka suomenkielinen k��nn�s on yksinkertaisesti ''splini''.
Alunperin t�ll� tarkoitettiin kolmannen asteen polynomipalasista koostuvaa 
funktiota, jolla liitoskohdissa on jatkuvat derivaatat toiseen kertalukuun
saakka. 
T�llaisen liitoksen silm� n�kee t�ysin sile�n�.
Nykyisin spliniksi katsotaan edell� kuvattu yleinen tapaus,
mutta kaikkein eniten k�ytetty lienee juuri t�m� alkuper�inen 
kuutiollinen splini.

Samalla n�hd��n yleinen numeerisissa algoritmeissa esiintyv� tilanne.
Menetelm�n tarkkuuden parantamiseen on kaksi tapaa: 
\begin{itemize}
\item
Nostetaan menetelm�n
''kertalukua'', jolla interpolaation tapauksessa tarkoitetaan polynomin
astelukua.
\item
Jaetaan kyseess� oleva v�li, alue tms. pienempiin osiin ja lasketaan
approksimaatio kullakin osalla erikseen ja yhdistet��n osat kokonaisuudeksi.
\end{itemize} 

Yleens� numeerisissa algoritmeissa k�ytet��n n�iden menettelyjen sopivaa 
yhdistelm��.

Jos teht�v�n� olisi muodostaa annettuun dataan liittyv� kuutiollinen splini,
niin edell� sanotun, splinin m��rittelev�n periaatteen mukaan olisi 
suoraviivaista kirjoittaa
yht�l�t. N�ht�isiin, ett� m��r�tt�vi� kertoimia on kaksi enemm�n kuin ehtoja.
N�in j�isi vapaasti valittavaksi kaksi ''reunaehtoa'', jonka j�lkeen teht�v�ll�
olisi yksik�sitteinen ratkaisu.

Koska en halua laajentaa kirjoitusta liikaa, en mene yksityiskohtiin l�hemmin.
Sensijaan turvaudun valmiiseen ''mustaan laatikkoon'', Matlab-funktioon
\texttt{spline}. 
Sen k�ytt�esimerkki on \matl-skriptiss�mme \texttt{rungesplini.m}, 
jolla ao.\ kuva on piirretty.


%\begin{figure}[hbt]
\begin{center}
\includegraphics[width=8cm]{apiola/rungesplini.eps} 
\end{center}

\textsc{Kuva 6.} Funktion $f(x)=\frac{1}{1+25x^2}$ interpolointi kuutiollisilla 
splineill�, jakamalla v�li n:��n osaan, $n=5,7,9,\ldots,21$.
%\end{figure}

Kuvasta n�hd��n, ett� heilahtelut pienenev�t $n$:n kasvaessa ja paksu k�yr�
ilment�� funktiojonon ''tasaista'' suppenemista koko v�lill� kohti alkuper�ist�
Rungen funktiota $f$.


\subsubsection*{Loppumietteit�, yhteenvetoa}

Interpolaatio on hyv� l�ht�kohta funktion approksimointiin, sill� on
keskeinen merkitys numeerisen analyysin useiden eri alueiden algoritmien
ytimen�. Mainittakoon vaikka numeerinen derivointi ja integrointi,
differentiaaliyht�l�iden ratkaisumenetelm�t, funktion nollakohtien 
m��ritt�minen, jne.

Polynomi-interpolaatiosta johduimme splineihin, jotka ovat k�ytt�kelpoisia
monenlaisissa isojen taulukoiden interpoloinneissa. Niit� k�ytet��n
paljon my�s mm. tietokonegrafiikan alalla.


%\end{document}

%\begin{thebibliography}{5}

\subsubsection*{Viitteet}

\begin{tehtratk}
%\bibitem{BF} 
\item[1.] Burden-Faires. 
\emph{Numerical Analysis}, $7^{th}$ ed., Brooks/Cole, 2001.

%\bibitem{C-K} 
\item[2.] Cheney-Kincaid. 
\emph{Numerical Mathematics and Computing}, Brooks/Cole, 2004.

%\bibitem{FoMaMo} 
\item[3.] Forsythe-Malcolm-Moler. 
\emph{Computer Methods, for Mathematical Computation}, 
Prentice Hall, 1977.

%\bibitem{NMS} 
\item[4.] Kahaner-Moler-Nash. 
\emph{Numerical Methods and Software}. Prentice Hall, 1989.

\item[5.] Moler.
\emph{Numerical Computing with Matlab}, 2004, saatavissa verkosta:
\texttt{www.mathworks.com/moler/}

\end{tehtratk}

%\end{thebibliography}


\end{multicols}

