• Non ci sono risultati.

Laboratorio di Calcolo Numerico A.A. 2007/2008 – II semestre

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di Calcolo Numerico A.A. 2007/2008 – II semestre"

Copied!
3
0
0

Testo completo

(1)

Corso di Laurea Triennale in Matematica Laboratorio di Calcolo Numerico

A.A. 2007/2008 – II semestre

Esercitazione 6

Creare una cartella <cognome> dove verranno salvati i file creati nella sessione di lavoro.

Appena entrati in MATLAB posizionarsi in <cognome>.

Risolvere in ambiente MATLAB i seguenti esercizi.

INTERPOLAZIONE ED APPROSSIMAZIONE DI DATI

L’ambiente MATLAB offre una built-in function per il calcolo del polinomio di miglior approssimazione nel senso dei minimi quadrati:

a=polyfit(x,y,n)

Tale funzione fornisce i coefficienti di un polinomio di grado n nella forma

= n

j j jx a

0

,

di approssimazione ai minimi quadrati dei dati (x,y) utilizzando il metodo QRLS.

Per la valutazione di un polinomio si utilizza il metodo di Horner realizzato nella function y1=polyval(a,x1)

Tale funzione fornisce il valore del polinomio di coefficienti a dati in input, p(x) = a(n+1) + .. +a(2)x^(n-1)+a(1)x^(n) valutato per valori del vettore x1 dato in input.

1. Scrivere la function MATLAB yy = InterpL(x, y, xx) che determina in un insieme di punti xx il valore del polinomio interpolante i dati (x,y), ottenuto dalla formula di Lagrange. Quindi realizzare un file script di MATLAB che calcoli i polinomi di interpolazione di Lagrange relativi alle funzioni sin(x) e cos(x) nei punti xk = kπ/2, per k=0, 1, 2, 3, 4 e ne fornisca una rappresentazione grafica.

2. Scrivere la function MATLAB c = InterpN(x,y), che presa in input la sequenza di punti (x,y)={(xi,yi)}i=1,…,n+1 da interpolare, determini il vettore c={ci}i=1,…,n+1 dei coefficienti del polinomio interpolante ottenuto dalla formula di Newton:

p(x) = c(1) + c(2)*(x-x(1))+...+ c(n+1)*(x-x(1))*...*(x-x(n)).

Realizzare poi la function yy = HornerN(c,x,xx), che presi in input il vettore dei coefficienti c precedentemente calcolato, il vettore x con le ascisse dei nodi e il vettore xx con le ascisse dei punti di valutazione, utilizzi l’algoritmo di Horner per determinare il valore del polinomio interpolante p(x) nei punti xx.

Infine, scrivere uno script MATLAB che calcoli il polinomio di interpolazione di Newton di grado n di un insieme di punti Pi=(xi,yi), i=1,…,n+1, con xi a scelta dell’utente:

(2)

punti xi equidistanti in un intervallo [a,b] ( utilizzare x=linspace(a,b,n+1) );

punti xi definiti dagli zeri dei polinomi di Chebychev nell’intervallo [a,b]:

(

2( 1)

)

, 1,.., 1

1 ) 1 ( cos 2 2

2 = +

+ +

− −

= + i n

n i a

b b

xi a π

e yi ottenuti dalla valutazione nei punti xi di una funzione y=f(x), x∈[a,b].

Testare lo script sulle funzioni y=1/(1+x2), x∈[-5,5] (funzione di Runge) e y=sin(x)-2sin(2x), x∈[-π,π]. Infine calcolare l’errore di interpolazione r(x)=f(x)-p(x), tra la funzione test f(x) e il polinomio di interpolazione di Newton p(x) dei punti assegnati. Quindi visualizzare in figura 1 il grafico delle funzioni f(x) e p(x) ed in figura 2 il grafico di r(x).

Cosa si osserva? Cosa accade all’aumentare del grado n?

3. La temperatura T in prossimità del suolo varia al variare della concentrazione k dell'acido carbonico e della latitudine L. Per k=1.5 la temperatura al suolo subisce una variazione dipendente dalla temperatura secondo la seguente tabella:

L -55 -45 -35 -25 -15 -5 5 15 25 35 45 55 65

T 3.7 3.7 3.52 3.27 3.2 3.15 3.15 3.25 3.47 3.52 3.65 3.67 3.52 Si vuole costruire un modello che descriva la legge T=T(L) anche per latitudini non misurate.

Ad esempio si vuole valutare la variazione di temperatura a Roma ( L=42°).

Sperimentare le seguenti tecniche:

Interpolazione di Newton con un polinomio di grado 12.

Approssimazione nel senso dei minimi quadrati con un polinomio di grado1 e 2 (si applichi il metodoQRLS utilizzando le due funzioni MATLAB polyfit( ) e polyval( ) ).

4. Realizzare uno script MATLAB metodoEN.m che determina il polinomio di miglior approssimazione nel senso dei minimi quadrati mediante il metodo delle equazioni normali.

SUGGERIMENTO: costruire la matrice H del sistema sovradeterminato Ha=y e poi risolvere il sistema di equazioni normali HTHa=HTy. Utilizzare sia la fattorizzazione di Cholesky che l’operatore \ di MATLAB.

% ESEMPIO

%Costruire la matrice di Vandermonde H per il sistema









=

















3 2 1 0

0 1 2 3

3 2 3 3 3

2 2 2 3 2

1 2 1 3 1

0 2 0 3 0

1 1 1

1

y y y y

a a a a

x x x

x x x

x x x

x x x

% dove a è il vettore dei coefficienti incogniti.

% Per un polinomio di grado 3, H sarà: H = [x.^3 x.^2 x ones(size(x))]

Si applichino il metodo EN sviluppato e il metodoQRLS (ottenuto chiamando successivamente le due funzioni MATLAB polyfit( ) e polyval( )) per il calcolo dei polinomi ai minimi quadrati di grado opportuno sui seguenti insiemi di dati:

a) dati presenti nel file data.dat (il file contiene: numero punti, elenco ascisse ed ordinate);

