=== Esercizi per casa ===
==Lezione del 27 Febbraio==
Scrivere la funzione **spirale.m** che, presi due parametri //rhomax// e //ngiri//, disegni una spirale di raggio massimo rhomax e con un numero di giri ngiri
== Lezione del 2 Marzo ==
Scrivere una funzione **sierpinski.m** che, preso un intero //npunti//, disegni npunti del [[http://it.wikipedia.org/wiki/Triangolo_di_Sierpinski|triangolo di Sierpinski]]
== Lezione del 6 Marzo ==
Scrivere una funzione **piecelinear.m** con la seguente intestazione
''function [PL, v]=piecelinear(x, y, u) ''
dove x sono i nodi, y i valori nei nodi, u sono i valori sui quali si vuole valutare l'intepolante.
La funzione deve restituire i valori v che la funzione lineare a tratti interpolante assume nei punti u.
I coefficienti che descrivono la funzione lineare a tratti sono contenuti nella matrice 2x(n-1), dove n e' il numero dei nodi.
==Lezione del 9 Marzo ==
Scrivere una funzione **hermite.m** con la seguente intestazione
''function a=hermite(x, y, d)''\\
\\
dove //x// sono i nodi, //y// i valori che la funzione assume nei nodi e //d// i valori della derivata prima nei nodi. //a// e' il vettore dei coefficienti del polinomio di interpolazione che soddisfa le condizioni sui nodi per la funzione e la sua derivata. (Suggerimento: costruire una matrice tipo quella di Vandermonde, e determinare //a// risolvendo un sistema lineare 2n x 2n).
Utilizzare il comando Octave //polyval// per valutare il polinomio ottenuto in altri punti e plottare il grafico del polinomio interpolante. Confrontarlo con il polinomio di interpolazione di Lagrange.
== Lezione del 16 Marzo ==
Scrivere la funzione **bspline.m** con la seguente intestazione
'' function [x, y]=bspline(px, py)''\\
\\
che permette di disegnare la bspline cubica open sui punti di controllo rappresentati mediante le loro coordinate
//px// e //py//.
La funzione chiama la funzione //bs_base(i, p, t, u)// fatta a lezione che calcola i valori che l' i-esimo polinomio di grado //p//, Ni,p(u) assume nel punto //u//. Ni,p utlizza il vettore dei knot t=[t0, t1, ..., tm]. Si ricorda che\\
S(u)=sumi=0.. n Ni,p(u)Pi
u \in [tp+1, tm-p]
I knot possono essere generati all'interno della function con il comando //linspace// ricordando che //m=n+p+1//.
== Lezione del 20 Marzo ==
Finire di scrivere la funzione //polytrig// con le seguenti caratteristiche\\
'' function v=polytrig(y, u)''\\
che restituisce il polinomio di interpolazione triogonometrico valutato in u, cioe' v=F(u).
Si ricorda che //F// e' definito nel seguente modo
[[http://operaez.net/mimetex/F(x)=%5Cleft%5C%7B%5Cbegin%7Barray%7D%7Bll%7D%5Cfrac%7Ba(0)%7D%7B2%7D+%5Csum_%7Bj=1%7D%5E%7Bm-1%7D%20(a(j)%20cos(jx)+b(j)sin(jx))%20&%20n=2m-1%5C%5C%5Cfrac%7Ba(0)%7D%7B2%7D+%5Csum_%7Bj=1%7D%5E%7Bm-1%7D%20(a(j)%20cos(jx)+b(j)sin(jx))+a(m)cos(mx)%20&%20n=2m%20%5Cend%7Barray%7D%20%5Cright.|F(x)]]
== Lezione del 27 Marzo ==
Finire di scrivere la funzione //polymult// per effettuare la moltiplicazione veloce di due polinomi.
'' function c=polymult(a,b)''\\
che presi i coefficienti //a// e //b// dei polinomi a(x) e b(x), produce il vettore //c// che rappresenta il polinomio c(x)=a(x) b(x).\\
Si tenga conto che\\
* se //deg(a)=n// e //deg(b)=m//, allora //deg( c)≤n+m//.
* c(x) e' univocamente determinato una volta conosciuto il suo valore su n+m+1 punti distinti.
* c(x_i)=a(x_i) b(x_i).
Sia N=2^k, tale che N≥n+m.
- Siano α(i)=a(x_i), β(i)=b(x_i) con i=1, 2, ..., N
- Siano γ(i)=α(i) β(i), i=1, 2, ..., N
- Si calcoli c(x) come il polinomio di interpolazione dei valori γ(i) sui nodi x_i.
Se i nodi x_i sono le radici dell'unita' possiamo utilizzate la fft/ifft per la valutazione dei polinomi a(x) e b(x) e per l'interpolazione. La funzione //polymult// deve utilizzare due chiamate all fft di Octave per implementare il punto 1. e una chiamata alla ifft per l'interpolazione al passo 3.
==Lezione del 30 Marzo==
Scivere una funzione //sfumagrigi.m// con la seguente intestazione
'' function I=sfumagrigi(n, ntoni)''\\
che genera un'immagine nxn che utilizza //ntoni// livelli di grigio e tale che ''I''(i,j)=//(i+j)// mod //ntoni//.