Guest User

Untitled

a guest
May 8th, 2012
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.00 KB | None | 0 0
  1. function [x,y]=Crout(A,b)
  2.  
  3. n=length(A(1,:));
  4. if length(A(:,1))~=n
  5.     error('Macierz nie jest kwadratowa!');
  6.     return;
  7. end
  8. if length(b)~=n
  9.     error('Podany wektor ma nieprawidłowy rozmiar!');
  10.     return;
  11. end
  12.  
  13. U=eye(n);
  14.    
  15. L=zeros(n);
  16. y=diag(L);
  17. x=diag(L);
  18.  
  19.  
  20. %obliczanie L i U
  21.  
  22. for k=1:n
  23.     for i=k:n
  24.        
  25.         sumL=0.0;        
  26.         for p=1:(k-1)
  27.             sumL=sumL+L(i,p).*U(p,k);
  28.         end
  29.        
  30.         L(i,k)=A(i,k)-sumL;
  31.     end
  32.    
  33.     for j=(k+1):n
  34.          
  35.         sumU=0.0;
  36.         for p=1:(k-1)
  37.             sumU=sumU+L(k,p).*U(p,j);
  38.         end
  39.        
  40.         U(k,j)=(A(k,j)-sumU)./L(k,k);
  41.     end
  42. end
  43.  
  44. %obliczanie rozwiązania
  45.  
  46. y(1)=b(1);
  47.  
  48. for i=2:n
  49.    
  50.     sumY=0.0;
  51.     for k=1:i-1
  52.         sumY=sumY+L(i,k).*y(k);
  53.     end
  54.    
  55.     y(i)=b(i)-sumY;
  56. end
  57.  
  58. x(n)=y(n)/U(n,n);
  59.  
  60. for i=n-1:-1:1
  61.     sumX=0.00;
  62.     for k=(i+1):n
  63.         sumX=sumX+U(i,k).*x(k);
  64.     end
  65.     x(i)=(y(i)-sumX)./U(i,i);
  66. end
  67.  
  68. end
Advertisement
Add Comment
Please, Sign In to add comment