I am struggling to plot iteration vs error in the matlab code? can anyone help me with this? very much appreciate it.
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Uma Maheswara Rao Epuganti
el 23 de Nov. de 2022
Comentada: Walter Roberson
el 25 de Nov. de 2022
This is the code for Jacobi iteration method. i wanted to plot iteration vs error. but i couldn't figure out how to do it?
% Jacobi method for linear equation
function[x,rel_error]=jacobimethod(A, b, x0, tol, iteration)
% Inputs: A - Coefficient matrix
A=[2 -1 0;-1 2 -1;0 -1 2];
% b - Input matrix
b = [0; 2; 0];
x0=[0; 0; 0];
% tol - Defining tolerance for solution
tol=1.e-03;
% iteration - Number of iterations
iteration=10;
% Outputs: x - Solutions
% rel_error - Relative error
D = diag(diag(A)); % Making coefficient matrix diagonal
R = A - D; % Construction of another matrix "R"
N = 1; % iteration counter
x = x0;
rel_error = tol * 2; % norm(x - x0)/norm(x);
exct = A\b;
% Implementation of Jacobi method to solve Ax = b
while (rel_error>tol && N <= iteration)
xprev = x;
x = inv(D)*(b - R*xprev);
rel_error = norm((x - xprev)/x);
er = norm(x-exct)
fprintf('\n Iteration %i: Relative error =%d ',x, rel_error);
N = N + 1;
end
0 comentarios
Respuesta aceptada
Torsten
el 24 de Nov. de 2022
Editada: Torsten
el 24 de Nov. de 2022
% Inputs: A - Coefficient matrix
A=[2 -1 0;-1 2 -1;0 -1 2];
% b - Input matrix
b = [0; 2; 0];
% x0 - Initial guess
x0 = [0; 0; 0];
% tol - Defining tolerance for solution
tol=1.e-03;
% iteration - Number of iterations
iteration=10;
[x,Rel_error]=jacobimethod(A, b, x0, tol, iteration);
x
plot(Rel_error)
% Jacobi method for linear equation
function[x,Rel_error]=jacobimethod(A, b, x0, tol, iteration)
% Outputs: x - Solutions
% rel_error - Relative error
D = diag(diag(A)); % Making coefficient matrix diagonal
R = A - D; % Construction of another matrix "R"
N = 1; % iteration counter
x = x0;
rel_error = tol * 2; % norm(x - x0)/norm(x);
exct = A\b;
% Implementation of Jacobi method to solve Ax = b
while (rel_error>tol && N <= iteration)
xprev = x;
x = inv(D)*(b - R*xprev);
rel_error = norm(x - xprev)/norm(x);
Rel_error(N) = rel_error;
er = norm(x-exct);
%fprintf('\n Iteration %i: Relative error =%d ',N, rel_error);
N = N + 1;
end
end
4 comentarios
Walter Roberson
el 25 de Nov. de 2022
It looks to me as if the full plot is present in Torsten's answer.
Más respuestas (1)
Walter Roberson
el 24 de Nov. de 2022
fprintf('\n Iteration %d: Relative error = %g\n', N, rel_error);
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
