Sei sulla pagina 1di 1

Calcolo Scientifico e Matematica Numerica Corso di Laurea in Informatica, A.A. 2011-2012 Esercitazione n.

4
Prima Parte
Lalgoritmo classico, denominato metodo di sostituzione in avanti, per la risoluzione di un sistema triangolare inferiore Ly=b di dimensione n, dove il simbolo b denota il termine noto ed il simbolo y denota la soluzione del sistema, il seguente: Algoritmo (metodo di sostituzione in avanti) y1=b1/l11 for i=2,,n yi=bi for j=1,, i-1 yi=yi-lijyj end yi=yi/lii end Scrivere uno SCRIPT file in MatLab che a) generi un problema del tipo Ly=b di dimensione n con L e b contenenti numeri casuali, la cui soluzione esatta yy sia nota; b) applichi lalgoritmo 1 per trovare la soluzione (approssimata) y; c) stampi la soluzione esatta e la soluzione trovata; d) stampi la norma euclidea, la norma 1 e la norma del massimo dellerrore assoluto y-yy; e) stampi una valutazione dellerrore relativo ||y-yy||/||yy|| mediante norma euclidea, 1 e del massimo. Sperimentare lalgoritmo con n = 10, 20, 40, 60, 80, 100, 200, 300 (in particolare valutare lerrore al crescere di n). Rendere il codice interattivo, consentendo successive scelte della dimensione n. Per ottenere un sistema con numeri casuali, operare nei 2 modi diversi seguenti (ottenendo due problemi con caratteristiche differenti).
1. Mediante la funzione rand(), generare una matrice A casuale di dimensione n i cui elementi

sono tra 0 e 1. Estrarre quindi da A, mediante la funzione tril() predefinita in MatLab, la matrice triangolare inferiore, ottenendo L. Scegliere a caso (con elementi tra 0 e 1) il vettore colonna yy di dimensione n e quindi calcolare b=L*yy. I dati del problema sono n, L e b; yy la soluzione esatta (e conosciuta) del problema.
2. Mediante la funzione rand(), generare una matrice A casuale di dimensione n i cui elementi

sono tra 0 e 1. Estrarre quindi da A, mediante la funzione tril() predefinita in MatLab, la matrice triangolare inferiore ottenendo L. Modifica L ponendo gli elementi nella diagonale principale tutti uguali a 1 (a tale scopo pu essere utile luso delle funzioni diag() ed eye()). Scegliere a caso (con elementi tra 0 e 1) il vettore colonna yy di dimensione n e quindi calcolare b=L*yy. I dati del problema sono n, L e b; yy la soluzione esatta (e conosciuta) del problema.

Seconda Parte
Considerare lalgoritmo metodo di sostituzione allindietro per la risoluzione di un sistema triangolare superiore Ux=y (si osservi che ora il simbolo y denota il termine noto ed il simbolo x denota la soluzione del sistema). Il codice analogo al precedente sviluppato per la risoluzione di un sistema triangolare inferiore nella prima parte dellesercitazione. Ripetere tutti i passi della prima parte dellesercitazione, opportunamente modificati per risolvere il sistema triangolare superiore Ux=y.
Marco Gaviano (gaviano@unica.it)