1. Code
%% LU decomposition method function LUDM = LU_Decomposition_method(A,b) global n global B; global to, global L; global M; [n,n] = size(A); B = [A,b]; R_A = rank(A);R_B = rank(B); if R_A ~= R_B DISP ( 'equation has no solution'); elseif (R_A == R_B) && (R_A == n) DISP ( 'This equation has a unique solution'); M = LU_decomposition(A); L = M(:,:,1);U = M(:,:,2); matrix1 = [L b]; Y = Lower_trig_iterative_solution(matrix1); matrix2 = [U Y]; X = Upper_trig_iterative_solution(matrix2); disp ( 'LU decomposition of L ='); L disp ( 'LU decomposition U ='); The else DISP ( 'equation has infinite number of solutions'); end DISP ( 'solution vector is:'); LUDM = X; LU %% matrix decomposition function LUD = LU_decomposition(A) [n,n] = size(A); M = Elementary_transformation_of_the_lower_triangle(A); L = M(:,:,n);U=A; for i = 1:1:n-1 U = M (:,:, i) * U; end Lud (:,:, 1) = 50; LUD (:,:, 2) = U; end %% lower triangular elementary transformation function ETLT = Elementary_transformation_of_the_lower_triangle(A) [n,n] = size(A); L = zeros(n,1,n); for i = 1:1:n for j = 1:1:n for k = 1:1:n if j == k L(j,k,i) = 1; end end end end for i = 1:1:n-1 for j = 1:1:n for k = 1:1:n if j > k if i == k L(j,k,i) = -A(j,k)/A(k,k); end L(i+1:n,i,n) = -L(i+1:n,i,i); end end end A = L(:,:,i)*A; end ETLT = L; end %% lower triangular iterative method function LTIS = Lower_trig_iterative_solution(M) [m,n] = size(M); B = M (:, 1: n-1); b = M (:, n); y = zeros(1,m); y (1) = three (1); for i = 2:1:m sum = 0; for j = 1:1:i-1 sum = sum+B(i,j)*y(j); end y(i) = ba(i)-sum; end LTIS = y '; end %% upper triangular iterative method function UTIS = Upper_trig_iterative_solution(M) [m,n] = size(M); B = M (:, 1: n-1); b = M (:, n); x = zeros(1,m); x(m) =ba(m)/B(m,m); for i = m-1:-1:1 sum = 0; for j = i+1:1:m sum = sum+B(i,j)*x(j); end x(i) = (ba(i)-sum)/B(i,i); end UTIS = x '; end end
2. Examples
clear all clc M = rand (9) b = reshape(rand(3),9,1) S = LU_Decomposition_method(M,b) M\b
result
M = Column 1-7 0.5944 0.4709 0.4076 0.4235 0.5181 0.0680 0.6022 0.0225 0.6959 0.8200 0.0908 0.9436 0.2548 0.3868 0.4253 0.6999 0.7184 0.2665 0.6377 0.2240 0.9160 0.3127 0.6385 0.9686 0.1537 0.9577 0.6678 0.0012 0.1615 0.0336 0.5313 0.2810 0.2407 0.8444 0.4624 0.1788 0.0688 0.3251 0.4401 0.6761 0.3445 0.4243 0.4229 0.3196 0.1056 0.5271 0.2891 0.7805 0.4609 0.0942 0.5309 0.6110 0.4574 0.6718 0.6753 0.7702 0.5985 0.6544 0.7788 0.8754 0.6951 0.0067 0.3225 Column 8-9 0.7847 0.1917 0.4714 0.7384 0.0358 0.2428 0.1759 0.9174 0.7218 0.2691 0.4735 0.7655 0.1527 0.1887 0.3411 0.2875 0.6074 0.0911 b = 0.5762 0.6834 0.5466 0.4257 0.6444 0.6476 0.6790 0.6358 0.9452 This equation has a unique solution LU decomposition L = L = Column 1-7 1.0000 0 0 0 0 0 0 0.0379 1.0000 0 0 0 0 0 0.7155 0.5352 1.0000 0 0 0 0 0.5261 0.5762 -74.4491 1.0000 0 0 0 0.2717 -0.1391 -136.4397 1.7669 1.0000 0 0 0.3008 -0.1074 -74.0359 0.9200 0.6765 1.0000 0 0.7115 -0.0228 42.5434 -0.5996 0.3838 -141.0829 1.0000 0.1585 0.6728 -1.3001 -0.0414 0.8852 -70.1396 0.4925 1.0070 0.2658 -39.5864 0.4476 1.3552 49.3425 -0.3788 Column 8-9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.0000 0 5.1107 1.0000 LU decomposition U = U = Column 1-7 0.5944 0.4709 0.4076 0.4235 0.5181 0.0680 0.6022 0 0.6781 0.8045 0.0748 0.9240 0.2522 0.3640 0 0 -0.0039 -0.0765 -0.2275 0.0404 0.2903 0 0 0 -5.8101 -16.7848 3.4944 21.0900 -0.0000 0 0 0 -1.1550 0.1988 2.6992 0.0000 0 0 0 0 -0.0074 0.5483 0.0000 -0.0000 0 0 0 0 76.6535 0.0000 0.0000 0 -0.0000 0 0 0 -0.0000 -0.0000 0 0.0000 0 0 0 Column 8-9 0.7847 0.1917 0.4416 0.7312 -0.7621 -0.2857 -57.2283 -20.8735 -2.2924 -1.7782 -1.9343 0.0429 -274.3037 6.4447 -1.9999 -0.0598 0 0.7768 Solution vector is: S = -0.9496 2.2130 0.5483 1.9595 -3.8859 -0.4632 0.4453 0.3978 2.6573 years = -0.9496 2.2130 0.5483 1.9595 -3.8859 -0.4632 0.4453 0.3978 2.6573 >>