Quale delle seguenti istruzioni MATLAB esegue il calcolo del raggio spettrale di una matrice quadrata A? a. max(eig(abs(A))) b. max(abs(eig(A))) c. abs(max(eig(A))) d. max(abs(eig(A’*A))) Motivazione teorica: Il raggio spettrale di una matrice quadrata A è il massimo degli autovalori di A presi in valore assoluto. In Matlab: - il comando eig(A) calcola gli auto valori di A - il comando abs(eig(A)) individua i valori assoluti degli autovalori di A - il comando max(abs(eig(A))) individua il massimo tra i valori assoluti degli autovalori di A Se per risolvere (con l’ausilio di un calcolatore) un problema numerico si fa ricorso ad un metodo iterativo, da quale tipo di errore sarà affetta, in generale, la soluzione trovata? a. solo da errori di troncamento del processo iterativo b. solo da errori di arrotondamento c. sia da errori di troncamento del processo iterativo che da errori di arrotondamento d. dipende dal metodo iterativo, da come viene implementato e da quante iterazioni vengono compiute Motivazione teorica: Nell’implementazione di ogni metodo iterativo è necessario fissare un numero massimo di iterazione e un errore massimo ammissibile, questi vengono posti come condizione del ciclo while che realizza l’iterazione. Quando una di queste due condizioni è verificata il processo iterativo viene troncato. Il risultato trovato sarà affetto sia da errori di troncamento del processo iterativo sia da errori di arrotondamento, dovuti all’aritmetica discreta del calcolatore. Quale delle seguenti rappresentazioni del numero reale 1254.3 è in virgola mobile normalizzata? a. b. c. d. 1.2543*103 0.12543*104 0.012543*105 1254.3*100 Motivazione teorica: Ogni numero reale a può essere scritto nella forma a=p*Nq dove p è un reale, N è la base del sistema di numerazione scelto e q è un intero positivo, negativo o nullo. La rappresentazione di a#0 si dice normalizzata quando N-1<=|p|<1 ossia quando la prima cifra di p (dopo il punto decimale) è diversa da zero. p e q vengono chiamate rispettivamente mantissa e caratteristica del numero a. Fissata la base N, ogni numero reale a#0 è univocamente definito dalla coppia (p;q). Dovete risolvere con il metodo di Jacobi uno dei due sistemi lineari non omogenei D*x = c e E*x = c, le cui matrici associate e il vettore dei termini forzanti sono: Per quale dei due sistemi la convergenza è assicurata? a. solo per il sistema D*x = c b. solo per il sistema E*x = c c. per entrambi i sistemi d. per nessuno dei due sistemi Motivazione teorica (obbligatoria): Condizione sufficiente per la convergenza del metodo è che la matrice considerata sia a diagonale dominante, cioè: |aii|>∑|aij|, i=1,..,n j=1,…,n; j#i Nel caso della matrice D 9>5+1+1=7 6>1+0+0=1 8>1+3+3=7 10>8+0+1=9 D è a diagonale dominante Nel caso della matrice E 9>0+3+3=6 7>0+1+4=5 8<6+5+5=16 7>2+1+2=5 E non è a diagonale dominante Quando si può utilizzare il metodo della doppia passata per risolvere un sistema lineare A*x = b ? a. quando la matrice A è diagonale b. quando la matrice A è tridiagonale c. quando la matrice A è triangolare inferiore d. quando la matrice A è triangolare superiore Motivazione teorica: Il metodo della doppia passata, mediante il calcolo dei coefficienti alfa e beta, trasforma: - la matrice tridiagonale di partenza in una matrice in cui la diagonale principale ha tutti valori pari ad uno e la diagonale immediatamente sopra la principale ha come valori i coefficienti alfa; - il vettore dei termini noti in un vettore contenente tutti i coefficienti beta. Questa matrice rappresenta un sistema che può essere immediatamente risolto per sostituzione partendo dall’ultima equazione. Per risolvere con il metodo di Jacobi, in ambiente MATLAB, un sistema lineare A*x = b di ordine n utilizzando la formula iterativa è necessario definire la seguente matrice di iterazione B (matrice di Jacobi): a. B = eye(n) – inv(diag(diag(A)))*A b. B = eye(n) – diag(diag(inv(A)))*A c. B = eye(n) – diag(inv(diag(A)))*A d. B = eye(n) – A*inv(diag(diag(A))) Motivazione teorica (obbligatoria): La risoluzione del sistema lineare Ax=b mediante il metodo di Jacobi prevede: decomposizione della matrice A nella forma A=D+C scrittura del sistema nella forma Dx=-Cx+b Partendo da un generico vettore di tentativo iniziale x(0), possiamo scrivere la successione x(1), x(2),.. innescando il procedimento iterativo Dx(k+1)=d(k), k=0,1,.. dove d(k)=-Cx(k)+b. x(k+1)=-D-1Cx(k)+D-1b Ponendo B=-D-1C=I-D-1A % matrice di iterazione x(k+1)=Bx(k)+D-1b La scelta di D deve essere fatta in modo da semplificare la risoluzione del sistema. D generalmente è una matrice diagonale o tridiagonale tale che detD#0. Possiamo definire D come una matrice diagonale i cui elementi diversi da zero sono gli elementi della diagonale principale di A. In Matlab D viene definita come: D=diag(diag(A)); In laboratorio avete appena eseguito m misure sperimentali e vi ponete il problema di trovare una funzione continua f che ‘approssimi’ i dati ottenuti. Le vostre misure sono in numero elevato (m>>1) e caratterizzate da incertezza legata alla sensibilità dello strumento a vostra disposizione. Come procedereste per determinare la funzione f che cercate? a. mediante il metodo del polinomio interpolante di Lagrange b. mediante il metodo dei minimi quadrati per la ricerca dei coefficienti di un polinomio di grado g << m c. mediante il metodo dei minimi quadrati per la ricerca dei coefficienti di un polinomio di grado g = (m-1) d. mediante un altro metodo (specificare quale) Motivazione teorica (obbligatoria): Il metodo del polinomio interpolante di Lagrange prevede la determinazione di un polinomio con m coefficienti, cioè di grado (m-1) e quindi la risoluzione di un sistema quadrato di ordine m. La matrice dei coefficienti del sistema da risolvere sarà una matrice di Vandermonde di ordine m elevato, quindi mal condizionata. Ciò implica che nella risoluzione del sistema ci sarà una forte amplificazione degli errori in seriti in ingresso. Il metodo dei minimi quadrati consente, invece, di approssimare il fenomeno in esame, rappresentato dagli m dati {(xi, yi)}, con una combinazione lineare a coefficienti costanti di g (<<m) funzioni base {(ρ0(x), ρ1(x), …, ρn(x), }. Sono stati ricavati sperimentalmente m = 50 punti di cui è data una rappresentazione grafica in figura. Quale delle seguenti strade vi sembra più opportuno seguire per trovare una ‘approssimazione’ di questi dati? a. ricerca del polinomio interpolante di Lagrange b. ricerca di un polinomio di grado (m-1) mediante il metodo dei minimi quadrati c. ricerca di un polinomio di grado 2 mediante il metodo dei minimi quadrati d. ricerca di un polinomio di grado 1 mediante il metodo dei minimi quadrati Motivazione teorica (obbligatoria): Il metodo dei minimi quadrati consente di ridurre notevolmente il numero di coefficienti da calcolare (g<<m), rispetto al metodo del polinomio interpolante di Lagrange, in cui il numero dei coefficienti da calcolare sarebbe pari a m. Un polinomio di grado 2 consente di approssimare più adeguatamente, rispetto ad una retta, l’andamento dei punti individuati. Qualora si voglia stimare, utilizzando il metodo di bisezione ed eseguendo 10 iterazioni, il punto di zero di una funzione non lineare f(x) nell’intervallo [-5.12,5.12], cosa si può dire dell’errore assoluto che si commetterà? a. che è certamente maggiore o uguale a 5*10-3 b. che è uguale 5*10-3 c. che è certamente minore o uguale a 5*10-3 d. non si può dire niente di preciso finché non conosciamo la funzione f(x) Motivare la risposta utilizzando adeguati strumenti teorici e computazionali (obbligatorio): Supponiamo che f(x) sia continua nell’intervallo [-5.12,5.12] e che f(-5.12)*f(5.12)<0 (esiste cioè un punto di zero della f(x) nell’intervallo considerato). Il metodo prevede la costruzione di intervalli incapsulati tra loro, tutti contenenti una radice dell’equazione f(x)=0 con (bn-an)Æ0 per nÆ∞. Ad ogni iterazione, l’intervallo successivo viene individuato determinando il punto medio dell’intervallo precedente: mn=1/2(an-1+bn-1). L’intervallo successivo sarà la meta dell’intervallo precedente contenente ancora il punto di zero della f(x). Dopo n passi si giunge all’intervallo (an,bn) di ampiezza: bn-an=(bn-1-an-1)/2=(bn-2-an-2)/22=…=(b0-a0)/2n Come stima della radice cercata ε, si considera mn+1=1/2(an+bn) ε=mn+1+en+1 |en+1|<(b0-a0)/2n+1 E’ quindi possibile calcolare a priori l’errore massimo che si commetterà. Questo è funzione degli estremi dell’intervallo considerato e del numero di iterazioni che si vogliono compiere. LISTATO a=-5.12; b=5.12; nmax=10; display('errore massimo che si commetterà'); maxerr=(b-a)/(2^(nmax+1)) OUTPUT MATLAB errore massimo che si commetterà maxerr = 0.0050 Implementare un programma MATLAB per calcolare, utilizzando la formula dei trapezi ripetuta e un numero di sottointervalli M = 10, ciascuno di ampiezza h = (b-a)/M, l’integrale (FACOLTATIVO) Ricavare la formula di Simpson ripetuta per il calcolo dell’integrale di una funzione f(x) su un intervallo [a,b] suddiviso in M sottointervalli, ciascuno di ampiezza (b-a)/M. >> a=2; >> b=10; >> fun=@(x) (x.^3).*(log(x)); >> q=quad(fun,a,b) q= 5.1297e+003 >>