fork download
  1. function x = fxd(L,b)
  2. b=b(:)
  3. [m,n]=size(L);
  4. p=length(b);
  5. if m~=n
  6. error('L nu este pătratică!');
  7. end
  8. if m~=p
  9. error('L nu este compatibil cu b')
  10. end
  11. for i=1:m
  12. for j=i+1:n
  13. if L(i,j)~=0
  14. error('Matricea nu este inferior triunghiulara')
  15. end
  16. end
  17. end
  18. for i=1:n
  19. if L(i,i)==0
  20. error('L este singulară')
  21. end
  22. end
  23. x(1) = b(1)/L(1,1);
  24. for i=2:n
  25. sum=0
  26. for j=1:i-1
  27. sum=sum+L(i,j)*x(j);
  28. end
  29. x(i)=(b(i)-sum)/L(i,i);
  30. end
  31. end
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. function x = bwd(U,b)
  44.  
  45. [m,n]=size(U);
  46. b=b(:)
  47. p=length(b);
  48. if m~=n
  49. error('U nu este pătratică!');
  50. end
  51. if m~=p
  52. error('U nu este compatibil cu b');
  53. end
  54.  
  55. for i=1:m
  56. for j=1:i-1
  57. if U(i,j)~=0
  58. error('Matricea U nu este superior triunghiulara');
  59. end
  60. end
  61. end
  62.  
  63. if det(U)==0
  64. error('Matricea U nu este inversabilă');
  65. end
  66.  
  67. x(n) = b(n)/U(n,n);
  68. for i=n-1:-1:1
  69. sum=0
  70. for j=i+1:n
  71. sum=sum+U(i,j)*x(j);
  72. end
  73. x(i)=(b(i)-sum)/U(i,i);
  74.  
  75.  
  76. end
  77. end
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89. function [L,b] = gem(L,b)
  90. [m,n]=size(L)
  91. b=b(:);
  92. p=length(b);
  93. if m~=n
  94. error('L nu e patratica')
  95. end
  96. if m~=p
  97. error('L nu e compatibil cu b')
  98. end
  99. for k=1:n-1
  100. for i=k+1:n
  101. m(1,k)=L(i,k)/L(k,k);
  102. b(i)=b(i)-m(i,k)*b(k);
  103. for j=1:n
  104. L(i,j)=L(i,j)-m(i,k)*L(k,j);
  105. end
  106. end
  107. end
  108. end
  109.  
Success #stdin #stdout 0.11s 46888KB
stdin
Standard input is empty
stdout
Standard output is empty