I am struggling to plot iteration vs error in the matlab code? can anyone help me with this? very much appreciate it.
6 ビュー (過去 30 日間)
古いコメントを表示
Uma Maheswara Rao Epuganti
2022 年 11 月 23 日
コメント済み: Walter Roberson
2022 年 11 月 25 日
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 件のコメント
採用された回答
Torsten
2022 年 11 月 24 日
編集済み: Torsten
2022 年 11 月 24 日
% 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 件のコメント
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
