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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.80329 の関連記事表示

<< 0 >>
■80329  三角比での余弦定理における誤差
□投稿者/ ゆう -(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

    よろしくお願いします。
親記事 /過去ログ136より / 関連記事表示
削除チェック/

■80332  Re[1]: 三角比での余弦定理における誤差
□投稿者/ Hongliang -(2016/07/08(Fri) 12:15:39)
    そもそも、内角が30度・60度・90度になる直角三角形は、辺の比が 1 : √3 : 2 になるものですので、想定されている図が変なことになっていると思われます。
記事No.80329 のレス /過去ログ136より / 関連記事表示
削除チェック/

■80333  Re[1]: 三角比での余弦定理における誤差
□投稿者/ WebSurfer -(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

    であれば、コンソール出力結果はいずれも正しいのですが・・・(「理想の結果」が間違い)
記事No.80329 のレス /過去ログ136より / 関連記事表示
削除チェック/

■80335  Re[1]: 三角比での余弦定理における誤差
□投稿者/ 魔界の仮面弁士 -(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…
    となります。
記事No.80329 のレス /過去ログ136より / 関連記事表示
削除チェック/

■80337  Re[2]: 三角比での余弦定理における誤差
□投稿者/ ゆう -(2016/07/08(Fri) 13:24:57)
    ありがとうございました。
    確かにテスト用に用意していたデータのほうが間違っていました。
記事No.80329 のレス / END /過去ログ136より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -