function [x, a, b, c] = my_trid_solve_17_04(a,b,c,f) %implementare eliminazione gaussiana per sistemi tridiagonali %matrice tridiagonale può essere memorizzata con 3 vettori %a=diag(t), b=diag(t,-1), c=diag(t,1) %no pivoting %preservare sparsità del problema %calcolare x tale che t x=f, t=tridiag(b,a,c) n=length(a); x=zeros(n,1); for k=1:n-1 if(a(k)==0) disp('pivot nullo'); return else m=b(k)/a(k); a(k+1)=a(k+1)-m*c(k); b(k)=m; f(k+1)=f(k+1)-m*f(k); end end if (a(n)==0) disp('matrice singolare'); return end x(n)=f(n)/a(n); for k=n-1:-1:1 x(k)=(f(k)-x(k+1)*c(k))/a(k); end end