=== 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//.