(3)

b) sulle 101 coppie di punti:

rand

* 30 16 - 5x - 2x y 1, 100-

xi = 8i i = i2 i + (1,101) i=0,…,100.

c) x=[-3.5 -3 -2 -1.5 -0.5 0.5 1.7 2.5 3];

y=[-3.9 -4.8 -3.3 -2.5 0.3 1.8 4 6.9 7.1];

Si visualizzino i dati da approssimare e il polinomio approssimante.

Si stampi il valore del residuo ottenuto.

5. Scrivere uno script MATLAB per approssimare la seguente configurazione di punti x=[10:.5/5:10.5];

y=[11.0320 11.1263 11.1339 11.1339 11.1993 11.1844];

mediante un polinomio ai minimi quadrati di grado 4 costruito con il metodo EN e con il metodo QRLS.

Perturbare poi il secondo punto nel seguente modo x(2)=x(2)+0.013;

y(2)=y(2)-0.001;

e calcolare i nuovi polinomi relativi alla configurazione perturbata. Cosa si osserva? Perché?

6. Una stazione astronomica registra i dati sulla posizione di un asteroide, scoperto da poco, orbitante attorno al sole. I dati corrispondono alle misure della distanza radiale dal Sole (in milioni di Km) e della posizione angolare (in radianti) sull’orbita, nota la posizione della terra rispetto al Sole. In teoria questi valori dovrebbero adattarsi all’equazione in coordinate polari di un’ellisse, data da:

)) cos(

1 (

2 e θ

r L

= +

dove e è l’eccentricità dell’orbita ellittica e L è l’ampiezza dell’ellisse nei fuochi. Tuttavia, errori nel processo di inseguimento e approssimazioni nella trasformazione in valori (θ,r) perturbano i dati. Per i dati contenuti nel file orbita.dat (ossia per l’elenco delle coppie k,rk))

- trovare l’eccentricità dell’orbita effettuando un fitting lineare ai minimi quadrati dei dati;

- visualizzare i dati da approssimare e il polinomio approssimante.

--- SUGGERIMENTO: scrivere l’equazione polare dell’ellisse nella forma

2r=e(−2rcos(θ))+L, così xk =−2rkcos(θk) e yk =2rk.

Riferimenti

Documenti correlati

Scrivere l’M-file somma.m per calcolare la somma dei primi n numeri naturali dispari sia utilizzando un ciclo for che servendosi dell’istruzione

Spiegare perché per valori di x vicini a multipli di π/2 la valutazione della funzione risulta un problema mal condizionato4. Osservare cosa succede

Costruire una funzione MATLAB per il calcolo della soluzione di una generale equazione AX=B, con X, B matrici, che utilizza la fattorizzazione LU. Utilizzarla poi per

In uscita devono essere restituiti il vettore soluzione del sistema lineare e il numero dei passi effettuati per ottenere l'approssimazione desiderata (massimo 100).. Scrivere una

La funzione deve prendere in input la matrice A, il vettore di innesco x 0 , il numero massimo di iterazioni consentite (nmax) e la tolleranza toll per il

Realizzare uno script MATLAB che, presi in input due vettori di coordinate x, y che rappresentano punti lungo una traiettoria sulla quale la mano del robot deve

Si può dimostrare usando la procedura di Gram-Schmidt che una tal famiglia tri- angolare di polinomi esiste e con la stessa procedura costruirla direttamente; inoltre è

si suppone che lo studente abbia letto le regole prima del compito, come richiesto; il compito dura in totale 40 minuti e consta di 4 quiz (7 minuti) e un codice Matlab da scrivere