relative error: Error using ==> mtimes

6 views (last 30 days)
NH
NH on 16 Sep 2012
Hello I am trying to get the relative error for sinx=sqrt(1-cos^2(x) and getting error with this matlab code:
clear
clc
x=logspace(-1,-10,10);
lhs=sin(x);
t=cos(x);
rhs=sqrt(1-cos(x)*cos(x));
abserr=abs(lhs-rhs);
Rel=abs((lhs-rhs)/lhs);
disp('x error rel.error')
disp('--------------------')
for i=1:10
disp(sprintf('%22.15e %22.15e %22.15e\n',x(i),abserr(i),Rel(i)))
end
end
??? Error using ==> mtimes Inner matrix dimensions must agree.
Error in ==> Q at 6 rhs=sqrt(1-cos(x)*cos(x));
any idea? thanks

Accepted Answer

Jan
Jan on 16 Sep 2012
Edited: Jan on 16 Sep 2012
rhs = sqrt(1 - cos(x) .* cos(x))
While * performs the matrix multiplication, .* multiplies elementwise.

More Answers (1)

NH
NH on 16 Sep 2012
thank you thats solved the problem. Now after i run it i get this new error:
?? Attempted to access Rel(2); index out of bounds because numel(Rel)=1.
Error in ==> Q at 11 disp(sprintf('%22.15e %22.15e %22.15e/n',x(i),abserr(i),Rel(i)))
clear
clc
x=logspace(-1,-10,10);
lhs=sin(x);
rhs=sqrt(1-cos(x).*cos(x));
abserr=abs(lhs-rhs);
Rel=abs((lhs-rhs)/lhs);
disp('x error rel.error')
disp('--------------------')
for i=1:10
disp(sprintf('%22.15e %22.15e %22.15e\n',x(i),abserr(i),Rel(i)))
end
end
  2 Comments
Jan
Jan on 17 Sep 2012
Edited: Jan on 17 Sep 2012
  1. Please post a new thread for a new problem.
  2. Use the debugger to find the reasons for the size of Rel: Set a breakpoint in the line Rel=abs((lhs-rhs)/lhs) to find out, that exactly the same argument of matrix versus elementwise operations concerns the division also. Therefore you need ./ instead of / . Surprised?
NH
NH on 17 Sep 2012
1. Thank you, next time I will. 2. Wow! thank you fore your advice exactly what I needed.

Sign in to comment.

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!