手計算の概算とMatlabの計算が合わない
7 views (last 30 days)
Show older comments
マトラボ上で以下の計算を行おうと考えています.
Xsin = sin(x*10*pi);
Ycos = cos(x*10*pi);
theta = atan2(Xsin,Ycos);
a=90*pi/180;
R = sin(a)/sqrt(1-cos(a)*sin(2*theta));
分子のsin(a)は1で,分母のcos(a)は0,-1 <= sin(2*theta) <= 1なのでRは1に近い値が出るはずですが,
マトラボの計算結果では,値が0と表示されます.
また,sqrt(1-cos(a)*sin(2*theta))のみ計算すると1が計算結果として出てきます.
原因がわからないので教えていただけると幸いです.
0 Comments
Accepted Answer
Atsushi Ueno
on 13 Mar 2023
Edited: Atsushi Ueno
on 13 Mar 2023
> 原因がわからないので教えていただけると幸いです
原因は「x が列ベクトルなのに要素毎の除算をしていないから」だと予想します。
x = (-1:0.5:1)'; % x はズバリ列ベクトルでしょう
Xsin = sin(x*10*pi);
Ycos = cos(x*10*pi);
theta = atan2(Xsin,Ycos);
a=90*pi/180;
R = sin(a)/sqrt(1-cos(a)*sin(2*theta)) % 意図した結果にならない
R = sin(a)./sqrt(1-cos(a)*sin(2*theta)) % 意図した結果になった
More Answers (1)
Hernia Baby
on 12 Mar 2023
自分の計算では1となります。
入力する x で何か間違えたりはしていますか?
x = linspace(0,180,10)./180;
Xsin = sin(x*10*pi);
Ycos = cos(x*10*pi);
円を書いてプロットしてみます
t = linspace(0,2*pi,100);
figure
hold on
plot(sin(t),cos(t),':','Color',[.3 .3 .3])
xline(0,'k')
yline(0,'k')
axis([-2,2,-2,2])
axis square
plot(Ycos,Xsin,'r*')
hold off
計算してみます
theta = atan2(Xsin,Ycos);
a=90*pi/180;
R = sin(a)./sqrt(1-cos(a)*sin(2*theta));
表示します
disp(R)
2 Comments
Atsushi Ueno
on 13 Mar 2023
因みに入力が行ベクトルの場合、そのままだと被除数と除数の行列サイズが矛盾している為エラーが出て計算出来ません。@Hernia Babyさんはこのエラーを見た瞬間すぐさま除算演算子にドットを付けたはずです。
See Also
Categories
Find more on 2 次元および 3 次元プロット 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!