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
© Copyright 2024 Paperzz