Materiale di preparazione alla prova di laboratorio

Laboratorio di Programmazione e Calcolo
Raccolta di Esercizi per la Preparazione alla Prova di Laboratorio
[ultimo aggiornamento: 28 febbraio 2014]
Ogni prova di laboratorio conster`
a di 2 quesiti da svolgere in ambiente MATLAB. Gli esercizi
contenuti in questo documento sono un indicatore fedele della tipologia e del livello di difficolt`
a
di questi quesiti. Dei due quesiti, il primo sar`a ispirato agli esercizi della tipologia 1, mentre il
secondo sar`a ispirato agli esercizi della tipologia 2.
Tipologia 1.
1 Realizzare uno script MATLAB che, data una matrice A ∈ Rm×n , A = (aij ), ne calcola la
norma k·k1 :
kAk1 = max
j=1,...,n
m
X
|aij | .
i=1
Testare il funzionamento dello script calcolando la norma k·k1 della matrice
>> A=rosser;
per cui si ha kAk1 = 1614.
2 Realizzare uno script MATLAB che, dato un numero naturale n ∈ N, calcola il valore della
seguente sommatoria:
n
X
π 2k+1
sn =
(−1)k
.
(2k + 1)!
k=0
Calcolare s1 , s2 , s4 , s8 , s16 , e verificare che, al crescere di n, il valore di sn tende a 0.
3 Realizzare uno script MATLAB che, dato un numero naturale n ∈ N, calcola il valore della
seguente produttoria:
pn =
n Y
k=2
1
1− 2
k
.
Calcolare p32 , p64 , p128 , p256 , p512 , e verificare che, al crescere di n, il valore di pn tende a
1
.
2
4 Realizzare uno script MATLAB che, dato un numero naturale n ∈ N, calcola il valore della
seguente produttoria:
pn =
n
Y
k=1
1
uk ,
dove u1 =
p
p
1/2, uk+1 = (1 + uk )/2;
Calcolare p2 , p4 , p8 , p16 , e verificare che, al crescere di n, il valore di pn tende a
2
.
π
5 La successione di Fibonacci `e definita come:
u0 = 0,
u1 = 1,
uk+2 = uk+1 + uk .
Realizzare uno script MATLAB che, dato un numero naturale n ∈ N, calcola il seguente
valore:
xn =
un+1
.
un
√
1+ 5
Calcolare x2 , x4 , x8 , x16 , e verificare che, al crescere di n, il valore di xn tende a
.
2
Tipologia 2.
1 Implementare sotto forma di function MATLAB il metodo delle successive bisezioni. La
function deve richiedere in input una funzione f , gli estremi di un intervallo [a, b], tolleranza
e numero massimo di passi consentito, e deve restituire in output l’approssimazione di uno
zero α di f ed il numero di passi effettuati.
Sia f (x) = cos(x) − x. Si calcoli, usando la function appena creata, un’approssimazione
avente le prime 10 cifre significative corrette dell’unico zero α di f in I = [0, 1]. Il risultato
corretto `e α = 0.7390 . . . .
2 Implementare sotto forma di function MATLAB il metodo di Newton. La function deve
richiedere in input una funzione f , la sua derivata f 0 , uno stima iniziale x(0) dello zero,
tolleranza e numero massimo di passi consentito, e deve restituire in output l’approssimazione
di uno zero α di f ed il numero di passi effettuati.
Sia f (x) = exp(x)−x−3/2. Si calcoli, usando la function appena creata, un’approssimazione
avente le prime 10 cifre significative corrette dell’unico zero α di f in I = [0, 1]. Il risultato
corretto `e α = 0.8576 . . . .
3 Implementare sotto forma di function MATLAB il metodo delle secanti:
x(k) = x(k−1) − f (x(k−1) )
x(k−1) − x(k−2)
,
f (x(k−1) ) − f (x(k−2) )
k = 2, 3, . . .
La function deve richiedere in input una funzione f , due stime iniziali x(0) e x(1) dello zero,
tolleranza e numero massimo di passi consentito, e deve restituire in output l’approssimazione
di uno zero α di f ed il numero di passi effettuati.
Sia f (x) = x6 + x − 1. Si calcoli, usando la function appena creata, un’approssimazione
avente le prime 10 cifre significative corrette dell’unico zero α di f in I = [0, 1]. Il risultato
corretto `e α = 0.7790 . . . .
2
4 Implementare sotto forma di function MATLAB il metodo quasi-Newton:
x(k) = x(k−1) − h
f (x(k−1) )
f (x(k−1) + h) − f (x(k−1) )
La function deve richiedere in input una funzione f , un numero h > 0, uno stima iniziale
x(0) dello zero, tolleranza e numero massimo di passi consentito, e deve restituire in output
l’approssimazione di uno zero α di f ed il numero di passi effettuati.
Sia f (x) = sin(x) − sin(2x). Si calcoli, usando la function appena creata (si scelga h = 10−8 )
un’approssimazione avente le prime 10 cifre significative corrette dell’unico zero α di f in
I = [1, 2]. Il risultato corretto `e α = 1.0471 . . . .
5 Siano (xi , yi ), i = 0, 1, . . . , n, le coordinate di n + 1 punti nel piano cartesiano, con nodi
xi distinti. Realizzare una function MATLAB che effettui la valutazione del polinomio di
interpolazione nella forma di Lagrange:
πn (x) =
n
X
yk ϕk (x),
dove ϕk (x) =
k=0
n
Y
x − xj
.
xk − xj
j=0
j6=k
La function deve richiedere in input i nodi xi , i valori yi del polinomio di interpolazione nei
nodi, il punto x nel quale si vuole valutare il polinomio, e deve restituire in output il valore
πn (x).
Per n = 4, 8, 16, 32, considerare il polinomio di interpolazione πn avente vettore dei nodi di
interpolazione x=(-n:n) e corrispondenti √
valori nei nodi y=sin(pi/2*x). Verificare che, al
crescere di n, il valore di πn (1/4) tende a 2/2.
3