Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % esercitazione 7
- % Risoluzione di Ax=b mediante Jacobi
- % A matrice generata a caso
- clc, clear;
- fprintf('\n Risoluzione di Ax=b mediante Jacobi\n\n');
- scelta=input('\n Problema casuale o assegnato? (scelta=0/1)');
- % input dati matrice A
- if scelta==1
- probl=input('\n Dai no. del problema(input da file ''Dati_eserc_7.m'')');
- A=Dati_eserc_7(probl);
- nn=size(A);
- n=nn(2);
- else
- n=input('\n Dai la dimensione del problema generato a caso:');
- B=(1/n)*rand(n);
- DD=diag(diag(B));
- B=B-DD;
- A=DD-DD*B;
- end
- % input parametri di stop, generazione del problema
- acc=input('dai l''accuratezza:');
- itmax=input('dai iterazione massima');
- xx=ones(n,1);
- b=A*xx;
- % inizializzazione
- iter=0;
- x0=zeros(n,1);
- x1=x0;
- while 1
- iter=iter+1;
- for i=1:n
- x1(i)=(b(i)-A(i,1:i-1)*x0(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);
- end
- if iter>=itmax
- flag=1;
- break
- elseif norm(x0-x1)<acc
- flag=0;
- break;
- end
- x0=x1;
- end
- err=norm(xx-x1)/norm(xx);
- % output
- if flag==1
- fprintf('\n Raggiunta iterazione massima= %d', itmax);
- else
- fprintf('\n Raggiunta precisione richiesta=%e', acc);
- end
- fprintf('\n iter=%d, errore norm(xx-x1)/norm(xx)=%e', iter, err);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement