Lezioni svolte¶
Eliminazione di Gauss (17 febbraio 2014)¶
Foglio Maple example-2014-02-17a.zip
File formato PDF: example-2014-02-17a.pdf
Foglio Maple example-2014-02-17b.zip
File formato PDF: example-2014-02-17b.pdf
Zeri di funzione (10 marzo 2014)¶
Foglio Maple example-2014-03-10.zip
File formato PDF: example-2014-03-10.pdf
Integrazione numerica (17 marzo 2014)¶
Foglio Maple example-2014-03-17a.zip
File formato PDF: example-2014-03-17a.pdf
Foglio Maple example-2014-03-17b.zip
File formato PDF: example-2014-03-17b.pdf
Differenze divise (4 marzo 2014)¶
File differenze_divise.m
:open:
1%
2% funzione che calcola le differenze divise
3% INPUT x vettore con le ascisse (dei punti di interpolazione)
4% y vettore con le odinate (dei punti di interpolazione)
5%
6% OUTPUT dd differenze divise, vedi referenza....
7%
8%
9function dd = differenze_divise( x, y )
10 % controllo dati:
11
12 % 1 - controllo che siano vettori colonna
13 if size(x,2) ~= 1 | size(y,2) ~=1
14 error('x e y devono essere vettori colonna');
15 end
16
17 % 2 - controllo che abbiano la stessa dimensione
18 if size(x,1) ~= size(y,1)
19 error('x e y devono avere la stessa dimensione');
20 end
21
22 % numero di righe di x ed y
23 n = size(x,1) ;
24
25 % allocazione vettore dd, tramite copiatura del vettore y
26 % dd ora contiene le differenze divise di ordine 0,
27 % cio� dd(i)=f(x(i))=y(i)
28 dd = y ;
29
30 % loop differenze divise
31 for k=1:n
32 for j=n:-1:k+1
33 if x(j) == x(j-k)
34 error('le componenti di x devono essere tutte distinte') ;
35 end
36 dd(j) = (dd(j)-dd(j-1))/(x(j)-x(j-k)) ;
37 end
38 end
39
40 % ora dd contiene le differenze divise
41end
File interp_poly.m
:open:
1%
2% funzione che calcola il polinomio interpolante
3% INPUT x, vettore con le ascisse (dei punti di interpolazione)
4% y, vettore con le odinate (dei punti di interpolazione)
5%
6% OUTPUT coeffs, coefficenti del polinomio
7%
8function coeffs = interp_poly( x, y )
9 % calcolo differenze divise
10 dd = differenze_divise( x, y );
11
12 n = size(y,1) ; % numero di righe di y
13
14 % omega = 1
15 omega = zeros( n, 1 ) ;
16 omega(1) = 1 ;
17
18 % polinomio nullo
19 coeffs = zeros( n, 1 ) ;
20 for k=1:n
21 coeffs = coeffs + dd(k)*omega ;
22 % moltiplicare omega * (x-x(k))
23 omega = [ 0 ; omega(1:end-1) ] -x(k)*omega ;
24 % ^
25 % |
26 % moltiplicazione per x
27 end
28end
File test.m
:open:
1% polinomio soluzione 1+x+x^3
2x = [0 1 -3 2]';
3y = [1 3 -29 11]';
4dd = differenze_divise(x, y) ;
5dd
6
7% polinomio interpolante
8coeffs = interp_poly( x, y ) ;
9coeffs