C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 三角比での余弦定理における誤差


(過去ログ 136 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■80329 / inTopicNo.1)  三角比での余弦定理における誤差
  
□投稿者/ ゆう (3回)-(2016/07/08(Fri) 10:41:24)

分類:[C#] 

visual studio 2013 の C# で作成しています。

余弦定理を用いて三角形の辺と角度(ラジアンではなく度)を計算するプログラムを作っているのですが、
浮動小数のためなのか誤差がでてしまいます。
特に角度の誤差が大きいため困っているのですがどうすればいいでしょうか。


//残りの1辺を計算(理想の結果 ans1 = 4)
double a1 = 3.0;
double b1 = 5.0;
double angle = 60.0;

double c1 = (a1 * a1) + (b1 * b1) - 2 * a1 * b1 * Math.Cos(angle * Math.PI / 180);
double ans1 = Math.Sqrt(c1);

Console.Write("{0}\n", ans1); //コンソール出力結果:4.35889894354067

//角度を計算(理想の結果 ans2 = 60)
double a2 = 3.0;
double b2 = 5.0;
double c2 = 4.0;

double rad = Math.Acos(((a2 * a2) + (b2 * b2) - (c2 * c2)) / (2 * a2 * b2));
double ans2 = rad * 180 / Math.PI;

Console.Write("{0}\n", ans2); //コンソール出力結果:53.130102354156

よろしくお願いします。
引用返信 編集キー/
■80332 / inTopicNo.2)  Re[1]: 三角比での余弦定理における誤差
□投稿者/ Hongliang (440回)-(2016/07/08(Fri) 12:15:39)
そもそも、内角が30度・60度・90度になる直角三角形は、辺の比が 1 : √3 : 2 になるものですので、想定されている図が変なことになっていると思われます。
引用返信 編集キー/
■80333 / inTopicNo.3)  Re[1]: 三角比での余弦定理における誤差
□投稿者/ WebSurfer (957回)-(2016/07/08(Fri) 12:38:02)
No80329 (ゆう さん) に返信

> 余弦定理を用いて三角形の辺と角度(ラジアンではなく度)を計算する

質問者さんの言う余弦定理とは ↓ これのことですか?

余弦定理
https://ja.wikipedia.org/wiki/%E4%BD%99%E5%BC%A6%E5%AE%9A%E7%90%86

であれば、コンソール出力結果はいずれも正しいのですが・・・(「理想の結果」が間違い)
引用返信 編集キー/
■80335 / inTopicNo.4)  Re[1]: 三角比での余弦定理における誤差
□投稿者/ 魔界の仮面弁士 (759回)-(2016/07/08(Fri) 13:09:05)
No80329 (ゆう さん) に返信
> //残りの1辺を計算(理想の結果 ans1 = 4)
> double a1 = 3.0;
> double b1 = 5.0;
> double angle = 60.0;

長さが 3:4:5 の三角形であれば、
 3と4 の角度が 90.00°ジャスト
 4と5 の角度が 36.87°弱(36.869897645844021296855612559093410657591571400…)
 5と3 の角度が 53.13°強(53.130102354155978703144387440906589342408428599…)
ですよね。60度にはなりませんよ。

ということで、
> Console.Write("{0}\n", ans2); //コンソール出力結果:53.130102354156
上記の角度と一致しますね。



C 点の角度(∠BCA)が 60.0°で、
線分 BC の長さが 3.0
線分 CA の長さが 5.0 の場合、
線分 AB の長さは √19 になります。

これはすなわち 4.35889894354067355223698198385961565913700392523244…
という値ですので、
> Console.Write("{0}\n", ans1); //コンソール出力結果:4.35889894354067
の結果に合致していますね。

ちなみにこの場合、
A 点の角度(∠CAB)は 36.586775553629462043984397507347858799419997839…
B 点の角度(∠ABC)は 83.413224446370537956015602492652141200580002161…
となります。
引用返信 編集キー/
■80337 / inTopicNo.5)  Re[2]: 三角比での余弦定理における誤差
□投稿者/ ゆう (4回)-(2016/07/08(Fri) 13:24:57)
ありがとうございました。
確かにテスト用に用意していたデータのほうが間違っていました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -