Added shitty Algorithm 6

This commit is contained in:
Sergiusz Warga 2021-03-13 16:16:01 +01:00
parent 41b7057eab
commit be23b626db
4 changed files with 71 additions and 13 deletions

View File

@ -16,7 +16,6 @@ q = 1:n;
for k = 1 : n-1
i = k:n;
j = k:n;
A(i, j);
[max_val, rows_of_max_in_col] = max(abs(A(i, j)));
[max_val, max_col] = max(max_val);
max_row = rows_of_max_in_col(max_col);

View File

@ -1,18 +1,10 @@
% Algorithm 5: Gauss-Jordan Elimination (Alg.
% Argument A is an augmented matrix
function A = Alg5_gauss_jordan_elimination(A)
% Algorithm 5: Gauss-Jordan Elimination
% Argument A is an augmented matrix
% M rows, N columns
[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
@ -25,4 +17,5 @@ for m = 1 : M
A(n, :) = A(n, :)-(A(n, m))*row;
end
end
end
end

View 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

View File

@ -60,8 +60,8 @@ bp = [0.168; 0.066];
kappa = cond(A)
B = gauss_jordan_elimination([A b])
Bp = gauss_jordan_elimination([A bp])
B = Alg5_gauss_jordan_elimination([A b])
Bp = Alg5_gauss_jordan_elimination([A bp])
%% Problem 5
% AX = I3
@ -79,3 +79,18 @@ X = Q*back_substitution(U, y)
inv(A)
%% 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])