Sei sulla pagina 1di 39

MATLAB

EXERCISE
2
Indice

1 Aritmetica di macchina........................................................................................................................ 5

2 Interpolazione ........................................................................................................................................... 9

3 Sistemi lineari determinati ............................................................................................................... 17

4 Sistemi lineari sovradeterminati e problemi di regressione .............................................21

5 Autovalori e fattorizzazioni di matrici ........................................................................................25

6 Quiz 1 ..........................................................................................................................................................30

7 Quiz 2 ..........................................................................................................................................................33

8 Quiz 3 ..........................................................................................................................................................37

3
4
1 Aritmetica di macchina

• In un calcolatore i numeri vengono rappresentati in aritmetica floating-point, con base


, cifre di mantissa e tecnica di arrotondamento rounding to even.
Detta la precisione di macchina, quale delle seguenti affermazioni e' vera?

= (1/2)N(1-t) = 2-12-6= 2-7

La risposta corretta è:

• In un calcolatore i numeri vengono rappresentati in aritmetica floating-point, con


base , cifre di mantissa e tecnica di arrotondamento rounding to even. Assegnati i
numeri
e si effettua
l'operazione . Dire in quale caso si presenta il fenomeno della cancellazione numerica.
La cancellazione numerica non si verifica mai con esponenti diversi (2 e 3)

La risposta corretta è: per nessun

• Sia e sia . Sia

inoltre l'approssimazione del limite

notevole . Quale valore di tra quelli proposti restituisce


il risultato piu' accurato?
errmin=10;
i=0;
for n=1:14
h=10^(-n);
y=(1-cos(h))/(h^2);
err=abs(y-(1/2))/(1/2);
if err<errmin
errmin=err;
i=n;
end
end
i

La risposta corretta è: 4

5
• Si consideri la
successione ,

,
convergente a . Si calcolino gli errori relativi rispetto
a per . Il minimo errore relativo vale, circa,
x=zeros(40,1);
x(1)=2;
for n=2:40
x(n)=2.^(n-1/2).*sqrt(1-sqrt(1-4.^(1-n).*x(n-1).^2));
end
min(abs(x-pi))/pi

La risposta corretta è: 3.8764e-10

• Si calcolino le quantita'

con e e successivamente
con e . Si usi sia la formula indicata sopra, che una
equivalente in aritmetica infinita, ma che elimini il fenomeno della cancellazione numerica.
Sia la quantita' calcolata con questo secondo algoritmo. Si valutino gli errori
relativi per entrambe le coppie di dati assegnati.
Quale delle seguenti affermazioni e' corretta?
x1=1.7;
d1=2.1*10^(-9);
y1=sqrt(x1+d1)-sqrt(x1);
y1_=d1/(sqrt(x1+d1)+sqrt(x1));
err1=abs(y1-y1_)/abs(y1_)

x2=31000;
d2=7.1*10^(-4);
y2=sqrt(x2+d2)-sqrt(x2);
y2_=d2/(sqrt(x2+d2)+sqrt(x2));
err2=abs(y2-y2_)/abs(y2_)

La risposta corretta è: Gli errori relativi sono rispettivamente circa 1.1e-07 e 5.6e-09, quindi la
cancellazione numerica e' piu' evidente nel primo caso

• Siano date le funzioni

Si calcoli il valore di entrambe nel punto usando Matlab. Si consideri

quindi come valore esatto: qual e' l’errore relativo che commettiamo sostituendo
a il valore ?

6
x=10^(-12);
f1=(exp(3*x)-1)/x;
f2=3+(9*x/factorial(2))+(27*x^2/factorial(3))+(81*x^3/factorial(4))+(243*x^4/
f
actorial(5));
err=abs(f2-f1)/abs(f2)

La risposta corretta è:

• Sia e si supponga di rappresentarlo in aritmetica finita in base


10, con arrotondamento e numero massimo di cifre per la mantissa pari a 8. La sua
rappresentazione normalizzata e':

La risposta corretta è:

• Valutare per .
Successivamente riformulare al fine di evitare il fenomeno
della cancellazione numerica e, assumendo come valore esatto
quello che si ottiene mediante la riformulazione proposta,
calcolare l'errore relativo associato a . Esso vale all'incirca:
x=10^-4;
y=7-sqrt(49+x^2);
y_=(-x^2)/(7+sqrt(49+x^2)); % si elimina la canc.num. razionalizzando
err=abs(y-y_)/abs(y)

La risposta corretta è:

• In un calcolatore i numeri vengono rappresentati in aritmetica floating-point, con


base , cifre di mantissa e tecnica di arrotondamento rounding to
even. Assegnati i numeri
e si effettua l'operazione .
Detta la precisione di macchina e posto , quale delle seguenti affermazioni
e' vera?
a=2.136797;
b=2.133500;
s=a-b;
a_=0.2137*10;
b_=0.2134*10;
s_=a_-b_;
errmacc=(1/2)*10^(1-4)
diffrel=abs(s-s_)/abs(s)

La risposta corretta è: la differenza relativa tra e e' maggiore di

7
• Valutare per .
Successivamente riformulare al fine di evitare
il fenomeno della cancellazione numerica e,
assumendo come valore esatto quello che si
ottiene mediante la riformulazione proposta,
calcolare l'errore relativo associato a .
Esso vale all'incirca:
x=10^-8;
f=@(x) sqrt((exp(x)-1)/x);
yerr=f(x);
f2=0;
for i=1:8
f2=f2+x^(i-1)/factorial(i);
end
y=sqrt(f2);
err=abs(y-yerr)/abs(y)

La risposta corretta è:

• Si consideri un'aritmetica di macchina con base , cifre di


mantissa, e tecnica di arrotondamento "rounding to even".
Quanti numeri macchina strettamente maggiori di uno in valore assoluto esistono in tale
aritmetica?

La risposta corretta è: 6

• Si consideri un'aritmetica di macchina con base , cifre di


mantissa, e tecnica di arrotondamento "rounding to even" .
Quanti numeri di macchina maggiori di zero esistono in tale aritmetica?
La risposta corretta è: 24

8
2 Interpolazione

• Si consideri . Si costruisca il polinomio di


grado interpolante su nodi equispaziati nell'intervallo , includendo gli estremi nei

nodi di interpolazione. Il valore di e' circa


n=7;
f=@(x) 3.*x.*cos(x).*sin(x);
x=linspace(0,2*pi,(n+1));
y=f(x);
c=polyfit(x,y,n);
z=pi/2;
p=polyval(c,z);
abs(f(z)-p)

La risposta corretta è: 0.4805

• La spline cubica vincolata e interpolante

La risposta corretta è: e' una funzione polinomiale a tratti continua

• Utilizzare la function spline di Matlab per costruire la spline cubica vincolata ,

soddisfacente le condizioni e e

interpolante la funzione in nodi equispaziati


dell'intervallo .
Il massimo errore assoluto d'interpolazione in punti equidistanti dell'intervallo
di interpolazione e':
n=25;
f=@(x) x.^3.*cos(x);
x=linspace(0,1,n);
y=f(x);
d=@(x) 3.*x.^2.*cos(x)-x.^3.*sin(x);
z=linspace(0,1,1000);
s=spline(x,[d(0) y d(1)],z);
err=max(abs(f(z)-s))

La risposta corretta è:

9
• Determinare il polinomio interpolante la

funzione in nodi equispaziati dell'intervallo .


Il massimo errore assoluto d'interpolazione in punti equidistanti dell'intervallo
di interpolazione vale all'incirca:
n=20;
f=@(x) exp(-x+x.^4+1);
x=linspace(-1,1,n);
y=f(x);
c=polyfit(x,y,(n-1));
z=linspace(-1,1,2000);
p=polyval(c,z);
err=max(abs(f(z)-p))

La risposta corretta è:

• Dati nodi di interpolazione distinti, esiste ed e' unico il polinomio interpolante


avente grado minore o uguale a

La risposta corretta è: n

• Si consideri . Si costruisca il
polinomio interpolante nei punti di
ascissa . Il valore di e' circa
f=@(x) 1+x.^2.*log(2+x);
x=[0.3,0.6,0.9,1.2,1.5];
n=5;
y=f(x);
c=polyfit(x,y,(n-1));
z=3;
p=polyval(c,z);
abs(f(z)-p)

La risposta corretta è: 0.2034

• La spline cubica interpolante e soddisfacente le condizioni not-a-

knot La risposta corretta è: e' una funzione polinomiale a tratti continua

• Per costruire una spline del secondo ordine interpolante i


dati per si usano i comandi

La risposta corretta è: nessuna delle altre {[s,2]=spline(x,y,z); s=spline(x,y,2); s=spline(x,y,z)}


10
• Calcolare il polinomio interpolante la
funzione in punti equispaziati dell'intervallo
. Quanto vale l'errore di interpolazione nei punti e ?
n=8;
f=@(x) atan(x.*(x+1));
x=linspace(0,1,n);
y=f(x);
c=polyfit(x,y,(n-1));
p1=polyval(c,0.5);
err1=abs(f(0.5)-p1)
p2=polyval(c,0.7);
err2=abs(f(0.7)-p2)

La risposta corretta è: all'incirca e all'incirca

• Sia data la funzione

e sia dato il polinomio approssimante sull’intervallo costruito


interpolando con un polinomio di grado 6 nei nodi di Chebyshev sull’intervallo.
L’errore di interpolazione in norma infinito vale:
f=@(x) sin(x)+exp(2./(1+x.^2));
n=6;
a=-2;
b=5;
for i=1:(n+1)
t(i)=-cos(((2.*i-1).*pi)./(2*(n+1)));
x(i)=(((b-a)/2).*t(i))+((b+a)/2);
end
y=f(x);
c=polyfit(x,y,n);
z=linspace(-2,5);
p=polyval(c,z);
norm((f(z)-p),inf)

La risposta corretta è: 1.8722

• Si considerino cinque nodi di interpolazione aventi ascisse [0.0, 0.5, 1.0, 1.5, 2.0] e ordinate

ottenute tramite la trasformazione .


Quale valore assume la spline cubica ottenuta con condizioni not-a-knot in ?
f=@(x) (sin(x)-(x+1).^2)./(x.^2+3);
x=[0.0, 0.5, 1.0, 1.5, 2.0];
y=f(x);
z=1.97;
s=spline(x,y,z)

La risposta corretta è: -1.148

11
• Utilizzare la function spline di Matlab per costruire la spline cubica , soddisfacente
le condizioni not-a-knot
e interpolante la funzione in nodi equispaziati
dell'intervallo .
Il massimo errore assoluto d'interpolazione in punti equidistanti dell'intervallo
di interpolazione vale all'incirca:
n=25;
f=@(x) log(x);
x=linspace(1,2,n);
y=f(x);
z=linspace(1,2,1000);
s=spline(x,y,z);
err=max(abs(f(z)-s)

La risposta corretta è:

• Si vuole interpolare una funzione su nodi con un polinomio . Cosa si


puo' dire sulla convergenza uniforme dell'interpolazione, cioe' sul limite
?

La risposta corretta è: Non e' possibile trarre conclusioni generali senza conoscere la
regolarita' di e la distribuzione dei nodi

• La spline cubica naturale e interpolante una funzione continua in nodi equispaziati

La risposta corretta è: converge a

• Assegnati i punti , , quante spline cubiche not-a-knot e interpolanti


i punti assegnati esistono?

La risposta corretta è: una e una sola, perché ho condizioni tante quanti i parametri
che definiscono la spline richiesta

• Per quali valori del parametro la funzione

e' una spline cubica interpolante i dati ?

12
La spline cubica è continua nella sua derivata seconda, imponendo le cond.
di continuità (limite), ci si ricava a

La risposta corretta è:

• Sia data la funzione

e sia data la successione dei polinomi approssimanti sull’intervallo costruita


interpolando con un polinomio, di grado via via crescente, nei nodi di
Chebyshev sull’intervallo. Tale successione:

La risposta corretta è: converge uniformemente a

• Quale dei seguenti comandi costruisce il polinomio fondamentale di Lagrange (cioè il polinomio
della base di Lagrange) associato al primo di tre nodi?

La risposta corretta è: c=polyfit(x,[1,0,0],2)

• Data la funzione , si denoti con il polinomio che interpola nei


quattro punti equidistanti nell'intervallo . Qual e' il valore di ?
n=4;
f=@(x) cos(x);
x=linspace(0,2*pi,n);
y=f(x);
c=polyfit(x,y,(n-1));
z=pi/8;
p=polyval(c,z)

La risposta corretta è: 6.0449e-01

• La spline cubica naturale e interpolante

La risposta corretta è: e' univocamente determinata

• La spline cubica not-a-knot e interpolante una funzione continua

La risposta corretta è: converge a qualunque sia la scelta dei nodi di interpolazione

13
• Si interpoli la funzione con un polinomio usando 5 nodi equidistanti in .
In il polinomio interpolante assume il valore:
n=5;
f=@(x) sin(x);
x=linspace(0,pi,n);
y=f(x);
c=polyfit(x,y,(n-1));
z=pi/8;
p=polyval(c,z)

La risposta corretta è:

• Assegnati i dati (-1,4), (1,3), (7,10), (9,10), (19,9), la spline di tipo not-a-knot interpolante i dati
nel punto vale:
x=[-1,1,7,9,19];
y=[4,3,10,10,9];
z=log(0.9);
s=spline(x,y,z)

La risposta corretta è: 3.07619569e+00

• Assegnati i dati (-5,6), (4,2), (5,4), (11,10), la spline vincolata con

dati e interpolante i dati nel punto vale:


x=[-5,4,5,11];
y=[6,2,4,10];
z=sqrt(1.8);
d0=10;
dn=4;
s=spline(x,[d0 y dn],z)

La risposta corretta è: 6.72470464e+00

• Data la funzione , l'espressione del polinomio che la interpola su 7

nodi equidistanti dell'intervallo e' ?

La risposta corretta è: si', perche' il polinomio interpolante ha grado minimo minore o uguale a 6

14
• Sia e sia il polinomio interpolante
nell'intervallo in nodi di Chebyshev. Quanto vale, approssimato alla quarta cifra
decimale, il coefficiente del temine di grado 1 del polinomio?

N.B. Si ricorda che nodi di Chebyshev nell'intervallo sono dati dalla


formula seguente:

f=@(x) sqrt(1+x.^2);
a=0;
b=5;
n=4;
for i=1:(n+1)
t(i)=-cos((((2.*i)-1)*pi)./(2*(n+1)));
x(i)=(((b-a)/2).*t(i))+((b+a)/2);
end
y=f(x);
c=polyfit(x,y,n)
% I coeff. vanno in ordine decrescente: il primo è il coeff. di grado massimo,
l’ultimo è il termine noto, il coeff. del termine di grado 1 è il penultimo.

La risposta corretta è: 0.1166

• Assegnati i dati (3,8), (6,4), (7,5), (14,5), (21,7), il polinomio interpolante i dati nel
punto vale:
n=5;
x=[3,6,7,14,21];
y=[8,4,5,5,7];
c=polyfit(x,y,(n-1));
z=exp(0.7);
p=polyval(c,z)

La risposta corretta è: 1.38377686e+01

• Sia e . Si trovi il polinomio interpolante i


dati . Il coefficiente del monomio di secondo grado vale circa:
n=4;
x=[1,2,3,4];
y=[1,-1,1,-1];
c=polyfit(x,y,(n-1))
% c = coeff. 3^grado coeff. 2^grado coeff. 1^grado termine noto

La risposta corretta è: 10

15
• Qual e' l'espressione del polinomio interpolante la funzione

in nodi equispaziati dell'intervallo ?


n=9;
f=@(x) x.^5-2.*x.^3+1;
x=linspace(0,1,9);
y=f(x);
c=polyfit(x,y,(n-1))

La risposta corretta è:

• Il coefficiente del termine di grado massimo del polinomio interpolante la

funzione
in punti equispaziati dell'intervallo vale all'incirca:
n=8;
f=@(x) 1./(x.^3+5);
x=linspace(0,1,n);
y=f(x);
c=polyfit(x,y,(n-1)) % il coeff. di grado massimo è il primo

La risposta corretta è:

• Interpolare la funzione con un polinomio di grado (al piu') 6 usando un


opportuno numero di nodi equidistanti dell'intervallo , estremi inclusi.
Approssimare la norma infinito dell'errore di interpolazione, valutandolo in punti
equidistanti dell'intervallo . Essa vale all'incirca...
n=7;
f=@(x) exp(x)./(x.^2+1);
x=linspace(-1,1,n);
y=f(x);
z=linspace(-1,1,100);
c=polyfit(x,y,6);
p=polyval(c,z);
err=abs(f(z)-p);
norm(err,inf)

La risposta corretta è:

16
3 Sistemi lineari determinati

• Sia una matrice simmetrica tridiagonale di ordine con gli elementi della diagonale
principale uguali a e quelli delle codiagonali (inferiore e superiore) uguali a . Sia una
matrice di ordine , il cui esimo vettore colonna e' definito da elementi
equispaziati in , . Risolvere i sistemi . La

norma del vettore vale all'incirca:


A=6*eye(18)+3*diag(ones(17,1),1)+3*diag(ones(17,1),-
1); x=zeros(18,3);
for j=1:3
b=linspace(0,j,18)';
x(:,j)=A\b;
end
s=sum(x,2);
norm(s)

La risposta corretta è:

• Si calcoli la fattorizzazione della matrice A=hilb(4). Indicando con i vettori


colonna della base canonica di , la matrice di permutazione che si ottiene e':
P =
A=hilb(4); 1=e1 0 0 0
[L,U,P]=lu(A); 0 0 1=e2 0
P 0 1=e3 0 0
0 0 0 1=e4

La risposta corretta è:

• Qual e' tra quelli proposti il metodo piu' efficiente per risolvere il sistema
lineare con quadrata, densa, di piccole dimensioni e non singolare?

La risposta corretta è: calcolare la fattorizzazione di

• Siano assegnati la matrice e il vettore . L'istruzione Matlab per risolvere il


sistema e'

La risposta corretta è: x = A\b;

17
• Sia una matrice quadrata di dimensione che ha coefficienti pari a sulla
diagonale principale, coefficienti pari a sulla prima sovra e sotto diagonale e coefficienti
pari a sulla decima sovra e sotto diagonale. Si calcoli il numero di condizionamento di in
norma infinito, approssimando alla prima cifra decimale.
A=4*eye(100)+(-1)*diag(ones(99,1),1)+(-1)*diag(ones(99,1),-1)+(-2)*diag(ones(
90,1),10)+(-2)*diag(ones(90,1),-10);
cond(A,inf)

La risposta corretta è: 576.5

• La seconda componente della soluzione del sistema lineare con

vale:

A=[6*pi,3,7;6,9,-1;-3,-2,7];
b=[log(2),6,pi*(-2)]';
x=A\b;
x(2)

La risposta corretta è: 0.4467

• Nell'applicazione del metodo delle eliminazioni di Gauss al sistema

lineare con , la strategia del pivoting parziale


e' superflua?
La risposta corretta è: si, perche' la matrice e' a diagonale dominante per colonne

• Il numero di condizionamento in norma infinito della matrice e'

A=[4,6;3/5,1];
cond(A,inf)

La risposta corretta è: 175

18
• Sia un sistema lineare di ordine , ove e' simmetrica e tridiagonale con tutti gli
elementi uguali a sulla diagonale principale e uguali a sulle codiagonali superiore e

inferiore e ha elementi equispaziati in . Calcolare gli autovalori della matrice e, in


base alla proprieta' di quest'ultimi, risolvere il sistema lineare mediante la
risoluzione di due sistemi triangolari, utilizzando la fattorizzazione di
piu' efficiente in termini di costo computazionale. La norma del vettore ottenuto come
somma del vettore soluzione del sistema triangolare inferiore associato al metodo e del vettore
soluzione del sistema triangolare superiore, vale all'incirca:
A=6*eye(18)+3*diag(ones(17,1),1)+3*diag(ones(17,1),-1);
b=linspace(5,8,18)';
R=chol(A);
y=R'\b;
x=R\y;
s=x+y;
norm(s,1)

La risposta corretta è:

• Si applichi il primo passo del metodo delle eliminazioni di Gauss al sistema lineare ,

con
Come cambiano la matrice e il vettore ?
Il primo passo consiste nel manipolare la matrice (A|b) in modo tale da
avere tutti zeri sotto il primo elemento della prima riga (2).

La risposta corretta

è: e

• Se la matrice del sistema e' simmetrica definita positiva

La risposta corretta è: il comando chol fornisce una matrice triangolare superiore

19
• L'elemento del fattore di Cholesky della matrice

A=[6*pi,3,2,1;3,7*pi,1,0;2,1,6,0;1,0,0,4];
R=chol(A);
R(3,3)

La risposta corretta è: 2.4013

• Per risolvere un sistema diagonale di dimensione si puo' usare la sequenza


di comandi
La risposta corretta è: x=b./diag(A)

• Il metodo di eliminazione gaussiana

La risposta corretta è: fornisce la soluzione esatta se usato con una aritmetica di


precisione infinita

20
4 Sistemi lineari sovradeterminati e problemi di regressione

• Si considerino le seguenti informazioni riguardanti la velocita' di un corpo in funzione del


tempo:
Tempo(s): [0, 8, 18]
Velocita'(m/s): [44, 43, 67]
Approssimando i dati mediante la retta dei minimi quadrati, che velocita' ha il
corpo dopo secondi?
x=[0, 8, 18];
y=[44, 43, 67];
c=polyfit(x,y,1); % chiede una retta, perciò deve essere di 1^grado
z=2;
polyval(c,z)

La risposta corretta è: 4.25081967e+01

• Si costruisca la parabola approssimante nel senso dei minimi quadrati la nuvola di punti
con coordinate
x=[-2 -1.3 -1 -0.7 -0.4 -0.1]
y=[0.3 0.5 1.5 1.3 0.8 0.1]
Quanto vale, approssimando, la quantita' ?
x=[-2, -1.3, -1, -0.7, -0.4, -0.1];
y=[0.3, 0.5, 1.5, 1.3, 0.8, 0.1];
c=polyfit(x,y,2); % chiede una parabola, perciò deve essere di 2^grado
z=3;
p=polyval(c,z);
abs(p-1.5)

La risposta corretta è: 17.7300

• Il coefficiente angolare della retta che approssima nel senso dei minimi quadrati l'insieme di
punti:
x=[0.2 1.14 0.54 0.87 1.25 2.36 0.19 0.54 0.51 0.33] y=[1.25
2.36 2.58 1.87 2.68 3.41 0.65 0.47 1.36 1.25 ] vale:
x=[0.2, 1.14, 0.54, 0.87, 1.25, 2.36, 0.19, 0.54, 0.51, 0.33];
y=[1.25, 2.36, 2.58, 1.87, 2.68, 3.41, 0.65, 0.47, 1.36, 1.25];
c=polyfit(x,y,1)
% Il coeff. angolare è il primo termine di c

La risposta corretta è: 1.187

21
• Si costruisca la matrice , dove e' ottenuta tramite il comando magic(20)
e e' la matrice identita'. Si estragga successivamente da la sottomatrice costituita dalle
prime 10 colonne di e si consideri il sistema sovradeterminato con costruito in modo
che il vettore con tutti elementi uguali a 1 sia soluzione. Si risolva il sistema lineare usando
la fattorizzazione QR, e sia la soluzione ottenuta. Si calcoli inoltre la soluzione
ottenuta con il comando backslash di MATLAB. Si calcolino per entrambe le soluzioni gli errori
relativi in norma 2 rispetto alla soluzione esatta, indicandoli ed . Si ha...

B=magic(20)+eye(20);
A=B(:,1:10);
x=ones(10,1);
b=A*x;
[Q,R]=qr(A);
xQR=R\(Q'*b);
xBS=A\b;
errQR=norm(abs(xQR-x)/abs(x))
errBS=norm(abs(xBS-x)/abs(x))

La risposta corretta è:

• Supporre di avere effettuato le seguenti misurazioni:

in , in , in ,
in . Determinare i coefficienti della somma esponenziale di ordine

uno che meglio approssima nel senso dei minimi quadrati i dati
assegnati e la norma del residuo a essa corrispondente.
(suggerimento: effettuare la sostituzione )

x=[0,1,2,3];
y=[1,2,4,8];
z=exp(x);
c=polyfit(z,y,1)
p=polyval(c,z);
res=norm(p-y)

La risposta corretta è: All'incirca ,


,e

• Supporre di aver effettuato le seguenti misurazioni:

in ; in ; in .

Quanto valgono i coefficienti e della retta di regressione ?

22
x=[0,1,2];
y=[1,2,4];
c=polyfit(x,y,1)

La risposta corretta è: circa e

• Si costruisca la matrice , dove e' ottenuta tramite il comando magic(60)


e e' la matrice identita'. Si estragga successivamente da la sottomatrice costituita dalle
prime 10 colonne di e si consideri il sistema sovradeterminato con costruito in modo
che il vettore con tutti elementi uguali a 1 sia soluzione. Si risolva il sistema lineare usando
la fattorizzazione QR, e sia la soluzione ottenuta. Si calcoli inoltre la soluzione
ottenuta risolvendo il sistema delle equazioni normali , usando la
fattorizzazione di Cholesky. Si calcolino per entrambe le soluzioni gli errori relativi in norma 2
rispetto alla soluzione esatta, indicandoli ed . Si ha...

C=magic(60)+eye(60);
A=C(:,1:10);
x=ones(10,1);
b=A*x;
[Q,R]=qr(A);
xQR=R\(Q'*b);
RR=chol(A'*A);
y=(RR')\(A'*b);
xEN=RR\y;
errQR=norm(xQR-x)/norm(x)
errEN=norm(xEN-x)/norm(x)

La risposta corretta è:

• Si consideri . Si costruisca il polinomio di


grado approssimante nel senso dei minimi quadrati su nodi equispaziati
nell'intervallo , estremi inclusi. vale circa
n=22;
f=@(x) x.^2.*log(1+x);
x=linspace(0,5,n);
y=f(x);
c=polyfit(x,y,4);
p=polyval(c,2)

La risposta corretta è: 4.4056

23
• Si considerino nodi equispaziati , , compresi tra e ,
estremi inclusi. Si consideri la funzione . La si approssimi con una
parabola usando il metodo dei minimi quadrati applicato ai dati
, . Quanto vale il coefficiente del termine di grado
massimo della parabola?
n=30;
f=@(x) x.*sin(x);
x=linspace(0,1/2*pi);
y=f(x);
c=polyfit(x,y,2)
c = 0.3798 0.5032 -0.0710

La risposta corretta è: 0.3776

• Si vuole determinare il polinomio esponenziale di secondo

grado che approssima nel senso dei minimi quadrati la


nube di punti : x=[0.34 0.19 0.25 0.61 0.47 0.35 0.83] y=[0.58 0.54 0.91 0.28 0.75 1.17
0.38] Il coefficiente di vale circa:
(suggerimento: si effettui la sostituzione )

x=[0.34, 0.19, 0.25, 0.61, 0.47, 0.35, 0.83];


y=[0.58, 0.54, 0.91, 0.28, 0.75, 1.17, 0.38];
z=exp(x);
c=polyfit(z,y,2)

c = -0.1786 0.1665 0.8628

La risposta corretta è: -0.18

24
5 Autovalori e fattorizzazioni di matrici

• Sia data la matrice di ordine le cui componenti sono definite come

Il suo raggio spettrale (cioe' il massimo dei moduli degli autovalori) e' circa
for i=1:12
for j=1:12
if i==j
A(i,j)=2*i;
else if i<j
A(i,j)=(-2)/j;
else if i>j
A(i,j)=2/j;
end
end
end
end
end
aval=eigs(A);
max(abs(aval))

La risposta corretta è: 23.9216

• Eseguire iterazioni del metodo QR applicato alla matrice di Hilbert di ordine .


Posto , l'elemento è dato da
A=hilb(12);
for i=1:8
[Q,R]=qr(A);
A=R*Q;
end
A(3,3)

La risposta corretta è: 4.4739e-02

• Data la matrice di Hilbert di dimensione il numero di condizionamento in norma 2 per il


calcolo dei suoi autovalori e'

La risposta corretta è:

25
• A partire dal vettore unitario, eseguire iterazioni del metodo delle potenze applicato alla
matrice generata con il comando , ove e' un vettore di elementi
equispaziati in . La terza componente dell'approssimazione dell'autovettore di norma 2
unitaria, associato all'autovalore di modulo massimo vale all'incirca:
x=linspace(-1,1,10);
A=vander(x);
z=ones(10,1);
w=z/norm(z);
for i=1:24
z=A*w;
lambda(i+1)=w'*z;
w=z/norm(z);
end
w(3)

La risposta corretta è: 1.4778e-01

• Data la matrice generata con il comando , quanto vale all'incirca la


distanza in norma 2 di dall'insieme delle matrici di rango 5?
A=pascal(8);
[U,S,V]=svd(A);
An=U(:,1:5)*S(1:5,1:5)*V(:,1:5)';
norm(A-An)

La risposta corretta è: 8.3730e-02

• Generare la matrice tridiagonale di ordine con gli elementi


tutti uguali a sulla diagonale principale e uguali a
ea sulle codiagonali superiore e inferiore, rispettivamente. Successivamente,
generare il vettore termine noto con le componenti equispaziate
in e risolvere il sistema lineare , utilizzando la decomposizione ai valori
singolari della matrice .
Indicata con la soluzione del sistema lineare associato alla matrice dei valori singolari
e all'algoritmo richiesto, la quantita' vale all'incirca:
A=9*eye(24)+2*diag(ones(23,1),1)+(-2)*diag(ones(23,1),-1);
b=linspace(0,1,24)';
[U,S,V]=svd(A);
y=S\(U'*b);
x=V*y;
norm(x)+norm(y)

La risposta corretta è:

26
• Generare la matrice di Hilbert di ordine e applicare ad essa
iterazioni del metodo delle potenze inverse per calcolare un'approssimazione

dell'autovalore piu' vicino a , a partire dal vettore unitario.


Successivamente utilizzare il comando eigs per calcolare il valore di riferimento ''esatto''.
L'errore relativo associato all'approssimazione determinata con il metodo delle potenze
inverse vale all'incirca:
n=6;
A=hilb(n);
p=0.2;
z=ones(n,1);
w=z/norm(z);
lambda(1)=p;
[L,U,P]=lu(A-p*eye(n));
for i=1:4
y=L\P*w;
z=U\y;
lambda(i+1)=p+1/(w'*z);
w=z/norm(z);
end
aval=eigs(A,1,p);
err=abs(lambda(i+1)-aval)/abs(aval)

La risposta corretta è:

• A partire dal vettore unitario, eseguire iterazioni del metodo delle potenze inverse applicato
alla matrice generata con il comando di ordine . L'errore assoluto
associato all'approssimazione dell'autovalore più vicino a (si prenda come valore di
riferimento quello ottenuto con il comando eig), vale all'incirca:
n=6;
A=pascal(n);
p=2;
z=ones(n,1);
for i=1:4
w=z/norm(z);
z=(A-p*eye(n))\w;
end
lambda=p+1/(w'*z);
aval=eigs(A,1,p);
err=abs(aval-lambda)

La risposta corretta è: 3.0e-12

• Data la matrice di ordine 4 i cui autovalori sono , , e , quale delle seguenti


affermazioni è vera?

La risposta corretta è: il metodo delle potenze converge a

27
• Sia un vettore costituito da elementi equispaziati in e sia la matrice generata
con il comando . Determinare la matrice di rango piu' vicina in
norma ad . La norma di vale all'incirca:
x=linspace(0,1,10);
A=vander(x);
[U,S,V]=svd(A);
An=zeros(10,10);
for k=1:7
An=An+S(k,k)*U(:,k)*V(:,k)';
end
norm(An,inf)

La risposta corretta è:

• Generare la matrice di Hilbert di ordine e applicare ad essa iterazioni del


metodo delle potenze per determinare un'approssimazione del raggio spettrale
, a partire dal vettore unitario. Successivamente, utilizzare la
definizione , con
autovalore di , per calcolare il valore di riferimento ''esatto''. L'errore relativo associato
all'approssimazione del raggio spettrale determinata con il metodo delle potenze vale all'incirca:
n=12;
A=hilb(n);
z=ones(n,1);
w=z/norm(z);
for i=1:7
z=A*w;
lambda(i)=w'*z;
w=z/norm(z);
end
aval=eig(A);
m=max(abs(aval));
mm=max(abs(lambda));
err=abs(m-mm)/abs(m)

La risposta corretta è:

• Eseguire 6 iterazioni del metodo QR applicato alla matrice di Hilbert di ordine 18. Denotati
con le approssimazioni degli autovalori di e con gli autovalori ottenuti con il comando

eig, il max errore massimo assoluto vale all'incirca:

A=hilb(18);
for i=1:6
[Q,R]=qr(A);
A=R*Q;

28
end
max(abs(diag(A)-eig(A)))

La risposta corretta è: 7.1563e-08

• Sia la matrice di ordine 100 i cui elementi sono dati


da . Sia l'autovalore di più vicino al
valore e sia il corrispondente autovettore, normalizzato in modo da avere
norma euclidea unitaria, . La norma 1 di vale

for i=1:100
for j=1:100
A(i,j)=(1+i+j)/(1+abs(i-j));
end
end
p=100;
[z,D]=eigs(A,1,p);
w=z/norm(z);
norm(w,1)

La risposta corretta è: 8.4837e+00

• Data la matrice

calcolare . La matrice
A=[2,3,4;3,4,6;1,0,3]; B = 14 18 29
B=A'*A 18 25 36
29 36 61

La risposta corretta è: e' diagonalizzabile con matrici ortogonali

29
6 Quiz 1

• Determinare il polinomio interpolante la funzione in nodi


equispaziati dell'intervallo .
Il massimo errore assoluto d'interpolazione in punti equidistanti dell'intervallo
di interpolazione vale all'incirca:
n=10;
f=@(x) exp(-x+x.^3);
x=linspace(-1,1,n);
y=f(x);
c=polyfit(x,y,(n-1));
z=linspace(-1,1,1500);
p=polyval(c,z);
errmax=max(abs(f(z)-p))

La risposta corretta è:

• Sia dove e' la matrice generata dal comando magic(357) e e' la


matrice identita'. Sia il termine noto tale che la soluzione del sistema lineare sia il
vettore di tutti elementi unitari. Si risolva il sistema con il metodo di eliminazione gaussiana
implementato nativamente in MATLAB. Sia la norma infinito del residuo .
Quale tra i seguenti valori e' piu' vicino a ?
A=magic(357)+10*eye(357);
z=ones(357,1);
b=A*z;
x=A\b;
residuo=b-A*x;
nr=norm(residuo,inf)

La risposta corretta è: 4.5e-8

• Valutare per .
Successivamente riformulare al fine di evitare il fenomeno
della cancellazione numerica e, assumendo come valore esatto
quello che si ottiene mediante la riformulazione proposta,
calcolare l'errore relativo associato a . Esso vale all'incirca:
x=10^(-6);
y=5-sqrt(25+x^2);
y_=(-x^2)/(5+sqrt(25+x^2));
err=abs(y-y_)/abs(y_)

La risposta corretta è:

30
• Sia una matrice simmetrica tridiagonale di ordine con gli elementi della diagonale
principale uguali a e quelli delle codiagonali (inferiore e superiore) uguali a .
Sia una matrice di ordine , il cui esimo vettore colonna e' definito da
elementi equispaziati in , .

Risolvere i sistemi . La norma del vettore vale all'incirca:


A=6*eye(18)+3*diag(ones(17,1),1)+3*diag(ones(17,1),-
1); x=zeros(18,3);
for j=1:3
b=linspace(0,j,18)';
x(:,j)=A\b;
end
s=sum(x,2);
norm(s)

La risposta corretta è:

• La spline cubica vincolata e interpolante

La risposta corretta è: e' una funzione polinomiale a tratti continua

• Siano la matrice di Hilbert di ordine (comando hilb), la matrice identita'


e . Sia il vettore colonna tale che la soluzione del sistema
lineare sia il vettore contenente gli opposti dei primi numeri dispari
( ). Sia l'errore assoluto in norma infinito tra la soluzione ottenuta
risolvendo il sistema con il metodo di eliminazione gaussiana implementato nativamente in
MATLAB e la soluzione esatta. Quale tra i seguenti valori e' piu' vicino a ?
A=hilb(15)+(0.001)*eye(15);
z=[-1:-2:-29]';
b=A*z;
x=A\b;
err=norm(abs(x-z),inf)

La risposta corretta è: 1.5e-13

• Sia un vettore di valori equidistanti su e un vettore di valori equidistanti


su . Il prodotto scalare tra e vale circa:
v=linspace(-1,2,18);
w=linspace(2,3,18);
ps=sum(v.*w)

La risposta corretta è: 27.5

31
• Generare la matrice di ordine , il cui generico elemento
e' .
Il condizionamento di in norma e':
for i=1:100
for j=1:100
A(i,j)=sin(min(i,j));
end
end
cond(A,inf)

La risposta corretta è:

• Sia il vettore contenente gli interi tra e (estremi inclusi).

L'espressione vale circa:


v=[1:1:30];
w=1./sqrt(v);
sum(w)

La risposta corretta è: 9.59

• La spline cubica not-a-knot e interpolante una funzione continua

La risposta corretta è: converge a qualunque sia la scelta dei nodi di interpolazione

• Generare la matrice di ordine , il cui generico elemento


e' .
Il condizionamento di in norma e':
for i=1:100
for j=1:100
A(i,j)=sin(1/(min(i,j)));
end
end
cond(A,inf)

La risposta corretta è:

32
7 Quiz 2

• Utilizzare la function spline di Matlab per costruire la spline cubica , soddisfacente


le condizioni not-a-knot
e interpolante la funzione in nodi equispaziati
dell'intervallo .
Il massimo errore assoluto d'interpolazione in punti equidistanti dell'intervallo di
interpolazione vale all'incirca:
f=@(x) cos(x);
x=linspace(-1,1,12);
y=f(x);
z=linspace(-1,1,120);
s=spline(x,y,z);
maxerr=max(abs(f(z)-s))

La risposta corretta è:

• Qual e' l'espressione del polinomio interpolante la funzione

in nodi equispaziati dell'intervallo


?
f=@(x) x.^6-2.*x.^4+x.^3-2;
x=linspace(0,1,9);
y=f(x);
polyfit(x,y,8)

La risposta corretta è:

• Si consideri . Si costruisca il polinomio di grado interpolante su


nodi equispaziati nell'intervallo , includendo gli estremi nei nodi di interpolazione. Il
valore di e' circa
f=@(x) cos(1./x);
x=linspace(0.2,1,3);
y=f(x);
c=polyfit(x,y,2);
abs(f(0.8)-polyval(c,0.8))

La risposta corretta è: 0.2200

33
• Sia un sistema lineare di ordine , ove e' simmetrica e tridiagonale con tutti
gli elementi uguali a sulla diagonale principale e uguali a sulle codiagonali superiore e
inferiore e ha elementi equispaziati in .
Calcolare gli autovalori della matrice e, in base alla proprieta' di quest'ultimi, risolvere il
sistema lineare mediante la risoluzione di due sistemi triangolari, utilizzando la
fattorizzazione di piu' efficiente in termini di costo computazionale.
La norma del vettore ottenuto come somma del vettore soluzione del sistema
triangolare inferiore associato al metodo e del vettore soluzione del sistema triangolare
superiore, vale all'incirca:
A=12*eye(44)+4*diag(ones(43,1),1)+4*diag(ones(43,1),-1);
b=linspace(10,12,44)';
R=chol(A);
y=R'\b;
x=R\y;
norm(x+y,inf)

La risposta corretta è:

• Sia la matrice di Hilbert (comando hilb) di dimensione . Il numero di elementi tali


per cui e':
A=hilb(30);
n=0;
for i=1:30
for j=1:30
if sin(A(i,j))>0.03
n=n+1;
end
end
end
n

La risposta corretta è: 549

• L'equazione con ha
nell'intervallo
f=@(x) exp(-sin(5.*x)).*x.^2-x;
x=linspace(-2,2);
y=f(x);
plot(x,y)
% tracciando una retta y=0, si vede quante volte interseca con il grafico

La risposta corretta è: radici reali

34
• Valutare per .
Successivamente riformulare al fine di evitare
il fenomeno della cancellazione numerica e,
assumendo come valore esatto quello che si
ottiene mediante la riformulazione proposta,
calcolare l'errore relativo associato a .
Esso vale all'incirca:
x=10^-10;
f=@(x) sqrt((exp(x)-1)/x);
yerr=f(x);
f2=0;
for i=1:10
f2=f2+x^(i-1)/factorial(i);
end
y=sqrt(f2);
err=abs(y-yerr)/abs(y)

La risposta corretta è:

• Si consideri . Si costruisca il
polinomio interpolante nei punti di
ascissa . Il valore di e' circa
f=@(x) 1+x.^2.*log(2+x);
x=[0.3,0.6,0.9,1.2,1.5];
y=f(x);
c=polyfit(x,y,4);
abs(f(3)-polyval(c,3))

La risposta corretta è: 0.2034

• Sia la matrice di Hilbert (comando hilb) di dimensione . Sia la matrice ottenuta


estraendo le colonne multiplo di 5 (ovvero ) e le righe pari di . La
somma di tutti gli elementi di vale circa:
A=hilb(150);
B=A(2:2:150,5:5:150);
s=0;
for i=1:75
for j=1:30
s=s+B(i,j);
end
end
s

La risposta corretta è: 19.65

35
• Sia la matrice di Hilbert (comando hilb) di dimensione . La somma degli elementi
di minori di vale:
A=hilb(90);
s=0;
for i=1:90
for j=1:90
if A(i,j)<0.07
s=s+A(i,j);
end
end
end
s

La risposta corretta è: 110.3

• Si costruisca la parabola approssimante nel senso dei minimi quadrati la nuvola di punti
con coordinate
x=[-2 -1.3 -1 -0.7 -0.4 -0.1]
y=[0.3 0.5 1.5 1.3 0.8 0.1]
Quanto vale, approssimando, la quantita' ?
x=[-2, -1.3, -1, -0.7, -0.4, -0.1];
y=[0.3, 0.5, 1.5, 1.3, 0.8, 0.1];
c=polyfit(x,y,2);
abs(polyval(c,3)-1.5)

La risposta corretta è: 17.7300

• Si consideri . Si costruisca la retta approssimante nel senso dei minimi


quadrati su nodi equispaziati nell'intervallo , estremi inclusi. vale circa
f=@(x) sin(x)./(x.^2+1);
x=linspace(-1,1,10);
y=f(x);
c=polyfit(x,y,9);
polyval(c,0.4)

La risposta corretta è: 0.2150

36
8 Quiz 3

• Il valore massimo della

funzione nell'intervallo vale all'incirca


f=@(x) exp(-x).*cos(x.^2);
x=linspace(-3,-2);
y=f(x);
max(y)

La risposta corretta è:

• Utilizzare la function spline di Matlab per costruire la spline cubica vincolata ,

soddisfacente le condizioni e e

interpolante la funzione in nodi equispaziati


dell'intervallo .
Il massimo errore assoluto d'interpolazione in punti equidistanti dell'intervallo di
interpolazione e':
f=@(x) x.^5.*log(x);
x=linspace(1,2,35);
y=f(x);
d=@(x) 5.*x.^4.*log(x)+x.^4;
z=linspace(1,2,500);
s=spline(x,[d(1) y d(2)],z);
maxerr=max(abs(f(z)-s))

La risposta corretta è:

• Sia la matrice di Hilbert di ordine (comando hilb) e sia il vettore colonna contenente i
primi numeri pari strettamente positivi. Si risolva il sistema lineare con il
metodo di eliminazione gaussiana implementato nativamente in MATLAB. La terza
componente della soluzione vale circa
H=hilb(10);
b=[2:2:20]';
x=H\b;
x(3)

La risposta corretta è: -4.7e+6

37
• Sia un vettore costituito da elementi equispaziati in e sia la matrice generata con
il comando .
Determinare la matrice di rango piu' vicina in norma ad . La norma di
vale all'incirca:
x=linspace(4,6,8);
A=vander(x);
[U,S,V]=svd(A);
An=zeros(8,8);
for k=1:5
An=An+S(k,k)*U(:,k)*V(:,k)';
end
norm(An,1)

La risposta corretta è:

• Generare la matrice di Hilbert di ordine e applicare ad essa


iterazioni del metodo delle potenze inverse per calcolare un'approssimazione

dell'autovalore piu' vicino a , a partire dal vettore unitario.


Successivamente, utilizzare il comando eigs per calcolare il valore di riferimento ''esatto''.
L'errore relativo associato all'approssimazione determinata con il metodo delle
potenze inverse vale all'incirca:
A=hilb(8);
p=1.5;
z=ones(8,1);
w=z/norm(z);
lambda(1)=p;
[L,U,P]=lu(A-p*eye(8));
for i=1:6
y=L\P*w;
z=U\y;
lambda(i+1)=p+1/(w'*z);
w=z/norm(z);
end
aval=eigs(A,1,p);
err=abs(aval-lambda(i+1))/abs(aval)

La risposta corretta è:

• Il coefficiente del termine di grado massimo del polinomio interpolante la funzione

in punti equispaziati dell'intervallo vale all'incirca:


f=@(x) 1./(x.^3+8);
x=linspace(-1,1,7);
y=f(x);
c=polyfit(x,y,6);
c(1)

La risposta corretta è:

38
• In un calcolatore i numeri vengono rappresentati in aritmetica floating-point, con
base , cifre di mantissa e tecnica di arrotondamento rounding to even. Assegnati i
numeri
e si effettua
l'operazione .
Dire in quale dei seguenti casi si presenta il fenomeno della cancellazione numerica.
Per t=2: a=0.02. b=-0.02

La risposta corretta è: per

• In un calcolatore i numeri vengono rappresentati in aritmetica floating-point, con


base , cifre riservate alla mantissa e tecnica di arrotondamento "rounding
to even", si effettua l'operazione .
Detta la precisione di macchina, l'errore relativo sul risultato ottenuto e'
Per definizione, l’errore di macchina è la massima precisione relativa
di calcolo raggiungibile.

La risposta corretta è:

• In un calcolatore i numeri vengono rappresentati in aritmetica floating-point, con


base , cifre riservate alla mantissa e tecnica di arrotondamento ''rounding to
even''.
Assegnati i numeri e , si effettua
l'operazione . Si ha
a=0.1*10;
b=0.5*10^4; s = 0.5001e4
s=a+b s_= 0.5e4

La risposta corretta è:

• Il valore minimo della funzione nell'intervallo vale all'incirca


f=@(x) -exp(-x).*x.^3;
x=linspace(1,5);
y=f(x);
min(y)

La risposta corretta è:

39

Potrebbero piacerti anche