Algebra Lineare Numerica Esercitazione n◦ 7 • Esercizio 1 Si consideri il seguente codice MATLAB f(1)=1; f(2)=1; for i=2:n-1 f(i+1)=f(i)+f(i-1); end g(n)=f(n); g(n-1)=f(n-1); for i=(n-1):-1:2 g(i-1)=g(i+1)-g(i); end Al variare di n il programma calcola i primi n numeri di Fibonacci e successivamente calcola la stessa sequenza in ordine inverso. Qual `e l’indice del pi` u grande numero di Fibonacci che pu`o essere rappresentato esattamente come numero a doppia precisione di MATLAB senza essere affetto da errore di roundoff ? Qual `e l’indice del pi` u grande numero di Fibonacci che pu`o essere approssimato come numero a doppia precisione MATLAB senza overflow ? Per valori di n compresi tra i due valori trovati, f(i) e g(i) sono molto diversi. Si dia una spiegazione del perch´e ci` o accada. Si ricorda che MATLAB usa lo standard IEEE a doppia precisione. • Esercizio 2 Si considerino la matrice A e il vettore b 1 1 1.0001 , A = 1 1 1.0001 2 b = 0.0001 . 4.0001 1. Si calcolino esattamente A+ e P = AA+ . Suggerimento. Potrebbe essere utile servirsi del toolbox simbolico di Matlab. Per esempio >> >> >> >> >> a= sym(’a’,’real’) A=[1 1; 1 1+a; 1+a]; b=[2; a; 4+a]; Ap=simple((A’*A)\A’); ... 1 2. Si trovi la soluzione esatta x e il termine y = Ax del problema ai minimi quadrati Ax ≈ b. 3. Si calcolino numericamente le quantit`a, viste a lezione, κ(A), η, θ. 4. Si calcolino i numeri di condizionamento κx(A) ,κx(b) , κy(A) ,κy(b) definiti come segue κx(A) = κ(A) + κy(A) = κ(A)2 tan θ , η κ(A) , cos(θ) κx(b) = κ(A) , η cos(θ) κy(b) = 1 . cos(θ) • Esercizio 3 (TB Ch. 19) Si consideri la funzione f (x) = esin(4t) per t ∈ [0, 1], campionata in 100 punti equispaziati su tale intervallo. Si consideri il suo approssimante ai minimi quadrati di grado 14, T14 (x). 1. Si costruisca la matrice di Vandermonde A e il termine noto b corrispondenti e si calcoli la soluzione x del sistema Ax = b con il comando Matlab \. Quanto vale il coefficiente del termine di grado 14 di T14 (x)? 2. Si disegni la funzione esin(4t) e l’approssimante T14 (x). 3. Affinch´e il coefficiente x15 (coefficiente del termine di grado 14) sia uguale a 1, in modo da rendere pi` u semplice i confronti, si usi la seguente normalizzazione b = b/2006.787453080206. Si risolva il nuovo problema usando il comando \. 4. Si calcoli K(A) con il comando cond. Cosa si pu`o dedurre circa il condizionamento di A? Si calcoli inoltre la quantit` a θ = cos−1 ||y|| . ||b|| Si osservi, a tale proposito, che la formula implementata da Matlab per il calcolo di cos−1 `e p cos−1 (z) = −i log z − i(1 − z 2 ) . ||y|| per il problema in esame? Cosa comporta nella formula del ||b|| calcolo di cos−1 ? Si consideri quindi per il calcolo di θ l’espressione Quanto vale z = θ = sin−1 ||b − y|| . ||b|| Si calcoli poi la quantit` a η= 2 ||A|| ||x|| ||Ax|| e i numeri di condizionamento κx(A) ,κx(b) , κy(A) ,κy(b) usando le definizioni date nell’esercizio 2. 5. Si risolva il problema ai minimi quadrati usando l’istruzione qr di Matlab (Householder) e si commenti l’accuratezza della soluzione xqr, riferendosi in particolare al termine xqr(15). 6. Si risolva il problema ai minimi quadrati utilizzando l’algoritmo di Gram-Schmidt modificato per il calcolo della fattorizzazione QR di A. Cosa si osserva? Ci si riferisca in particolare al termine xgsm(15) 7. Si risolva il problema ai minimi quadrati risolvendo le equazioni normali, ovvero calcolando >>xn=(A’*A)\(A’*b); Cosa si osserva? Ci si riferisca in particolare al termine xn(15) 8. Si risolva il problema ai minimi quadrati usando la SVD. Cosa si osserva? Ci si riferisca in particolare al termine xsvd(15). 3 Algebra Lineare Numerica Lab nr. 7 • Exercise 1 Consider the MATLAB program f(1)=1; f(2)=1; for i=2:n-1 f(i+1)=f(i)+f(i-1); end g(n)=f(n); g(n-1)=f(n-1); for i=(n-1):-1:2 g(i-1)=g(i+1)-g(i); end For any input n, the program computes the first n Fibonacci numbers in the normal order and it the compute the same sequence in reverse order. What is the index of the largest Fibonacci number that can be represented exactly as a MATLAB double-precision quantity without roundoff error? What is the index of the largest Fibonacci number that can be represented approximately as a Matlab double-precision quantity without overflowing? Finally, for values of n between those found, the f(i) differs very much from the g(i). Provide an explanation. Note that MATLAB uses IEEE double precision. • Esxercise 2 Consider the matrix A and the vector b 1 1 1.0001 , A = 1 1 1.0001 2 b = 0.0001 . 4.0001 1. What are the matrices A+ and P = AA+ ? Give the exact answers. Hint. It could be useful the Symbolic Math Toolbox. For example >> >> >> >> >> a= sym(’a’,’real’) A=[1 1; 1 1+a; 1+a]; b=[2; a; 4+a]; Ap=simple((A’*A)\A’); ... 2. Find the exact solutions x and y = Ax to the least squares problem Ax ≈ b. 3. Compute numerically κ(A), η, θ. 4 4. Compute the condition numbers κx(A) ,κx(b) , κy(A) ,κy(b) defined as κx(A) = κ(A) + κy(A) = κ(A)2 tan θ , η κ(A) , cos(θ) κx(b) = κ(A) , η cos(θ) κy(b) = 1 . cos(θ) • Exercise 3 (TB Ch. 19) Consider the function f (x) = esin(4t) for t ∈ [0, 1], evaluated in 100 points equally spaced from 0 to 1. Consider its least squares approximation by a polynomial of degree 14, T14 (x). 1. Build the Vandermonde matrix A and the corresponding right-hand side b and compute the solution x of the linear system Ax = b by the Matlab command \. What are the coefficient related to degree 14 of T14 (x)? 2. Plot esin(4t) and T14 (x) 3. In order to have x15 = 1, making the following comparisons easier to follow, use the normalization b = b/2006.787453080206. Solve the new least squares problem with \. 4. Compute K(A) with the command cond. Comment on the result. Compute θ = cos−1 ||y|| , ||b|| and observe that Matlab compute cos−1 through the following formula p cos−1 (z) = −i log z − i(1 − z 2 ) . ||y|| ? So, what does it involve in the calculation ||b|| of cos−1 ? Thus, consider the following expression for θ In our case, what is the value of z = θ = sin−1 ||b − y|| . ||b|| Compute η= ||A|| ||x|| ||Ax|| and the condition numbers κx(A) ,κx(b) , κy(A) ,κy(b) using the definitions given in the Exercise 2. 5. Solve the least squares problem with Matlab qr ( that is Householder) and comment on the accuracy of the solution xqr, in particular refer on xqr(15). 5 6. Solve the least squares problem by modified Gram-Schmidt, in order to compute QR factorization of A. What do you observe? In particular refer on xgsm(15). 7. Solve the least squares problem by the solution of the normal equation, that is computing >>xn=(A’*A)\(A’*b); What do you observe? In particular refer on xn(15). 8. Solve the least squares problem using the SVD. What do you observe? In particular refer on xsvd(15). 6
© Copyright 2024 Paperzz