Appunti di Analisi Numerica
∗
Giuseppe Profiti
25 ottobre 2006
1
Applicazione di deCasteljeau a una curva
di Bezier
C(t) = n X i=0 PiBi,n(t) P i= xi yi !Applichiamo deCast. alla componente x e poi alla y Pi[j]= t · Pi+1[j−1]+ (1 − t) · Pi[j−1] P
[0] i = Pi
(immagine mancante)
Considerando una poligonale di controllo composta da 4 punti, da P0 a
P3, P0[1] sar`a la combinazione convessa di P0 e P1, quindi P0[1] `e sul segmento
P0P1, P1[1] ∈ P1P2, P2[1] ∈ P2P3
P0[3] `e il valore della curva per il t dato. P0[0]P0[1]P0[2]P0[3] sono i punti che definiscono la curva originale da P0 a P0[3].
P0[3]P1[2]P2[1]P3[0] definiscono la curva da P0[3] a P3.
Algoritmo di suddivisione: si suddivide la curva in due curve.
Posso modificare l’algoritmo di valutazione: uso t = 12 e calcolo ricorsi-vamente a partire dai punti di controllo trovati per la sottocurva, mi fermo quando trovo un valore che dista da P0 meno della precisione che ci interessa.
Esempio
P0P1P2P3 punti della curva originale.
Q0Q1Q2Q3 R0R1R2R3 le due sottocurve.
∗Licenza Creative Commons by-sa-nc
Q0 = P0 Q1 = P0+ P1 2 Q2 = Q1 2 + P1+ P2 4 Q3 = Q2+ R1 2 R0 = Q3 R1 = R2 2 + P1+ P2 4 R2 = P2+ P3 2 R0 = P3
Si possono calcolare a partire da Q0 e R3 fino ad arrivare al centro (R0 e
Q3).
Sono divisioni per 2 (shift) e addizioni, Q `e in [0,12] e R in [12,1] ma per le propriet`a di cambio di variabile si pu`o riapplicare deCast.
Inoltre ogni volta allarghiamo l’intervallo (cambiando variabile) e quindi `e sempre pi`u stabile.
Per i caratteri si distringue tra punti on e off: gli on sono sulla curva.
1.1
Interpretazione geometrica di
b
i Y = p(x) = n X i=0 biBi,n(x) 1.1.1 Forma vettoriale `E possibile passare in forma vettoriale usando x = t e y = f (t).
Se ho y polinomio di bernst. posso scriverlo come una curva di bezier
Esercizio Dimostrare che t = n X i=0 i nBi,n(t) t∈ [0, 1] Esempio p(x) = 2 B0,2(t) − 2 B1,2(t) + 2 B2,2(t) t∈ [0, 1] Calcoliamo per t = 1 4 (immagine mancante)
2
Formula ricorrente per la derivata di pol.
base di Bernstein
B′
i,n(x) = n (Bi−1,n−1(x) − Bi,n−1(x))
B′′
i,n(x) = n (Bi−1,n−1′ (x) − Bi,n−1′ (x))
p′(x) = n X i=0 biB′i.n(x) p′(x) = n X i=0 biBi.n′ (x) = . . . = n n−1 X i=0 (bi+1− bi)Bi,n−1(x) b′ i = n (bi+1− bi)
Per valutare, usando l’algoritmo 1, valuto da B0,0(¯x) fino a B0,n−1(¯x) . . . Bn−1,n−1(¯x)
da cui mi calcolo i B′ i,n(¯x).
Per la derivata seconda mi fermo al passo precedente, e cos`ı via.
bi+1 =
di
n + bi
Non ho la formula per bo ma l’antiderivata non `e unica: posso scegliere
B0 come voglio, ad esempio 0.
4
Integrazione
Z 1
0 p(x) dx = [p
−1(x)]1
0 = p−1(1) − p−1(0) = bn− b0
Una volta calcolato il bn ho gi`a l’integrale. (`e il coef. della primitiva)
Esercizio Provare/verificare che Z 1 0 Bi,n(x) dx = 1 n+ 1 ∀i
5
Interpolazione
Siano assegnate n + 1 osservazioni in corrispondenza di altrettanti punti distinti, cio´e siano assegnati
(Xi, Yi)i=0,...,n
Assegnato uno spazio φ di funzioni da ℜ → ℜ e assegnata una base di rappresentazione per queste funzioni, determinare ϕ∗(x) ∈ φ tale che
ϕ∗(X i) = Yi con u = 0, . . . , n. ϕ∗(X) = n X i=0 a∗ iϕi(x) Problematiche:
1. esiste una soluzione? 2. `e unica?
3. `e una buona funzione? (ricostruzione dei dati)
Come si valute (3): scelgo f (x) : ℜ → ℜ, estraggo dei valori (xi, f(xi))i=0,...,n
e li uso come dati del problema ϕ∗(x
i) = f (xi)
per stimare la bont`a uso
|f (x) − ϕ∗(x)| < ǫ x∈ [a, b]