Esercitazione 1-I parte

Documenti analoghi
Sistemi lineari. 2x 1 + x 2 x 3 = 2 x 1 x 2 + x 3 = 1 x 1 + 3x 2 2x 3 = 0. x 1 x 2 x 3

2. Risolvere con il metodo di eliminazione di Gauss con pivoting parziale il seguente sistema lineare:

Corso di Matematica per la Chimica

Metodi diretti: eliminazione gaussiana

Esercizi su algebra lineare, fattorizzazione LU e risoluzione di sistemi lineari

Sistemi lineari. Lucia Gastaldi. DICATAM - Sez. di Matematica,

Laboratorio di Calcolo Numerico Laboratorio 11: Metodi diretti per la soluzione di sistemi lineari

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Per esempio, una matrice 4 4 triangolare alta ha la forma. 0 a. mentre una matrice di ordine 4 triangolare bassa è del tipo

RISOLUZIONE DI SISTEMI LINEARI

Programmare con MATLAB c Parte 5 Cicli: for e while

Introduzione al MATLAB c Parte 3 Script e function

Corso di Calcolo Numerico

Argomento 13 Sistemi lineari

Esercitazione 5: Sistemi a risoluzione immediata.

Motivazioni. Sistemi lineari. Obiettivo. Il problema

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Sistemi lineari - Parte Seconda - Esercizi

MATLAB:Condizionamento Sistemi Lineari.

Esercitazione 4: Vettori e Matrici

Trasformazione elementari di Givens

ALGEBRA LINEARE PARTE III

Sistemi di equazioni lineari

Problema. Sistemi lineari. Problema. Problema. Quali sono i potenziali in ogni nodo? Leggi di Kirkoff e di Ohm:

Elementi di Algebra Lineare Matrici e Sistemi di Equazioni Lineari

Esercitazione di Calcolo Numerico 1 22 Aprile Determinare la fattorizzazione LU della matrice a 1 1 A = 3a 2 a 2a a a 2 A =

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014

Motivazione: Come si fa? Matrici simmetriche. Fattorizzazioni di matrici speciali

Geometria BIAR Esercizi 2

Corso di Matematica Generale M-Z Dipartimento di Economia Universitá degli Studi di Foggia ALGEBRA LINEARE. Giovanni Villani

Sistemi lineari. a 11 x 1 + a 12 x a 1n x n = b 1 a 21 x 1 + a 22 x a 2n x n = b 2 : : : a m1 x 1 + a m2 x 2 +..

Transcript:

Esercitazione 1-I parte Argomento: Sistemi triangolari Scopo: Implementare il metodo di sostituzione all indietro per la risoluzione di sistemi triangolari superiori. function x=indietro(a,b) Sintassi x=indietro(a,b) Risolve un sistema triangolare superiore utilizzando il metodo di sostituzione all indietro Parametri di input: A = Matrice triangolare superiore b = Vettore colonna Parametri di output: x = Vettore soluzione n=length(b); x=zeros(n,1); if abs(a(n,n))<eps error( La matrice A e singolare ); x(n)=b(n)/a(n,n); for k=n-1:-1:1 x(k)=b(k); for i=k+1:n x(k)=x(k)-a(k,i)*x(i); if abs(a(k,k))<eps error( La matrice A e singolare ); else x(k)=x(k)/a(k,k); 1

Esercitazione 1-II parte Argomento: Il metodo di eliminazione di Gauss Scopo: Risoluzione di un sistema lineare Ax = b utilizzando il metodo di eliminazione di Gauss senza strategie di pivoting. function x=gauss(a,b); Sintassi x=gauss(a,b) Risolve un sistema lineare utilizzando il metodo di eliminazione di Gauss Parametri di input: A = Matrice dei coefficienti b = Vettore dei termini noti Parametri di output: x = Vettore soluzione [m, n]=size(a); if m =n if length(b) =n for k=1:n if abs(a(k,k))<eps error( Elemento pivotale nullo ); for i=k+1:n A(i,k)=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-A(k,j)*A(i,k); b(i)=b(i)-b(k)*a(i,k); 2

