Che materia stai cercando?

Calcolo numerico - Funzione sislin Appunti scolastici Premium

Appunti per l'esame di calcolo numerico della prof.ssa Alessandra D'alessio sulla Funzione 'sislin', il suo scopo, le sue specifiche, la descrizione dell'algoritmo, la lista dei parametri input, output, la complessità, l'accuratezza e gli esempi d'uso.

Esame di Calcolo numerico docente Prof. A. D'Alessio

Anteprima

ESTRATTO DOCUMENTO

%Controllo errore per dimensioni nulle

if isempty(A)

error ('La matrice è vuota,nulla da calcolare')

end

%Controllo per matrici non quadrate

if(n~=m)

error('Attenzione matrice non quadrata');

end

if isreal(A)==0

error('A deve essere una matrice di reali')

end

%controllo che la matrice b non sia di caratteri

if (ischar(b)==1|| isreal(b)==0)

error('b deve essere una matrice di reali')

end

zero=eps*norm(A,inf); %calcola lo zero per la verifica

piv=(1:n);

%ciclo di fattorizzazione LU con pivoting parziale e scambio virtuale delle

%righe

for k=1:(n-1)

r=min(find(abs(A(piv(1:n),k))==max(abs(A(piv(k:n),k))))); %cerca il

pivotmaggiore in modulo

if abs(A(piv(r),k))>zero %controllo che il pivot considerato sia diverso da zero

piv([r k])=piv([k r]); %scambio virtuale delle righe

A(piv((k+1):n),k)=A(piv((k+1):n),k)/A(piv(k),k); %genera moltiplicatori, e

lisalva in place

A(piv((k+1):n),(k+1):n)=A(piv((k+1):n),(k+1):n)-

(A(piv((k+1):n),k)*A(piv(k),(k+1):n)); %sottrae riga a riga moltiplicata

else %altrimenti avvisa l'utente che la matrice è singolare

error ('Attenzione il sistema è singolare.Il programma verrà arrestato!')

end

end

if abs(A(piv(n),n))<=zero %verifica singolarità matrice dei coefficienti

perl'ultimo valore

error('Attenzione sistema singolare su ultimo passo, Il programma verrà

arrestato!')

end

t=size(b);

%ciclo per calcolo della soluzione per ogni vettore colonna

%della matrice dei termini noti

%forward substitution

y(1,:)=b(piv(1),:);

for i=2:n

y(i,:)=b(piv(i),:)-(A(piv(i),1:(i-1))*(y(1:(i-1),:)));

end

%back substitution

x(n,:)=y(n,:)/A(piv(n),n); %salvataggio dell'ultimo valore del vettore sol.

for i=(n-1):-1:1

x(i,:)=(y(i,:)-(A(piv(i),(i+1):n)*(x((i+1):n,:))))/A(piv(i),i);%calcolo

dellesoluzioni

end

Test dell'algoritmo:

Caso funzionante1:

A=rand(4);

b=rand(4,6);

x=sislin(A,b)

x =

-0.2703 0.0620 0.0987 0.7654 -0.2380 0.8251

0.4077 0.4003 0.1056 0.4601 0.5383 0.4422

0.1431 0.1797 0.0561 0.7122 -0.5151 0.7930

0.2749 0.4722 0.2308 -0.6636 1.1931 -0.5502

Caso funzionante2:

>> A=rand(4);

>> x=sislin(A)

x =

-0.6950 2.6552 1.5099 -1.5902

1.3591 -0.0776 -0.4835 -0.1355

-0.1598 1.2550 -1.1877 0.9303

0.0773 -1.7939 0.8484 0.5416

Casi d'errore:

>> sislin

??? Error using ==> sislin at 32

Numero di dati in input insufficiente

>> A=rand(4);

>> b=rand(7,8);

>> sislin(A,b)

??? Error using ==> sislin at 42

b deve avere lo stesso numero di righe di A

>> sislin('ciao')

??? Error using ==> sislin at 48

A deve essere una matrice di reali

>> sislin([])

??? Error using ==> sislin at 52

La matrice è vuota,nulla da calcolare

>> sislin(rand(4,7))

??? Error using ==> sislin at 56

Attenzione matrice non quadrata

>> sislin(rand(4),'ciao')

??? Error using ==> sislin at 60

b deve essere una matrice di reali

>>A =

0.7184 0 0.0908 0.4401

0.9686 0 0.2665 0.5271

0.5313 0 0.1537 0.4574

0.3251 0 0.2810 0.8754

>> sislin(A)

??? Error using ==> sislin at 74

Attenzione il sistema è singolare. Il programma verrà arrestato!

>>A =

0.5181 0.2407 0.6951 0.6678

0.9436 0.6761 0.0680 0.8444

0.6377 0.2891 0.2548 0.3445

0 0 0 0 0

>> sislin(A)

??? Error using ==> sislin at 78

Attenzione sistema singolare su ultimo passo. Il programma verrà arrestato!

>> a=rand(10);

>> a=a+i;

>> sislin(a)

??? Error using ==> sislin at 61

A deve essere una matrice di reali

>> b=rand(10);

>> b=b+i;

>> sislin(rand(10),b);

??? Error using ==> sislin at 65

b deve essere una matrice di reali

Test per l'accuratezza:

Risoluzione m sistemi bencondizionati1:

>> a=rand(7);x=rand(7,9);b=a*x;

>> cond(a)

ans =

2.112908744886480e+001

>> xc=sislin(a,b);

>> norm(b-a*xc)/norm(a*xc)

ans =


PAGINE

8

PESO

106.30 KB

AUTORE

Menzo

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
A.A.: 2013-2014

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Menzo di informazioni apprese con la frequenza delle lezioni di Calcolo numerico e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Napoli Federico II - Unina o del prof D'Alessio Alessandra.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolo numerico

Elaborati D'Alessi
Appunto
Calcolo Numerico – Funzione Gauss
Appunto
Calcolo Numerico – Funzione Espo
Appunto
Calcolo Numerico – Fitting dei dati
Appunto