====== Alcuni esercizi per casa ====== == Lezione del 1/3/2010 == Scrivere una function //Sierpinski// per disegnare il triangolo di Sierpinski usando le trasformazioni lineari affini x=Ax+b_i dove A=[1/2, 0; 0, 1/2], b_1=[0,0]; b_2=[1/2 0]; b_3=[1/4, sqrt(3)/4]. Ognuna delle trasformazione si applica con probabilita' 1/3. == Lezione del 15 Marzo 2010 == Scivere la funzione //miaspline// per valutare la spline cubica in un nodo i function v=miaspline(nodi,y, u) con //nodi// vettore dei nodi e y valori e u un vettore di valori sulla quale si vuole valutare la spline s(x). v e' un vettore lungo quanto u tale che v=s(u). Sia n=length(nodi)-1, cioe' //n// e' il numero di intervalli in cui e' diviso l'intervallo [x_0, x_n]. Dalla teoria vista a lezione, detti mu(i) i momenti del secondo ordine mu(i)=s"_i(x(i)), si arriva ad un sistema tridiagonale con elementi principali uguali a 2 e con elemeti sopra diagonali d_i e sotto diagonali c_i, dove valcolo le seguenti relazioni. Poiche' nodi=[x_0, x_1..., x_n], abbiamo che nodi(i)=x_(i-1) d_i=h_i/(h_(i-1)+h_(i)) i=1, 2, ..., n-2 e c_i=h_(i-1)/(h_(i-1)+h_i) i=2, 3, ..., n-1 dove h_i=nodi(i+2)-nodi(i+1)=x_(i+1)-x_i, i=0,1,.. n-1. Si faccia attenzione al fatto che poiche' in Octave gli indici partono da 1, le due relazioni precedenti devono essere riscritte tenedo conto che h_i=nodi(i+2)-nodi(i+1), mentre se h=diff(nodi) abbiamo che h(i)=nodi(i+1)-nodi(i), cioe' h(i)=h_(i+1), quindi le relazioni precedenti diventano d(i)=h(i+1)/(h(i)+h(i+1)) per i=1, 2, .. ,n-2 c(i)=h(i)/(h(i)+h(i+1)) per i=2, 3, ..., n-1 In particolare il primo d_i e' d(1)=h(2)/(h(1)+h(2))= (x_2-x_1)/(x_2-x_0)=(nodi(3)-nodi(2))/(nodi(3)-nodi(1)) e l'ultimo c_i e' c(n-1)= h(n-1)/(h(n-1)+h(n))=(nodi(n)-nodi(n-1))/(nodi(n+1)-nodi(n-1)) Se i nodi sono equidistanti si deve ottenere d(i)=c(i)=1/2. Per il termine noto abbiamo che posto delta= diff(y)./h; dove delta e' un vettore lungo n. diffdelta=diff(delta) Il termine noto del sistema risulta b(i)=diffdelta(i)/(h(i)+h(i+1)) ** Lezione del 18/3/2010 ** Completare l'esercizio iniziati a lezione sulle Bspline. In particolare, scrivere la funzione //bs_coeff// con le seguenti specifiche function N=bs_coeff(i,p,t,u) tale che N=N_{i,p}(u), con nodi specificati da t. ** Lezione del 22/3/2010 ** 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%28x%29=%5Cleft%5C%7B%5Cbegin%7Barray%7D%7Bll%7D%5Cfrac%7Ba%280%29%7D%7B2%7D+%5Csum_%7Bj=1%7D%5E%7Bm-1%7D%20%28a%28j%29%20cos%28jx%29+b%28j%29sin%28jx%29%29%20&%20n=2m-1%5C%5C%5Cfrac%7Ba%280%29%7D%7B2%7D+%5Csum_%7Bj=1%7D%5E%7Bm-1%7D%20%28a%28j%29%20cos%28jx%29+b%28j%29sin%28jx%29%29+a%28m%29cos%28mx%29%20&%20n=2m%20%5Cend%7Barray%7D%20%5Cright.|F(x)]] e alpha(j)=2 Re(z(j)), beta(j)=-2 Im(z(j)) con z=1/n V^H y ** Lezione del 19/4/2010 ** Scrivere la funzione //rifft// function y=rifft(z) che preso un vettore di dimensione N=2^s, restituisce la sua IDFT. Si implementi l'algoritmo ricorsido di cost0 n log(n) ** Lezione del 23/4/2010 ** Scrivere la funzione //ruota_im// con le seguenti caratteristiche function Ir=ruota_im(I, a, s) dove I e' un immagine, a un angolo in radianti ed s un fattore di scala. Ir e' l'immagine I ruotata a destra rispetto al centro dell'immagine di un angolo a e scalata di un fattore s. Si puo' supporre che Ir non mantenga le dimensioni dell'immagine originale. la trasformazione che implementa la rotazione e' data dalla matrice T=[s cos(a), s sin(a); -s sin(a), s cos(a)] Risultapiu' semplice, per ogni punto dell'immagine ruotata Ir stabilire di quale punto sono la controimmagine. Si puo' procedere une seguente modo: - Si suppone che l'immagine abbia come coordinate cartesiane dei vertici i punti (1,1), (larghezza, 1), (1, altezza), (larghezza, altezza) - Si calcolano le coordinate del centro di rotazione - Si calcolano le coordinate dei vertici di Ir (immagine dei vertici traslati rispetto al centro di rotazioone) - Si costruisce la mesh sulla nuova immagine - Si va a vedere per ogni punto di Ir a quale pixel su I corrispondono - Attraverso l'interpolazione bidimensionale si assegna il volore opportuno ai pixel. ** Lezione del 10/05/2010** Si tracci il grafico della discrepanza tra l'immagine ricostruita **f** e l'immagine blurred **g** al variare del parametro di regolarizzazione, in analogia a quanto fatto per l'energia. Si calcoli il //mu_2// tale che la discrepanza di (f_(mu_2)) sia la piu' vicina alla norma del rumore e si valuti la qualita' dell'immagine ottenuta f_(mu_2)