% PROGRAMMA (script) PRINCIPALE PER METODI ITERATIVI
% PER SISTEMI LINEARI Ax=b
% Utilizzo di 'menu' per selezionare il tipo
% di metodo iterativo

clc
matrice=input('Hai definito la matrice A? (s/n) ','s') ;
if matrice=='n'
    disp('Assegna i valori agli elementi della matrice (riga per riga)');
    A=input(' ') ;
end
    
b=sum(A,2) ;  % termine noto corrispondente alla soluzione x=[1 1 ... 1]'
x0=zeros(size(b)) ;
disp('**** Inserire due valori per le TOLLERANZE ****')
toll=input('In un vettore: il primo elemento relativo al residuo e il secondo alla differenza tra due iterate successive \n ') ;

flag=menu('Metodi Iterativi','JACOBI','GAUSS SEIDEL','Altro') ;
if flag==1
    [x,r,d]=iterativi_SistLin(A,b,x0,toll,flag) ;
elseif flag==2
    [x,r,d]=iterativi_SistLin(A,b,x0,toll,flag) ;
else
    disp('Metodo per ora non implementato')
    x=x0 ;
    r=1 ;
    d=1 ;
end

format short
disp(['Residuo: ', num2str(r)])
disp(d)
disp(['Soluzione approssimata: ', mat2str(x)])