Added shitty Algorithm 6
This commit is contained in:
parent
41b7057eab
commit
be23b626db
@ -16,7 +16,6 @@ q = 1:n;
|
|||||||
for k = 1 : n-1
|
for k = 1 : n-1
|
||||||
i = k:n;
|
i = k:n;
|
||||||
j = k:n;
|
j = k:n;
|
||||||
A(i, j);
|
|
||||||
[max_val, rows_of_max_in_col] = max(abs(A(i, j)));
|
[max_val, rows_of_max_in_col] = max(abs(A(i, j)));
|
||||||
[max_val, max_col] = max(max_val);
|
[max_val, max_col] = max(max_val);
|
||||||
max_row = rows_of_max_in_col(max_col);
|
max_row = rows_of_max_in_col(max_col);
|
||||||
|
@ -1,18 +1,10 @@
|
|||||||
% Algorithm 5: Gauss-Jordan Elimination (Alg.
|
|
||||||
% Argument A is an augmented matrix
|
|
||||||
function A = Alg5_gauss_jordan_elimination(A)
|
function A = Alg5_gauss_jordan_elimination(A)
|
||||||
|
% Algorithm 5: Gauss-Jordan Elimination
|
||||||
|
% Argument A is an augmented matrix
|
||||||
|
|
||||||
% M – rows, N – columns
|
% M – rows, N – columns
|
||||||
|
|
||||||
[M, N] = size(A);
|
[M, N] = size(A);
|
||||||
%
|
|
||||||
% if M + 1 ~= N
|
|
||||||
% error('Matrix is not squared!')
|
|
||||||
% end
|
|
||||||
%
|
|
||||||
% if det(A) == 0
|
|
||||||
% error('Matrix is not nonsingular!')
|
|
||||||
% end
|
|
||||||
|
|
||||||
for m = 1 : M
|
for m = 1 : M
|
||||||
|
|
||||||
@ -25,4 +17,5 @@ for m = 1 : M
|
|||||||
A(n, :) = A(n, :)-(A(n, m))*row;
|
A(n, :) = A(n, :)-(A(n, m))*row;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
51
Direct Methods for Solving Linear Systems/Alg6_RREF.m
Normal file
51
Direct Methods for Solving Linear Systems/Alg6_RREF.m
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
function A = Alg6_RREF(A)
|
||||||
|
% Algorithm 6: Reduced Row Echelon Form (RREF)
|
||||||
|
|
||||||
|
% M – rows, N – columns
|
||||||
|
|
||||||
|
[M, N] = size(A);
|
||||||
|
|
||||||
|
n = 0;
|
||||||
|
|
||||||
|
for m = 1 : M
|
||||||
|
n = n + 1
|
||||||
|
if n > N
|
||||||
|
break
|
||||||
|
end
|
||||||
|
A
|
||||||
|
% We want the left-most coefficient to be 1 (pivot)
|
||||||
|
row = A(m, :);
|
||||||
|
if row(m) == 0
|
||||||
|
n = n + 1
|
||||||
|
end
|
||||||
|
[m ,n]
|
||||||
|
row = row/row(n);
|
||||||
|
A(m, :) = row;
|
||||||
|
|
||||||
|
for i = 1 : M
|
||||||
|
if i ~= m
|
||||||
|
A(i, :) = A(i, :)-(A(i, n))*row;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
A
|
||||||
|
|
||||||
|
for i = m + 1 : M
|
||||||
|
A(i:end, m+1:end); % Partial matrix (in which we are looking for non-zero pivots)
|
||||||
|
A(i:end, m+1); % Left-most column
|
||||||
|
if ~any(A(i:end, m+1)) % If the left-most column has only zeros check the next one
|
||||||
|
m = m + 1;
|
||||||
|
end
|
||||||
|
A(i:end, m+1:end);
|
||||||
|
if A(i, m+1) == 0
|
||||||
|
non_zero_row = find(A(i:end,m+1), 1);
|
||||||
|
if isempty(non_zero_row)
|
||||||
|
continue
|
||||||
|
end
|
||||||
|
A([i, i+non_zero_row-1], :) = deal(A([i+non_zero_row-1, i], :));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
@ -60,8 +60,8 @@ bp = [0.168; 0.066];
|
|||||||
|
|
||||||
kappa = cond(A)
|
kappa = cond(A)
|
||||||
|
|
||||||
B = gauss_jordan_elimination([A b])
|
B = Alg5_gauss_jordan_elimination([A b])
|
||||||
Bp = gauss_jordan_elimination([A bp])
|
Bp = Alg5_gauss_jordan_elimination([A bp])
|
||||||
|
|
||||||
%% Problem 5
|
%% Problem 5
|
||||||
% AX = I3
|
% AX = I3
|
||||||
@ -79,3 +79,18 @@ X = Q*back_substitution(U, y)
|
|||||||
inv(A)
|
inv(A)
|
||||||
|
|
||||||
%% Problem 6
|
%% Problem 6
|
||||||
|
|
||||||
|
%% Problem 10
|
||||||
|
|
||||||
|
% A = [1 2 2 3 1;
|
||||||
|
% 2 4 4 6 2;
|
||||||
|
% 3 6 6 9 6;
|
||||||
|
% 1 2 4 5 3]
|
||||||
|
|
||||||
|
A = [0.835, 0.667;
|
||||||
|
0.333, 0.266];
|
||||||
|
b = [0.168; 0.067];
|
||||||
|
|
||||||
|
Alg6_RREF([A b])
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user