How to avoid using 'diag' function?
Show older comments
Hello all
I've written this code to calculate vector x in Ax=b.
However, it seems that I shouldn't use diag function in my code. How can I do that? Is there any other way to do the same thing without using any Matlab built-in functions?
Thanks
function x1 = axb(A,b,e)
%This function takes the matrix of coefficients A and the vector b and the
%tolerance e as input.The output of the function shows both the number of
%iteration and the solution x.
n = length(b);
for k=1:n %k is the number of iterations
M(k)=b(k)/diag(A(k,k));
end
x0=transpose(M);
for j=1:n
x(j)=((b(j)-A(j,[1:j-1,j+1:n])*x0([1:j-1,j+1:n]))/A(j,j));
end
x1 = x';
k = 1;
while norm(x1-x0,1)>e
for j=1:n
x_new(j)=((b(j)-A(j,[1:j-1,j+1:n])*x1([1:j-1,j+1:n]))/A(j,j));
end
x0=x1;
x1=x_new';
k = k + 1;
end
k;
fprintf('\nIteration: %3d\n',k)
x = x1';
Accepted Answer
More Answers (0)
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!