relative error: Error using ==> mtimes

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

 採用された回答

Jan
Jan 2012 年 9 月 16 日
編集済み: Jan 2012 年 9 月 16 日

1 投票

rhs = sqrt(1 - cos(x) .* cos(x))
While * performs the matrix multiplication, .* multiplies elementwise.

その他の回答 (1 件)

NH
NH 2012 年 9 月 16 日

0 投票

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 件のコメント

Jan
Jan 2012 年 9 月 17 日
編集済み: Jan 2012 年 9 月 17 日
  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 2012 年 9 月 17 日
1. Thank you, next time I will. 2. Wow! thank you fore your advice exactly what I needed.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeOperators and Elementary Operations についてさらに検索

タグ

質問済み:

NH
2012 年 9 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by