summaryrefslogtreecommitdiff
path: root/Functions/luFactor/luFactor.m
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/luFactor/luFactor.m')
-rw-r--r--Functions/luFactor/luFactor.m87
1 files changed, 0 insertions, 87 deletions
diff --git a/Functions/luFactor/luFactor.m b/Functions/luFactor/luFactor.m
deleted file mode 100644
index 4c853dd..0000000
--- a/Functions/luFactor/luFactor.m
+++ /dev/null
@@ -1,87 +0,0 @@
-function [L, U, P] = luFactor(A)
-% luFactor(A)
-% LU decomposition with pivoting
-% inputs:
-% A = coefficient matrix
-% outputs:
-% L = lower triangular matrix
-% U = upper triangular matrix
-% P = the permutation matrix
-
-
-[m,n] = size(A);
-if m~=n, error('Enter a square matrix.'); end
-nb = n + 1;
-L=zeros(m,m);
-U=zeros(m,m);
-P=eye(m);
-
-%Partial pivoting
-for j = 1:n - 1
- for p = j+1:m
- if (abs(A(j,j)) < abs(A(p,j)))
- A([j p],:) = A([p j],:);
- P([j p],:) = P([p j],:);
- end
- end
-end
-% [big,i] = max(abs(A(j:n,j)));
-% ipr = i + j - 1;
-% if ipr ~= j
-% A([j,ipr],:) = A([ipr,j],:);
-% end
-%end
-
-for i=1:m
- % Computing L
- for k=1:i-1
- L(i,k)=A(i,k);
- for j=1:k-1
- L(i,k)= L(i,k)-L(i,j)*U(j,k);
- end
- L(i,k) = L(i,k)/U(k,k);
- end
-
- % Computing U
- for k=i:m
- U(i,k) = A(i,k);
- for j=1:i-1
- U(i,k)= U(i,k)-L(i,j)*U(j,k);
- end
- end
-end
-
-for i=1:m
- L(i,i)=1;
-end
-
-%% Checks
-if P*A ~= L*U, error('LU factorization failed to be computed correctly.'); end
-
-% Checks output size
-if size(L) ~= size(A) | size(U) ~= size(A) | size(P) ~= size(A)
- error('Incorrect output size')
-end
-
-% Checks if matrices are triangular
-%for i=1:m
-% for j=1:n
-% error('Incorrect output: LU decomposition are not triangular')
-%end
-
-% Checks the permutation matrix P is valid
-%P_str = string(P)
-%for k = m
-% num1=count(P(:,1:n),1)
-% if num1 ~=1
-% error('Incorrect P matrix output. Too many 1's on the same line')
-% end
-% num0=count(P(:,1:n),0)
-% if num0 ~= n-1
-% error('Incorrect P matric output. Wrong number of 0's')
-% end
-%end
-
-%}
-
-end \ No newline at end of file