mihainan

Metode numerice - Alex Suciu

Mar 31st, 2014
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.89 KB | None | 0 0
  1. function X = elim(fisier)
  2.     v = load(fisier);
  3.     a = size(v);
  4.     a = a(1,2);
  5.     n = 2+(a-6)/4;
  6.     c = 3;
  7.     a(1) = 0;
  8.     b(1) = v(1);
  9.     c1(1) = v(2);
  10.     for i = 2:n-1
  11.        a(i)=v(c);
  12.         b(i)=v(c+1);
  13.         c1(i)=v(c+2);
  14.         c=c+3;
  15.     end
  16.     c1(n) = 0;
  17.     a(n) = v(c);
  18.     b(n) = v(c+1);
  19.     c=c+1;
  20.     for i = 1:n
  21.         t_liber(i) = v(c+i);
  22.     end
  23.     if(n > 100)
  24.         X = tridi(a, b, c1, t_liber);
  25.     else
  26.         %Aici bagi o eliminare gaussiana
  27.         X = zeros(1, n);
  28.     endif
  29.     dlmwrite("date.out", X);
  30. end
  31.  
  32. function d = tridi(a, b, c, d)
  33.     %Intrari    a = subdiagonala
  34.     %       b = diagonala principala
  35.     %       c = supradiagonala
  36.     %       d = vectorul termenilor liberi
  37.     a = a(:);
  38.     n = length(b);
  39.     for i=2:n
  40.         t = a(i) / b(i-1);
  41.         b(i) = b(i) - t*c(i-1);
  42.         d(i) = d(i) - t*d(i-1);
  43.     endfor
  44.     d(n) = d(n) / b(n);
  45.     for i = n-1: -1:1
  46.         d(i) = (d(i) - c(i)*d(i+1)) / b(i);
  47.     endfor
  48. endfunction
Advertisement
Add Comment
Please, Sign In to add comment