Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Esercitazione 5b
- % risoluzione di un sistema lineare Ax=b
- % (A matrice casuale nxn)
- % mediante Gauss con scambio di righe
- clc, clear;
- fprintf('\n Risoluzione del sistema Ax=b scambio di righe (A nxn)\n');
- n=input(' Dai la dimensione del problema: ');
- % creazione del problema
- A=rand(n);
- A(1,1)=0;
- x_esatto=ones(n,1);
- b=A*x_esatto;
- A=[A,b];
- % scaling del sistema
- for i=1:n
- d(i)=max(abs(A(i,:)));
- A(i,:)=A(i,:)/d(i);
- end
- % applicazione di Gauss;
- for k=1:n-1
- % pscambio di righe. p tale che...
- [mass, p]=max(abs(A(k:n,k)));
- p=p+k-1;
- buf=A(k,:);
- A(k,:)=A(p,:);
- A(p,:)=buf;
- for i=k+1:n
- m = A(i,k)/A(k,k);
- for j=k+1:n+1
- A(i,j)=A(i,j)-m*A(k,j);
- end
- end
- end
- %risoluzione del sistema triangolare superiore
- x(n)=A(n,n+1)/A(n,n);
- for i=(n-1):-1:1
- x(i)=A(i,n+1);
- for j=(i+1):n
- x(i)=x(i)-A(i,j)*x(j);
- end
- x(i)=x(i)/A(i,i);
- end
- % output
- errore_relativo=norm(x_esatto-x')/norm(x_esatto);
- fprintf('\n errore=%e\n\n ', errore_relativo);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement