Merging methods into one function

This commit is contained in:
PolishPigeon 2021-11-12 02:20:45 +01:00
parent 08c4979227
commit 10993b2a9c
12 changed files with 539 additions and 313 deletions

View File

@ -1,85 +0,0 @@
function x = gaussSeidelMethod(Matrix, Vector)
[L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, flag, Rows] = initializeValues(Matrix);
[x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag, Rows);
dispFinalResults(x, demandedTolerance, whichIterationAreWeOn, Matrix, Vector);
end
function [L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, flag, Rows] = initializeValues(Matrix)
[Rows, ~] = size(Matrix);
[L, D, U] = decomposeMatrix(Matrix);
initial_x = ones(Rows, 1);
whichIterationAreWeOn = 0;
demandedTolerance = 10e-10; % as per task description
% Minimal values I got: 3.202372833989376e-15 for both system of
% equations - original and task 2a)
flag = 0;
end
function [L, D, U] = decomposeMatrix(Matrix)
D = diag(diag(Matrix));
U = triu(Matrix, 1); % Generates upper triangular part of matrix
% where the second variable denotes on which diagonal of matrix should we
% start
L = tril(Matrix, -1); % Generates lower triangular part of matrix
% where the second variable denotes on which diagonal of matrix should we
% start
end
function [x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag, Rows)
while flag ~= 1 % flag denotes whether norm(Matrix*x-Vector) <= demandedTolerance
[x, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows);
end
end
function [x, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows)
x = jacobiEquation(D, L, U, initial_x, Vector, Rows);
[flag, demandedTolerance] = checkError(x, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x, whichIterationAreWeOn);
end
function x = jacobiEquation(D, L, U, initial_x, Vector, Rows)
W = U*initial_x - Vector;
x(1, 1) = -W(1) / D(1,1);
for i = 2 : Rows
nominator = 0;
for j = 1 : i - 1
nominator = nominator L(i, j) * x(j);
end
nominator = nominator - W(j);
x(i, 1) = nominator / D(i, i);
end
end
function [flag, demandedTolerance] = checkError(x, initial_x, demandedTolerance, Matrix, Vector)
flag = 0;
currentError = norm(x - initial_x);
disp(currentError);
if currentError <= demandedTolerance
currentError = norm(Matrix*x-Vector);
if currentError <= demandedTolerance % if sequence as per textbook
flag = 1;
else
demandedTolerance = demandedTolerance * 2; % arbitrary value
end
end
end
function [initial_x, whichIterationAreWeOn, flag] = endOfLoop(x, whichIterationAreWeOn)
initial_x = x;
whichIterationAreWeOn = whichIterationAreWeOn + 1;
flag = 0;
end
function dispFinalResults(x, demandedTolerance, whichIterationAreWeOn, Matrix, Vector)
disp("Final demandedTolerance");
disp(demandedTolerance);
disp("Final Iteration: ");
disp(whichIterationAreWeOn);
disp("A\b matlab:");
disp(Matrix \ Vector);
disp("Error:");
disp(norm(Matrix*x - Vector));
disp("A\b error:");
disp(norm(Matrix * (Matrix\Vector) - Vector));
end

View File

@ -30,7 +30,7 @@ function [x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L,
end
function [x, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows)
x = jacobiEquation(D, L, U, initial_x, Vector, Rows);
x = jacobiEquation(D, L, U, initial_x, Vector);
[flag, demandedTolerance] = checkError(x, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x, whichIterationAreWeOn);
end

114
ENUME/projectA/iterative.m Normal file
View File

@ -0,0 +1,114 @@
function [x_j, x_g] = iterative(Matrix, Vector)
[L, D, U, initial_x, whichIterationAreWeOnJ, whichIterationAreWeOnG, demandedToleranceJ, demandedToleranceG, flag, Rows] = initializeValues(Matrix);
[x_j, whichIterationAreWeOnJ, demandedToleranceJ] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOnJ, demandedToleranceJ, Vector, flag);
[x_g, whichIterationAreWeOnG, demandedToleranceG] = gaussSeidelLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOnG, demandedToleranceG, Vector, flag, Rows);
dispFinalResults(x_j, x_g, demandedToleranceJ, demandedToleranceG, whichIterationAreWeOnJ, whichIterationAreWeOnG, Matrix, Vector);
end
function [L, D, U, initial_x, whichIterationAreWeOnJ, whichIterationAreWeOnG, demandedToleranceJ, demandedToleranceG, flag, Rows] = initializeValues(Matrix)
[Rows, ~] = size(Matrix);
[L, D, U] = decomposeMatrix(Matrix);
initial_x = zeros(Rows, 1);
whichIterationAreWeOnJ = 0;
whichIterationAreWeOnG = 0;
demandedToleranceJ = 10e-10; % as per task description
demandedToleranceG = 10e-10; % as per task description
flag = 0;
end
function [L, D, U] = decomposeMatrix(Matrix)
D = diag(diag(Matrix));
U = triu(Matrix, 1); % Generates upper triangular part of matrix
% where the second variable denotes on which diagonal of matrix should we
% start
L = tril(Matrix, -1); % Generates lower triangular part of matrix
% where the second variable denotes on which diagonal of matrix should we
% start
end
function [x_j, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag)
while flag ~= 1 % flag denotes whether norm(Matrix*x_g-Vector) <= demandedTolerance
[x_j, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector);
end
end
function [x_g, whichIterationAreWeOn, demandedTolerance] = gaussSeidelLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag, Rows)
while flag ~= 1 % flag denotes whether norm(Matrix*x_g-Vector) <= demandedTolerance
[x_g, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = gaussiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows);
end
end
function [x_j, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector)
x_j = jacobiEquation(D, L, U, initial_x, Vector);
[flag, demandedTolerance] = checkError(x_j, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x_j, whichIterationAreWeOn);
end
function [x_j, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = gaussiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows)
x_j = gaussSeidelEquation(D, L, U, initial_x, Vector, Rows);
[flag, demandedTolerance] = checkError(x_j, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x_j, whichIterationAreWeOn);
end
function x = jacobiEquation(D, L, U, initial_x, Vector)
x = - D \ ( L + U ) * initial_x + D \ Vector; % As per formula
% We will be using D \ Vector and D \ ( ) instead of inverseD since
% this is faster according to matlab
end
function x_g = gaussSeidelEquation(D, L, U, initial_x, Vector, Rows)
W = U*initial_x - Vector;
x_g(1, 1) = -W(1, 1) / D(1,1);
for i = 2 : Rows
x_g(i, 1) = calculateNominator(i, L, x_g, W) / D(i, i);
end
end
function nominator = calculateNominator(i, L, x_g, W)
nominator = 0;
for j = 1 : i - 1
nominator = nominator + L(i, j) * x_g(j);
end
nominator = - nominator - W(j + 1, 1);
end
function [flag, demandedTolerance] = checkError(x_g, initial_x, demandedTolerance, Matrix, Vector)
flag = 0;
currentError = norm(x_g - initial_x);
if currentError <= demandedTolerance
currentError = norm(Matrix*x_g-Vector);
if currentError <= demandedTolerance % if sequence as per textbook
flag = 1;
else
demandedTolerance = demandedTolerance * 2; % arbitrary value
end
end
end
function [initial_x, whichIterationAreWeOn, flag] = endOfLoop(x_g, whichIterationAreWeOn)
initial_x = x_g;
whichIterationAreWeOn = whichIterationAreWeOn + 1;
flag = 0;
end
function dispFinalResults(x_j, x_g, demandedToleranceJ, demandedToleranceG, whichIterationAreWeOnJ, whichIterationAreWeOnG, Matrix, Vector)
disp("Final demandedTolerance for Jacobi method");
disp(demandedToleranceJ);
disp("Final demandedTolerance for Gaussian-Seidel method:");
disp(demandedToleranceG);
disp("Final Iteration for Jacobi method: ");
disp(whichIterationAreWeOnJ);
disp("Final Iteration for Gaussian-Seidel method: ");
disp(whichIterationAreWeOnG);
disp("Error for Jacobi method:");
disp(norm(Matrix*x_j - Vector));
disp("Error for Gaussian-Seidel method:");
disp(norm(Matrix*x_g - Vector));
disp("A\b error:");
disp(norm(Matrix * (Matrix\Vector) - Vector));
disp("Answer for Jacobi method: ");
disp(x_j);
disp("Answer for Gaussian-Seidel method: ");
disp(x_g);
end

View File

@ -1,69 +0,0 @@
function x = jacobiMethod(Matrix, Vector)
[L, D, U, initial_x, whichIterationAreWeOn, currentError, demandedTolerance] = initializeValues(Matrix);
[x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, currentError, demandedTolerance, Vector);
dispFinalResults(demandedTolerance, whichIterationAreWeOn, Matrix, Vector);
end
function [L, D, U, initial_x, whichIterationAreWeOn, currentError, demandedTolerance] = initializeValues(Matrix)
[Rows, ~] = size(Matrix);
[L, D, U] = decomposeMatrix(Matrix);
initial_x = ones(Rows, 1);
whichIterationAreWeOn = 0;
currentError = inf; % We set it to inf so that the algorithm will always start
% (See condition below)
demandedTolerance = 1e-10;
end
function [L, D, U] = decomposeMatrix(Matrix)
D = diag(diag(Matrix));
U = triu(Matrix, 1); % Generates upper triangular part of matrix
% where the second variable denotes on which diagonal of matrix should we
% start
L = tril(Matrix, -1); % Generates lower triangular part of matrix
% where the second variable denotes on which diagonal of matrix should we
% start
end
function [x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, currentError, demandedTolerance, Vector)
while currentError >= demandedTolerance
x = jacobiEquation(D, L, U, initial_x, Vector);
[flag, demandedTolerance] = checkError(x, initial_x, demandedTolerance, Matrix, Vector);
if flag == 1
break
end
initial_x = x;
whichIterationAreWeOn = whichIterationAreWeOn + 1;
end
end
function x = jacobiEquation(D, L, U, initial_x, Vector)
x = - D \ ( L + U ) * initial_x + D \ Vector; % As per formula
% We will be using D \ Vector and D \ ( ) instead of inverseD since
% this is faster according to matlab
end
function [flag, demandedTolerance] = checkError(x, initial_x, demandedTolerance, Matrix, Vector)
flag = 0;
currentError = norm(x - initial_x);
if currentError <= demandedTolerance
currentError = norm(Matrix*x-Vector);
if currentError <= demandedTolerance
flag = 1;
else
demandedTolerance = demandedTolerance * 2;
end
end
end
function [initial_x, ]
function dispFinalResults(demandedTolerance, whichIterationAreWeOn, Matrix, Vector)
disp("Final demandedTolerance");
disp(demandedTolerance);
disp("Final Iteration: ");
disp(whichIterationAreWeOn);
disp("A\b matlab:");
disp(Matrix \ Vector);
end

View File

@ -59,38 +59,45 @@
\@writefile{toc}{\contentsline {paragraph}{For original system of equations:}{18}{section*.14}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{For task 2a) system of equations:}{19}{section*.15}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Table}{19}{section*.16}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Problem 4 - QR method of finding eigenvalues}{20}{chapter.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Gauss-Seidel method result}{19}{subsection.3.3.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{Minimizing the demanded error}{21}{section*.17}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{For original system of equations:}{22}{section*.18}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{For task 2a) system of equations:}{22}{section*.19}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Table}{22}{section*.20}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Problem 4 - QR method of finding eigenvalues}{24}{chapter.4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Problem}{20}{section.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Theoretical introduction}{20}{section.4.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Solution}{20}{section.4.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.4}Discussion of the result}{20}{section.4.4}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Code appendix}{21}{chapter.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Problem}{24}{section.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Theoretical introduction}{24}{section.4.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Solution}{24}{section.4.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.4}Discussion of the result}{24}{section.4.4}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Code appendix}{25}{chapter.5}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Task 2 Code}{21}{section.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Main function}{21}{subsection.5.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}checkIfMatrixIsSquareMatrix}{21}{subsection.5.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.3}gaussianEliminationWithPartialPivoting}{23}{subsection.5.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.4}partialPivoting}{23}{subsection.5.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.5}partialPivotingSwapOneRow}{23}{subsection.5.1.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.6}swapRowMatrix}{23}{subsection.5.1.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.7}swapValueVector}{24}{subsection.5.1.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.8}gaussianElimination}{24}{subsection.5.1.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.9}substractRows}{24}{subsection.5.1.9}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.10}backSubstitutionPhase}{25}{subsection.5.1.10}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.11}iterativeResidualCorrection}{25}{subsection.5.1.11}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.12}improveSolution}{25}{subsection.5.1.12}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Task 3e code}{26}{section.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}jacobiMethod}{26}{subsection.5.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}initializeValues}{26}{subsection.5.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}decomposeMatrix}{26}{subsection.5.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.4}jacobiLoop}{27}{subsection.5.2.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.5}jacobiInsideLoop}{27}{subsection.5.2.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.6}jacobiEquation}{27}{subsection.5.2.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.7}checkError}{27}{subsection.5.2.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.8}endOfLoop}{28}{subsection.5.2.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.9}dispFinalResults}{28}{subsection.5.2.9}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Task 2 Code}{25}{section.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Main function}{25}{subsection.5.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}checkIfMatrixIsSquareMatrix}{25}{subsection.5.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.3}gaussianEliminationWithPartialPivoting}{27}{subsection.5.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.4}partialPivoting}{27}{subsection.5.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.5}partialPivotingSwapOneRow}{27}{subsection.5.1.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.6}swapRowMatrix}{27}{subsection.5.1.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.7}swapValueVector}{28}{subsection.5.1.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.8}gaussianElimination}{28}{subsection.5.1.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.9}substractRows}{28}{subsection.5.1.9}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.10}backSubstitutionPhase}{29}{subsection.5.1.10}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.11}iterativeResidualCorrection}{29}{subsection.5.1.11}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.12}improveSolution}{29}{subsection.5.1.12}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Task 3 code}{30}{section.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}initializeValues}{30}{subsection.5.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}decomposeMatrix}{30}{subsection.5.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}jacobiLoop}{31}{subsection.5.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.4}jacobiInsideLoop}{31}{subsection.5.2.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.5}jacobiEquation}{31}{subsection.5.2.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.6}gaussSeidelLoop}{32}{subsection.5.2.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.7}gaussiInsideLoop}{32}{subsection.5.2.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.8}gaussSeidelEquation}{32}{subsection.5.2.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.9}checkError}{32}{subsection.5.2.9}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.10}endOfLoop}{33}{subsection.5.2.10}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.11}dispFinalResults}{33}{subsection.5.2.11}\protected@file@percent }
\bibcite{texbook}{1}
\gdef \@abspage@last{30}
\gdef \@abspage@last{36}

View File

@ -1,5 +1,5 @@
# Fdb version 3
["pdflatex"] 1636674250 "projectA.tex" "projectA.pdf" "projectA" 1636674251
["pdflatex"] 1636680024 "projectA.tex" "projectA.pdf" "projectA" 1636680025
"/etc/texmf/web2c/texmf.cnf" 1635008344 475 c0e671620eb5563b2130f56340a5fde8 ""
"/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab ""
"/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
@ -150,13 +150,13 @@
"/usr/share/texmf/web2c/texmf.cnf" 1613593815 38841 799d1dd9682a55ce442e10c99777ecc1 ""
"/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1635008389 5160710 ecf427ae8fa19139d8691f526e47bb9b ""
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1635008460 2570450 6e12b1c097cbda0f70015645294afd24 ""
"projectA.aux" 1636674251 9147 1c781f2a95bf085eea7f5be3d50ec764 "pdflatex"
"projectA.out" 1636674251 3538 6fde6de672cc75e5d00cd405f1e383f3 "pdflatex"
"projectA.tex" 1636674249 32686 d604dcc57cb90d2b237ac93e70e272eb ""
"projectA.toc" 1636674251 5374 c3b887a47cd715424c93c048cb129139 "pdflatex"
"projectA.aux" 1636680025 10002 4fc10a93bf741912cf8818884a509f2f "pdflatex"
"projectA.out" 1636680025 3765 4ecb5101ef581cff275f51dba6ab5b31 "pdflatex"
"projectA.tex" 1636680023 40944 36a863bebeeed9415f2072b63916a877 ""
"projectA.toc" 1636680025 5942 df0288bcb559ef6d57b394d1a51e0fea "pdflatex"
(generated)
"projectA.aux"
"projectA.pdf"
"projectA.log"
"projectA.out"
"projectA.pdf"
"projectA.toc"
"projectA.log"

View File

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/Debian) (preloaded format=pdflatex 2021.10.23) 12 NOV 2021 00:44
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/Debian) (preloaded format=pdflatex 2021.10.23) 12 NOV 2021 02:20
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
@ -534,86 +534,114 @@ Overfull \hbox (5.74863pt too wide) in paragraph at lines 668--671
\T1/cmr/m/n/10 low as $\OT1/cmr/m/n/10 1\OML/cmm/m/it/10 :\OT1/cmr/m/n/10 776356839400250\OML/cmm/m/it/10 e \OMS/cmsy/m/n/10 ^^@ \OT1/cmr/m/n/10 15$ \T1/cmr/m/n/10 with de-manded tol-er-ance = $\OT1/cmr/m/n/10 3\OML/cmm/m/it/10 :\OT1/cmr/m/n/10 202372833989376\OML/cmm/m/it/10 e \OMS/cmsy/m/n/10 ^^@
[]
[18] [19]
[18] [19] [20]
Overfull \hbox (5.74863pt too wide) in paragraph at lines 841--844
\T1/cmr/m/n/10 low as $\OT1/cmr/m/n/10 1\OML/cmm/m/it/10 :\OT1/cmr/m/n/10 776356839400250\OML/cmm/m/it/10 e \OMS/cmsy/m/n/10 ^^@ \OT1/cmr/m/n/10 15$ \T1/cmr/m/n/10 with de-manded tol-er-ance = $\OT1/cmr/m/n/10 3\OML/cmm/m/it/10 :\OT1/cmr/m/n/10 202372833989376\OML/cmm/m/it/10 e \OMS/cmsy/m/n/10 ^^@
[]
[21] [22] [23]
Chapter 4.
[20
[24
]
Chapter 5.
LaTeX Font Info: Trying to load font information for TS1+fvm on input line 759.
LaTeX Font Info: Trying to load font information for TS1+fvm on input line 931.
(/usr/share/texlive/texmf-dist/tex/latex/bera/ts1fvm.fd
File: ts1fvm.fd 2004/09/07 scalable font definitions for TS1/fvm.
)
LaTeX Font Info: Font shape `TS1/fvm/m/n' will be
(Font) scaled to size 8.50006pt on input line 759.
[21
(Font) scaled to size 8.50006pt on input line 931.
[25
] [22] [23]
] [26] [27]
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 864.
(textcomp) Default family used instead on input line 1036.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 866.
[24]
(textcomp) Default family used instead on input line 1038.
[28]
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 877.
(textcomp) Default family used instead on input line 1049.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 878.
(textcomp) Default family used instead on input line 1050.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 887.
(textcomp) Default family used instead on input line 1059.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 899.
(textcomp) Default family used instead on input line 1071.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 912.
(textcomp) Default family used instead on input line 1084.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 913.
[25]
(textcomp) Default family used instead on input line 1085.
[29]
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 940.
(textcomp) Default family used instead on input line 1114.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 954.
[26]
(textcomp) Default family used instead on input line 1115.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 965.
(textcomp) Default family used instead on input line 1129.
[30]
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 988.
(textcomp) Default family used instead on input line 1140.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1000.
(textcomp) Default family used instead on input line 1162.
[31]
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1002.
[27] [28] [29
(textcomp) Default family used instead on input line 1173.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1195.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1196.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1209.
[32]
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1211.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1246.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1248.
Package textcomp Info: Symbol \textminus not provided by
(textcomp) font family fvm in TS1 encoding.
(textcomp) Default family used instead on input line 1250.
[33] [34] [35
] (./projectA.aux)
Package rerunfilecheck Info: File `projectA.out' has not changed.
(rerunfilecheck) Checksum: 6FDE6DE672CC75E5D00CD405F1E383F3;3538.
(rerunfilecheck) Checksum: 4ECB5101EF581CFF275F51DBA6AB5B31;3765.
)
Here is how much of TeX's memory you used:
12665 strings out of 479304
219803 string characters out of 5869778
945400 words of memory out of 5000000
29342 multiletter control sequences out of 15000+600000
12730 strings out of 479304
220761 string characters out of 5869778
943402 words of memory out of 5000000
29356 multiletter control sequences out of 15000+600000
424556 words of font info for 76 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
81i,8n,88p,407b,2253s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-t1.enc}{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc}{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/bera/fvmr8a.pfb></usr/share/texmf/fonts/type1/pu
blic/cm-super/sfbx1000.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx1200.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx1440.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx2074.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx2488.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm1728.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfti1000.pfb>
Output written on projectA.pdf (30 pages, 315313 bytes).
Output written on projectA.pdf (36 pages, 326818 bytes).
PDF statistics:
755 PDF objects out of 1000 (max. 8388607)
696 compressed objects within 7 object streams
297 named destinations out of 1000 (max. 500000)
401 words of extra memory for PDF output out of 10000 (max. 10000000)
847 PDF objects out of 1000 (max. 8388607)
781 compressed objects within 8 object streams
348 named destinations out of 1000 (max. 500000)
425 words of extra memory for PDF output out of 10000 (max. 10000000)

View File

@ -19,32 +19,35 @@
\BOOKMARK [2][-]{subsection.3.2.1}{Procedure}{section.3.2}% 19
\BOOKMARK [1][-]{section.3.3}{Discussion of the result}{chapter.3}% 20
\BOOKMARK [2][-]{subsection.3.3.1}{Jacobi method result}{section.3.3}% 21
\BOOKMARK [0][-]{chapter.4}{Problem 4 - QR method of finding eigenvalues}{}% 22
\BOOKMARK [1][-]{section.4.1}{Problem}{chapter.4}% 23
\BOOKMARK [1][-]{section.4.2}{Theoretical introduction}{chapter.4}% 24
\BOOKMARK [1][-]{section.4.3}{Solution}{chapter.4}% 25
\BOOKMARK [1][-]{section.4.4}{Discussion of the result}{chapter.4}% 26
\BOOKMARK [0][-]{chapter.5}{Code appendix}{}% 27
\BOOKMARK [1][-]{section.5.1}{Task 2 Code}{chapter.5}% 28
\BOOKMARK [2][-]{subsection.5.1.1}{Main function}{section.5.1}% 29
\BOOKMARK [2][-]{subsection.5.1.2}{checkIfMatrixIsSquareMatrix}{section.5.1}% 30
\BOOKMARK [2][-]{subsection.5.1.3}{gaussianEliminationWithPartialPivoting}{section.5.1}% 31
\BOOKMARK [2][-]{subsection.5.1.4}{partialPivoting}{section.5.1}% 32
\BOOKMARK [2][-]{subsection.5.1.5}{partialPivotingSwapOneRow}{section.5.1}% 33
\BOOKMARK [2][-]{subsection.5.1.6}{swapRowMatrix}{section.5.1}% 34
\BOOKMARK [2][-]{subsection.5.1.7}{swapValueVector}{section.5.1}% 35
\BOOKMARK [2][-]{subsection.5.1.8}{gaussianElimination}{section.5.1}% 36
\BOOKMARK [2][-]{subsection.5.1.9}{substractRows}{section.5.1}% 37
\BOOKMARK [2][-]{subsection.5.1.10}{backSubstitutionPhase}{section.5.1}% 38
\BOOKMARK [2][-]{subsection.5.1.11}{iterativeResidualCorrection}{section.5.1}% 39
\BOOKMARK [2][-]{subsection.5.1.12}{improveSolution}{section.5.1}% 40
\BOOKMARK [1][-]{section.5.2}{Task 3e code}{chapter.5}% 41
\BOOKMARK [2][-]{subsection.5.2.1}{jacobiMethod}{section.5.2}% 42
\BOOKMARK [2][-]{subsection.5.2.2}{initializeValues}{section.5.2}% 43
\BOOKMARK [2][-]{subsection.5.2.3}{decomposeMatrix}{section.5.2}% 44
\BOOKMARK [2][-]{subsection.5.2.4}{jacobiLoop}{section.5.2}% 45
\BOOKMARK [2][-]{subsection.5.2.5}{jacobiInsideLoop}{section.5.2}% 46
\BOOKMARK [2][-]{subsection.5.2.6}{jacobiEquation}{section.5.2}% 47
\BOOKMARK [2][-]{subsection.5.2.7}{checkError}{section.5.2}% 48
\BOOKMARK [2][-]{subsection.5.2.8}{endOfLoop}{section.5.2}% 49
\BOOKMARK [2][-]{subsection.5.2.9}{dispFinalResults}{section.5.2}% 50
\BOOKMARK [2][-]{subsection.3.3.2}{Gauss-Seidel method result}{section.3.3}% 22
\BOOKMARK [0][-]{chapter.4}{Problem 4 - QR method of finding eigenvalues}{}% 23
\BOOKMARK [1][-]{section.4.1}{Problem}{chapter.4}% 24
\BOOKMARK [1][-]{section.4.2}{Theoretical introduction}{chapter.4}% 25
\BOOKMARK [1][-]{section.4.3}{Solution}{chapter.4}% 26
\BOOKMARK [1][-]{section.4.4}{Discussion of the result}{chapter.4}% 27
\BOOKMARK [0][-]{chapter.5}{Code appendix}{}% 28
\BOOKMARK [1][-]{section.5.1}{Task 2 Code}{chapter.5}% 29
\BOOKMARK [2][-]{subsection.5.1.1}{Main function}{section.5.1}% 30
\BOOKMARK [2][-]{subsection.5.1.2}{checkIfMatrixIsSquareMatrix}{section.5.1}% 31
\BOOKMARK [2][-]{subsection.5.1.3}{gaussianEliminationWithPartialPivoting}{section.5.1}% 32
\BOOKMARK [2][-]{subsection.5.1.4}{partialPivoting}{section.5.1}% 33
\BOOKMARK [2][-]{subsection.5.1.5}{partialPivotingSwapOneRow}{section.5.1}% 34
\BOOKMARK [2][-]{subsection.5.1.6}{swapRowMatrix}{section.5.1}% 35
\BOOKMARK [2][-]{subsection.5.1.7}{swapValueVector}{section.5.1}% 36
\BOOKMARK [2][-]{subsection.5.1.8}{gaussianElimination}{section.5.1}% 37
\BOOKMARK [2][-]{subsection.5.1.9}{substractRows}{section.5.1}% 38
\BOOKMARK [2][-]{subsection.5.1.10}{backSubstitutionPhase}{section.5.1}% 39
\BOOKMARK [2][-]{subsection.5.1.11}{iterativeResidualCorrection}{section.5.1}% 40
\BOOKMARK [2][-]{subsection.5.1.12}{improveSolution}{section.5.1}% 41
\BOOKMARK [1][-]{section.5.2}{Task 3 code}{chapter.5}% 42
\BOOKMARK [2][-]{subsection.5.2.1}{initializeValues}{section.5.2}% 43
\BOOKMARK [2][-]{subsection.5.2.2}{decomposeMatrix}{section.5.2}% 44
\BOOKMARK [2][-]{subsection.5.2.3}{jacobiLoop}{section.5.2}% 45
\BOOKMARK [2][-]{subsection.5.2.4}{jacobiInsideLoop}{section.5.2}% 46
\BOOKMARK [2][-]{subsection.5.2.5}{jacobiEquation}{section.5.2}% 47
\BOOKMARK [2][-]{subsection.5.2.6}{gaussSeidelLoop}{section.5.2}% 48
\BOOKMARK [2][-]{subsection.5.2.7}{gaussiInsideLoop}{section.5.2}% 49
\BOOKMARK [2][-]{subsection.5.2.8}{gaussSeidelEquation}{section.5.2}% 50
\BOOKMARK [2][-]{subsection.5.2.9}{checkError}{section.5.2}% 51
\BOOKMARK [2][-]{subsection.5.2.10}{endOfLoop}{section.5.2}% 52
\BOOKMARK [2][-]{subsection.5.2.11}{dispFinalResults}{section.5.2}% 53

Binary file not shown.

Binary file not shown.

View File

@ -734,6 +734,178 @@ We managed to achieve slightly better (as in, the error was smaller) results tha
\end{tabular}}
\end{center}
\subsection{Gauss-Seidel method result}
For system of equations We got in this task We got following results:
\\
Without the change in demanded tolerance:
\[ x = \left( \begin{array}{cc}
-0.076776098668341 \\
2.105784262642568 \\
0.395344797635474 \\
0.397776619764909
\end{array} \right)
\]
Error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 1.154375287358407e-10 \]
We managed to do this in \textbf{38} iterations of our loop, and the demanded tolerance did not change. (This required small change in code where We ommited the part of code responsible for changing demandedTolerance if $ \| \mathbf{A}x-b \| > \delta_2) $ )
With the change in demanded tolerance:
\[ x = \left( \begin{array}{cc}
-0.076776098668341 \\
2.105784262642568 \\
0.395344797635474 \\
0.397776619764909
\end{array} \right)
\]
Error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 5.770361548895147e-11 \]
We got this result in \textbf{37} iterations and demanded tolerance was equal to $2*10^{-10}$
Compared to matlab function
\[ x_{matlab} = \left( \begin{array}{cc}
-0.076776098662498 \\
2.105784262636790 \\
0.395344797637659 \\
0.397776619767240 \\
\end{array} \right)
\]
Matlab error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 4.070144838902081e-15 \]
For data from task 2a We got: \\
Without change in demanded tolerance:
\[ x_a = \left( \begin{array}{cc}
-0.930024655108186 \\
-1.223407298660663 \\
-1.273530574212508 \\
-1.230517757317628 \\
-1.151356031082747 \\
-1.056883669273682 \\
-0.952628310081466 \\
-0.834334594312996 \\
-0.683708806198363 \\
-0.450125157620744 \\
\end{array} \right)
\]
Error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 6.955194519943778e-11 \]
We managed to do this in \textbf{59} iterations of our loop, and the demanded tolerance did not change.
With change in demanded tolerance:
\[ x_a = \left( \begin{array}{cc}
-0.930024655104470 \\
-1.223407298653515 \\
-1.273530574202540 \\
-1.230517757305602 \\
-1.151356031069692 \\
-1.056883669260597 \\
-0.952628310069469 \\
-0.834334594303006 \\
-0.683708806191233 \\
-0.450125157617020 \\
\end{array} \right)
\]
Error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 1.699812218689508e-10 \]
We managed to do this in \textbf{57} iterations of our loop, and the demanded tolerance changed to $4*10^{-10}$
Compared to matlab $ A \ b $ function
\[ x_{matlab} = \left( \begin{array}{cc}
-0.930024655110760 \\
-1.223407298665612 \\
-1.273530574219411 \\
-1.230517757325956 \\
-1.151356031091789 \\
-1.056883669282743 \\
-0.952628310089775 \\
-0.834334594319914 \\
-0.683708806203301 \\
-0.450125157623323 \\
\end{array} \right)
\]
Matlab error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 3.662053438817790e-15 \]
For Matrix and Vector from task 2b) error of
\[ \| x^{(i+1)} - x^{(i)} \| \]
grew to infinity, therefore We could never achieve demanded tolerance, therefore the program executed infinite loop.
\subsubsection{Minimizing the demanded error}
We tried to minimize the demanded error using this steps:
\begin{enumerate}
\item We copied error from matlab function and pasted it into demanded tolerance.
\item If We did not get infinite loop We copied the newly acquired error and pasted it into demanded tolerance.
\item If We got inifinite loop We used the previous error as "minimal" demanded error.
\end{enumerate}
\paragraph{For original system of equations:}
We managed to get results with error as low as $1.776356839400250e-15$ with demanded tolerance = $3.202372833989376e-15$ for lower values program went into infinite loop.
Results for demanded tolerance = $3.202372833989376e-15$
For given matrix:
\[ x = \left( \begin{array}{cc}
-0.076776098662498 \\
2.105784262636790 \\
0.395344797637659 \\
0.397776619767240
\end{array} \right)
\]
Error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 3.108624468950438e-15 \]
We got this result in \textbf{53} iterations and demanded tolerance did not change.
\paragraph{For task 2a) system of equations:}
We managed to get results with error as low as
\[ 3.108624468950438e-15 \] with demanded tolerance:
\[ 3.202372833989376e-15 \]
for lower values program went into infinite loop.
For demanded tolerance = $3.202372833989376e-15$:
Results for 2a) system of equation
\[ x_a = \left( \begin{array}{cc}
-0.930024655110760 \\
-1.223407298665613 \\
-1.273530574219411 \\
-1.230517757325955 \\
-1.151356031091788 \\
-1.056883669282743 \\
-0.952628310089775 \\
-0.834334594319914 \\
-0.683708806203301 \\
-0.450125157623323
\end{array} \right)
\]
Error:
\[ r = \| \mathbf{A}\mathbf{x} - \mathbf{b}\| = 3.108624468950438e-15 \]
We managed to do this in \textbf{84} iterations of our loop, and the demanded tolerance did not change.
We managed to achieve slightly better (as in, the error was smaller) results than Matlab custom function.
\paragraph{Table}
\begin{center}
\resizebox{\textwidth}{!}{
\begin{tabular}{||c c c c c c||}
\hline
system of equations & method & demanded tolerance & final demanded tolerance & error & iterations \\
\hline
task 3 system & Jacobi method & 10e-10 & 10e-10 & 1.154375287358407e-10 & 38 \\
\hline
task 3 system & Jacobi method & 10e-10 & 20e-10 & 5.770361548895147e-11 & 37 \\
\hline
task 3 system & Jacobi method & 3.202372833989376e-15 & 3.202372833989376e-15 & 3.108624468950438e-15 & 53 \\
\hline
task 3 system & Matlab function & ? & ? & 4.070144838902081e-15 & ? \\
\hline
task 2a) system & Jacobi method & 10e-10 & 10e-10 & 6.955194519943778e-11 & 59 \\
\hline
task 2a) system & Jacobi method & 10e-10 & 40e-10 & 1.699812218689508e-10 & 57 \\
\hline
task 2a) system & Jacob method & 3.202372833989376e-15 & 3.202372833989376e-15 & 3.108624468950438e-15 & 84 \\
\hline
task 2a) system & Matlab function & ? & ? & 3.662053438817790e-15 & ? \\
\hline
\end{tabular}}
\end{center}
\chapter{Problem 4 - QR method of finding eigenvalues}
@ -917,27 +1089,30 @@ end % end function
\end{lstlisting}
\end{simplechar}
\section{Task 3e code}
\subsection{jacobiMethod}
\section{Task 3 code}
\begin{simplechar}
\begin{lstlisting}
function x = jacobiMethod(Matrix, Vector)
[L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, flag] = initializeValues(Matrix);
[x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag);
dispFinalResults(demandedTolerance, whichIterationAreWeOn, Matrix, Vector);
function [x_j, x_g] = iterative(Matrix, Vector)
[L, D, U, initial_x, whichIterationAreWeOnJ, whichIterationAreWeOnG, demandedToleranceJ, demandedToleranceG, flag, Rows] = initializeValues(Matrix);
[x_j, whichIterationAreWeOnJ, demandedToleranceJ] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOnJ, demandedToleranceJ, Vector, flag);
[x_g, whichIterationAreWeOnG, demandedToleranceG] = gaussSeidelLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOnG, demandedToleranceG, Vector, flag, Rows);
dispFinalResults(x_j, x_g, demandedToleranceJ, demandedToleranceG, whichIterationAreWeOnJ, whichIterationAreWeOnG, Matrix, Vector);
end
\end{lstlisting}
\end{simplechar}
\subsection{initializeValues}
\begin{simplechar}
\begin{lstlisting}
function [L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, flag] = initializeValues(Matrix)
function [L, D, U, initial_x, whichIterationAreWeOnJ, whichIterationAreWeOnG, demandedToleranceJ, demandedToleranceG, flag, Rows] = initializeValues(Matrix)
[Rows, ~] = size(Matrix);
[L, D, U] = decomposeMatrix(Matrix);
initial_x = ones(Rows, 1);
whichIterationAreWeOn = 0;
demandedTolerance = 1e-10; % as per task description
initial_x = zeros(Rows, 1);
whichIterationAreWeOnJ = 0;
whichIterationAreWeOnG = 0;
demandedToleranceJ = 10e-10; % as per task description
demandedToleranceG = 10e-10; % as per task description
flag = 0;
end
\end{lstlisting}
@ -949,10 +1124,10 @@ end
function [L, D, U] = decomposeMatrix(Matrix)
D = diag(diag(Matrix));
U = triu(Matrix, 1); % Generates upper triangular part of matrix
% where the second variable denotes on which diagonal of matrix should We
% where the second variable denotes on which diagonal of matrix should we
% start
L = tril(Matrix, -1); % Generates lower triangular part of matrix
% where the second variable denotes on which diagonal of matrix should We
% where the second variable denotes on which diagonal of matrix should we
% start
end
\end{lstlisting}
@ -961,22 +1136,21 @@ end
\subsection{jacobiLoop}
\begin{simplechar}
\begin{lstlisting}
function [x, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag)
while flag ~= 1 % flag denotes whether norm(Matrix*x-Vector) <= demandedTolerance
[x, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector);
end
function [x_j, whichIterationAreWeOn, demandedTolerance] = jacobiLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag)
while flag ~= 1 % flag denotes whether norm(Matrix*x_g-Vector) <= demandedTolerance
[x_j, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector);
end
end
\end{lstlisting}
\end{simplechar}
\subsection{jacobiInsideLoop}
\begin{simplechar}
\begin{lstlisting}
function [x, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector)
x = jacobiEquation(D, L, U, initial_x, Vector);
[flag, demandedTolerance] = checkError(x, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x, whichIterationAreWeOn);
function [x_j, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = jacobiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector)
x_j = jacobiEquation(D, L, U, initial_x, Vector);
[flag, demandedTolerance] = checkError(x_j, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x_j, whichIterationAreWeOn);
end
\end{lstlisting}
\end{simplechar}
@ -992,6 +1166,41 @@ end
\end{lstlisting}
\end{simplechar}
\subsection{gaussSeidelLoop}
\begin{simplechar}
\begin{lstlisting}
function [x_g, whichIterationAreWeOn, demandedTolerance] = gaussSeidelLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, flag, Rows)
while flag ~= 1 % flag denotes whether norm(Matrix*x_g-Vector) <= demandedTolerance
[x_g, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = gaussiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows);
end
end
\end{lstlisting}
\end{simplechar}
\subsection{gaussiInsideLoop}
\begin{simplechar}
\begin{lstlisting}
function [x_j, whichIterationAreWeOn, demandedTolerance, flag, initial_x] = gaussiInsideLoop(Matrix, L, D, U, initial_x, whichIterationAreWeOn, demandedTolerance, Vector, Rows)
x_j = gaussSeidelEquation(D, L, U, initial_x, Vector, Rows);
[flag, demandedTolerance] = checkError(x_j, initial_x, demandedTolerance, Matrix, Vector);
[initial_x, whichIterationAreWeOn] = endOfLoop(x_j, whichIterationAreWeOn);
end
\end{lstlisting}
\end{simplechar}
\subsection{gaussSeidelEquation}
\begin{simplechar}
\begin{lstlisting}
function x_g = gaussSeidelEquation(D, L, U, initial_x, Vector, Rows)
W = U*initial_x - Vector;
x_g(1, 1) = -W(1, 1) / D(1,1);
for i = 2 : Rows
x_g(i, 1) = calculateNominator(i, L, x_g, W) / D(i, i);
end
end
\end{lstlisting}
\end{simplechar}
\subsection{checkError}
\begin{simplechar}
\begin{lstlisting}
@ -1024,13 +1233,25 @@ end
\subsection{dispFinalResults}
\begin{simplechar}
\begin{lstlisting}
function dispFinalResults(demandedTolerance, whichIterationAreWeOn, Matrix, Vector)
disp("Final demandedTolerance");
disp(demandedTolerance);
disp("Final Iteration: ");
disp(whichIterationAreWeOn);
disp("A\b matlab:");
disp(Matrix \ Vector);
function dispFinalResults(x_j, x_g, demandedToleranceJ, demandedToleranceG, whichIterationAreWeOnJ, whichIterationAreWeOnG, Matrix, Vector)
disp("Final demandedTolerance for Jacobi method");
disp(demandedToleranceJ);
disp("Final demandedTolerance for Gaussian-Seidel method:");
disp(demandedToleranceG);
disp("Final Iteration for Jacobi method: ");
disp(whichIterationAreWeOnJ);
disp("Final Iteration for Gaussian-Seidel method: ");
disp(whichIterationAreWeOnG);
disp("Error for Jacobi method:");
disp(norm(Matrix*x_j - Vector));
disp("Error for Gaussian-Seidel method:");
disp(norm(Matrix*x_g - Vector));
disp("A\b error:");
disp(norm(Matrix * (Matrix\Vector) - Vector));
disp("Answer for Jacobi method: ");
disp(x_j);
disp("Answer for Gaussian-Seidel method: ");
disp(x_g);
end
\end{lstlisting}
\end{simplechar}

