プログラミングのお題スレ Part22 (858レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
327: デフォルトの名無しさん [sage] 2024/04/17(水) 05:47:35.77 ID:F2fqxIYT ヘロンの公式はそのままだと、数値計算での安定性が良くないらしいぞ 解決策は、Wikipediaの英語版の方に… tps://en.wikipedia.org/wiki/Heron%27s_formula#Numerical_stability http://mevius.5ch.net/test/read.cgi/tech/1691038333/327
328: 327 [sage] 2024/04/17(水) 05:52:23.77 ID:F2fqxIYT そしてこんなとこでもカハンせんせーの名前がが http://mevius.5ch.net/test/read.cgi/tech/1691038333/328
330: デフォルトの名無しさん [] 2024/04/17(水) 23:38:33.35 ID:k4k/eSae >>327に載っている参考文献 William M. Kahan, ‘Miscalculating Area and Angles of a Needle-like Triangle’ http://www.cs.berkeley.edu/~wkahan/Triangle.pdf のTable 1の問題がパソコン等でのC++プログラムでも再現されるか試してみた。 https://ideone.com/r4toUS Table 1とは違い、Accurate Δが概ね正確な場合にHeron's Δ'が大きく懸け離れた不正確な値に なってしまうことはなく、ほぼ同じ値になり差はごく僅かしかない。Table 1のような不安定性は Table 1の計算に使われたプログラマブル関数電卓に特有の問題で、パソコン等のプログラムでは 再現されない。(パソコン等のdoubleの方が精度が高いので当然と言えば当然だが) 一方、(a, b, c) = (5278.64055, 94721.35941, 99999.99996)の場合は、逆にHeron's Δ' = 0が 正確なのにAccurate Δ = 9.53674324543714が大きく懸け離れた不正確な値になってしまう 重大な欠点がある。これは、Accurate Δの式の根号内の第2因数c - (a - b)が正確には0なのに 3.63797880709171e-12と計算されてしまい、この誤差が他の因数との乗算により増幅されるから。 Heron's Δ'の式の根号内の第4因数s - cは0と計算されるので問題ない。 double向けの入力値(a, b, c) = (31622.77777777662, 0.000000000023, 31622.77777777661)を 作れば、Heron's Δ' = 2.30085990753844e-07, Accurate Δ = 3.20111707955507e-07となり、 相対差は確かに大きくなるが、200ビットで計算したほぼ正確な値3.27490470056059e-07から 見れば両方とも不正確だから、Accurate Δの利点はない。 だから、パソコン等のプログラムでは改良版の式を使う必要がないどころか使うべきではなく、 ヘロンの公式をそのまま使う方が良い。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/330
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.043s