手計算の概算とMatlabの計算が合わない
7 ビュー (過去 30 日間)
古いコメントを表示
マトラボ上で以下の計算を行おうと考えています.
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 件のコメント
採用された回答
Atsushi Ueno
2023 年 3 月 13 日
編集済み: Atsushi Ueno
2023 年 3 月 13 日
> 原因がわからないので教えていただけると幸いです
原因は「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)) % 意図した結果になった
その他の回答 (1 件)
Hernia Baby
2023 年 3 月 12 日
自分の計算では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 件のコメント
Atsushi Ueno
2023 年 3 月 13 日
因みに入力が行ベクトルの場合、そのままだと被除数と除数の行列サイズが矛盾している為エラーが出て計算出来ません。@Hernia Babyさんはこのエラーを見た瞬間すぐさま除算演算子にドットを付けたはずです。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!