View File

@ -35,32 +35,39 @@
\contentsline {paragraph}{For original system of equations:}{18}{section*.14}%
\contentsline {paragraph}{For task 2a) system of equations:}{19}{section*.15}%
\contentsline {paragraph}{Table}{19}{section*.16}%
\contentsline {chapter}{\numberline {4}Problem 4 - QR method of finding eigenvalues}{20}{chapter.4}%
\contentsline {section}{\numberline {4.1}Problem}{20}{section.4.1}%
\contentsline {section}{\numberline {4.2}Theoretical introduction}{20}{section.4.2}%
\contentsline {section}{\numberline {4.3}Solution}{20}{section.4.3}%
\contentsline {section}{\numberline {4.4}Discussion of the result}{20}{section.4.4}%
\contentsline {chapter}{\numberline {5}Code appendix}{21}{chapter.5}%
\contentsline {section}{\numberline {5.1}Task 2 Code}{21}{section.5.1}%
\contentsline {subsection}{\numberline {5.1.1}Main function}{21}{subsection.5.1.1}%
\contentsline {subsection}{\numberline {5.1.2}checkIfMatrixIsSquareMatrix}{21}{subsection.5.1.2}%
\contentsline {subsection}{\numberline {5.1.3}gaussianEliminationWithPartialPivoting}{23}{subsection.5.1.3}%
\contentsline {subsection}{\numberline {5.1.4}partialPivoting}{23}{subsection.5.1.4}%
\contentsline {subsection}{\numberline {5.1.5}partialPivotingSwapOneRow}{23}{subsection.5.1.5}%
\contentsline {subsection}{\numberline {5.1.6}swapRowMatrix}{23}{subsection.5.1.6}%
\contentsline {subsection}{\numberline {5.1.7}swapValueVector}{24}{subsection.5.1.7}%
\contentsline {subsection}{\numberline {5.1.8}gaussianElimination}{24}{subsection.5.1.8}%
\contentsline {subsection}{\numberline {5.1.9}substractRows}{24}{subsection.5.1.9}%
\contentsline {subsection}{\numberline {5.1.10}backSubstitutionPhase}{25}{subsection.5.1.10}%
\contentsline {subsection}{\numberline {5.1.11}iterativeResidualCorrection}{25}{subsection.5.1.11}%
\contentsline {subsection}{\numberline {5.1.12}improveSolution}{25}{subsection.5.1.12}%
\contentsline {section}{\numberline {5.2}Task 3e code}{26}{section.5.2}%
\contentsline {subsection}{\numberline {5.2.1}jacobiMethod}{26}{subsection.5.2.1}%
\contentsline {subsection}{\numberline {5.2.2}initializeValues}{26}{subsection.5.2.2}%
\contentsline {subsection}{\numberline {5.2.3}decomposeMatrix}{26}{subsection.5.2.3}%
\contentsline {subsection}{\numberline {5.2.4}jacobiLoop}{27}{subsection.5.2.4}%
\contentsline {subsection}{\numberline {5.2.5}jacobiInsideLoop}{27}{subsection.5.2.5}%
\contentsline {subsection}{\numberline {5.2.6}jacobiEquation}{27}{subsection.5.2.6}%
\contentsline {subsection}{\numberline {5.2.7}checkError}{27}{subsection.5.2.7}%
\contentsline {subsection}{\numberline {5.2.8}endOfLoop}{28}{subsection.5.2.8}%
\contentsline {subsection}{\numberline {5.2.9}dispFinalResults}{28}{subsection.5.2.9}%
\contentsline {subsection}{\numberline {3.3.2}Gauss-Seidel method result}{19}{subsection.3.3.2}%
\contentsline {subsubsection}{Minimizing the demanded error}{21}{section*.17}%
\contentsline {paragraph}{For original system of equations:}{22}{section*.18}%
\contentsline {paragraph}{For task 2a) system of equations:}{22}{section*.19}%
\contentsline {paragraph}{Table}{22}{section*.20}%
\contentsline {chapter}{\numberline {4}Problem 4 - QR method of finding eigenvalues}{24}{chapter.4}%
\contentsline {section}{\numberline {4.1}Problem}{24}{section.4.1}%
\contentsline {section}{\numberline {4.2}Theoretical introduction}{24}{section.4.2}%
\contentsline {section}{\numberline {4.3}Solution}{24}{section.4.3}%
\contentsline {section}{\numberline {4.4}Discussion of the result}{24}{section.4.4}%
\contentsline {chapter}{\numberline {5}Code appendix}{25}{chapter.5}%
\contentsline {section}{\numberline {5.1}Task 2 Code}{25}{section.5.1}%
\contentsline {subsection}{\numberline {5.1.1}Main function}{25}{subsection.5.1.1}%
\contentsline {subsection}{\numberline {5.1.2}checkIfMatrixIsSquareMatrix}{25}{subsection.5.1.2}%
\contentsline {subsection}{\numberline {5.1.3}gaussianEliminationWithPartialPivoting}{27}{subsection.5.1.3}%
\contentsline {subsection}{\numberline {5.1.4}partialPivoting}{27}{subsection.5.1.4}%
\contentsline {subsection}{\numberline {5.1.5}partialPivotingSwapOneRow}{27}{subsection.5.1.5}%
\contentsline {subsection}{\numberline {5.1.6}swapRowMatrix}{27}{subsection.5.1.6}%
\contentsline {subsection}{\numberline {5.1.7}swapValueVector}{28}{subsection.5.1.7}%
\contentsline {subsection}{\numberline {5.1.8}gaussianElimination}{28}{subsection.5.1.8}%
\contentsline {subsection}{\numberline {5.1.9}substractRows}{28}{subsection.5.1.9}%
\contentsline {subsection}{\numberline {5.1.10}backSubstitutionPhase}{29}{subsection.5.1.10}%
\contentsline {subsection}{\numberline {5.1.11}iterativeResidualCorrection}{29}{subsection.5.1.11}%
\contentsline {subsection}{\numberline {5.1.12}improveSolution}{29}{subsection.5.1.12}%
\contentsline {section}{\numberline {5.2}Task 3 code}{30}{section.5.2}%
\contentsline {subsection}{\numberline {5.2.1}initializeValues}{30}{subsection.5.2.1}%
\contentsline {subsection}{\numberline {5.2.2}decomposeMatrix}{30}{subsection.5.2.2}%
\contentsline {subsection}{\numberline {5.2.3}jacobiLoop}{31}{subsection.5.2.3}%
\contentsline {subsection}{\numberline {5.2.4}jacobiInsideLoop}{31}{subsection.5.2.4}%
\contentsline {subsection}{\numberline {5.2.5}jacobiEquation}{31}{subsection.5.2.5}%
\contentsline {subsection}{\numberline {5.2.6}gaussSeidelLoop}{32}{subsection.5.2.6}%
\contentsline {subsection}{\numberline {5.2.7}gaussiInsideLoop}{32}{subsection.5.2.7}%
\contentsline {subsection}{\numberline {5.2.8}gaussSeidelEquation}{32}{subsection.5.2.8}%
\contentsline {subsection}{\numberline {5.2.9}checkError}{32}{subsection.5.2.9}%
\contentsline {subsection}{\numberline {5.2.10}endOfLoop}{33}{subsection.5.2.10}%
\contentsline {subsection}{\numberline {5.2.11}dispFinalResults}{33}{subsection.5.2.11}%