Advertisement
nigu

eserc7

Nov 21st, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.25 KB | None | 0 0
  1. % esercitazione 7
  2. % Risoluzione di Ax=b mediante Jacobi
  3. % A matrice generata a caso
  4. clc, clear;
  5. fprintf('\n Risoluzione di Ax=b mediante Jacobi\n\n');
  6. scelta=input('\n Problema casuale o assegnato? (scelta=0/1)');
  7.  
  8.  
  9. % input dati matrice A
  10. if scelta==1
  11.     probl=input('\n Dai no. del problema(input da file ''Dati_eserc_7.m'')');
  12.     A=Dati_eserc_7(probl);
  13.     nn=size(A);
  14.     n=nn(2);
  15. else
  16.     n=input('\n Dai la dimensione del problema generato a caso:');
  17.     B=(1/n)*rand(n);
  18.     DD=diag(diag(B));
  19.     B=B-DD;
  20.     A=DD-DD*B;
  21. end
  22.  
  23. % input parametri di stop, generazione del problema
  24. acc=input('dai l''accuratezza:');
  25. itmax=input('dai iterazione massima');
  26. xx=ones(n,1);
  27. b=A*xx;
  28.  
  29. % inizializzazione
  30. iter=0;
  31. x0=zeros(n,1);
  32. x1=x0;
  33. while 1
  34.     iter=iter+1;
  35.     for i=1:n
  36.         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);
  37.     end
  38.     if iter>=itmax
  39.         flag=1;
  40.         break
  41.     elseif norm(x0-x1)<acc
  42.         flag=0;
  43.         break;
  44.     end
  45.    
  46.     x0=x1;
  47. end
  48. err=norm(xx-x1)/norm(xx);
  49. % output
  50. if flag==1
  51.    fprintf('\n Raggiunta iterazione massima= %d', itmax);
  52. else
  53.    fprintf('\n Raggiunta precisione richiesta=%e', acc);
  54. end
  55. fprintf('\n iter=%d, errore norm(xx-x1)/norm(xx)=%e', iter, err);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement