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