x=indietro(a,b); Esempi di applicazione: Per verificare il funzionamento dell algoritmo si può applicare ad un sistema lineare avente una matrice dei coefficienti a predominanza diagonale per colonne. >> A=[6 4 1 0;-1 8 1 1;3 0 6-3;1-2 1 7] >> b=[1;2;3;4] >> x=gauss(a,b) Per verificare invece che il metodo di Gauss non funziona se la matrice dei coefficienti ammette un minore principale uguale a zero si può applicarlo in questa circostanza e verificare che la routine appena scritta segnala tale circostanza. >> A=[1 1 2 1 0;2 1 3 1-4;-1-1 -2 3 0;4 2-1 1 0;5 2-2 1 7] >> b=[1;2;3;4;5] >> x=gauss(a,b) Ci sono casi in cui il metodo di eliminazione di Gauss può fornire una soluzione del sistema molto diversa da quella teorica. Vediamo il seguente esempio: scegliamo come matrice dei coefficienti una cosiddetta matrice di Hilbert, definita nel seguente modo: h ij = 1 i+j 1 i,j = 1,...,n. Per esempio se n = 4 la matrice sarebbe 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 H = 1/3 1/4 1/5 1/6. 1/4 1/5 1/6 1/7 Proviamo ora ad applicare il metodo di Gauss ad un sistema di dimensione 15 avente come matrice dei coefficienti quella di Hilbert e come soluzione il vettore avente tutte le componenti uguali a 1 e confrontiamo la soluzione che ci fornisce il metodo di Gauss con quella teorica. 3

>> clear >> format long e >> n=15; >> A=hilb(n); >> x=ones(n,1); >> b=a*x; >> y=gauss(a,b) >> norm(x-y, inf ) Le prime due istruzioni servono rispettivamente a cancellare tutte le variabili presenti nell area di lavoro del MatLab e a scrivere i valori delle variabili in formato esponenziale lungo, cioè con 15 cifre decimali. La funzione hilb(n) assegna ad una variabile la matrice di Hilbert della dimensione indicata. Il vettore b viene assegnato in modo tale che la soluzione del sistema, cioè il vettore colonna x, sia nota. Nella variabile y viene memorizzata la soluzione del sistema calcolata utilizzando il metodo di Gauss. L ultima istruzione serve a dare una misura della differenza tra la soluzione teorica del sistema e quella calcolata utilizzando la funzione norm che, in questo caso, misura la norma infinito della differenza tra i due vettori, cioè il massimo valore assoluto del vettore differenza x-y. Possibili modifiche: La routine appena descritta segnala errore non appena viene incontrato un elemento pivotale molto piccolo in modulo e non utlizza alcuna strategia di pivoting. Si potrebbe inserire la ricerca dell elemento di massimo modulo sulla k-esima colonna della matrice e scambiando opportunamente due righe di A e i due corrispondenti elementi di b. 4

Esercitazione 1-III parte Argomento: Il metodo di eliminazione di Gauss con pivot parziale Scopo: Risoluzione di un sistema lineare utilizzando il metodo di eliminazione di Gauss con strategia di pivoting parziale. function x=gausspiv(a,b); Sintassi x=gausspiv(a,b) Risolve un sistema lineare utilizzando il metodo di eliminazione di Gauss con pivoting parziale Parametri di input: A = Matrice dei coefficienti b = Vettore dei termini noti Parametri di output: x = Vettore soluzione [m, n]=size(a); if m =n if length(b) =n for k=1:n [pivot indice]=max(abs(a(k:n,k))); riga=indice+k-1; if riga =k A([riga k],:)=a([k riga],:); b([riga k])=b([k riga]); if abs(a(k,k))<eps error( Elemento pivotale nullo ); for i=k+1:n 5

A(i,k)=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-A(k,j)*A(i,k); b(i)=b(i)-b(k)*a(i,k); x=indietro(a,b); Esempi di applicazione: Si può applicare la funzione ad un sistema lineare la cui matrice dei coefficienti ha un minore principale uguale a zero e verificare che in questo caso essa fornisce la soluzione del sistema. >> A=[1 1 2 1 0;2 1 3 1-4;-1-1 -2 3 0;4 2-1 1 0;5 2-2 1 7] >> b=[1;2;3;4;5] >> x=gausspiv(a,b) 6