アプリ版:「スタンプのみでお礼する」機能のリリースについて

円周の近似値について。

次の方法で円周の近似値を求めました。
1.中心角が360/nの扇形を考える。
2.余弦定理で線形の弦を求める。
3.求めた弦の長さをn倍する。

nは10^1,10^2...10^5の5パターン考える。


この問題について不明点があります。
nの値が大きくなればなるほど正確な円周に近づきそうなのですが、実際はn=10^5の時近似値は0となり、そうはなりませんでした。
なぜですか?
教えてください。

質問者からの補足コメント

  • 説明不足だったので補足します。すみません。
    これはc言語でプログラミングして解きました。
    10^3までは本来の円周の値に近づいていき、10^4で少し小さくなり、10^5で値が0になりました。
    もう一度よく考えてみると、分母のnが大きくなると中心角が0に近づいてしまうからなのかなと思ったのですが、あってますか?

      補足日時:2022/08/18 02:03

A 回答 (7件)

プログラムの提示ないので詳細は解らんけど


式の中に 1-cosθ とか 2-2cosθとかあれば(このやり方では普通でてくる)
思いっきり桁落ちするだろうね

cだと実数の多倍長演算無いから無理。7~8桁の精度で我慢しよう。

で、アドバイスとしては
①cosを直接計算せず、n=2^Nにして半角公式を使う。
cos(θ/2)=√((1+cosθ)/2)
②多倍長演算の使えるJavaやc#やpythonを使う。
    • good
    • 0

おまけ.



この件については余弦定理を選んだ時点で敗北者. 正弦定理にしとけばよかったのにね.
    • good
    • 0

cosθのとこで、精度的に1になってしまうと思う。


double型で計算したら?
    • good
    • 0

あ~, やっぱり 10^4 でもちょっと出てたのね....



あなたの使っている「c言語」とやらでは数値がどのような形になっているのかな? そして「桁落ち」や「情報落ち」などといった言葉は知ってる?
    • good
    • 0

No.1補足



余弦定理使っても仕方ないと思いますよ。
この定理は三角関数を使っていて、三角関数には円周率が使われるんですから、堂々巡り(円周率には円周を使うから)。

2等辺3角形の底辺の長さを計算してn倍するのが本筋。
    • good
    • 1

具体的にどんな計算をしたのかはっきりと書いてほしいけど....



まあなにかの近似計算をしたときに誤差がもっさりはいったとかかな.
    • good
    • 0

実際にやって見ましたが、6.28318554・・・になります。



計算間違いが有るのでは?

半径1の円で考えると、余弦定理より
弦²=1²+1²-2cos(2π/100000)=0.0000000039478・・・
弦=√0.0000000039478・・・=0.0000628319・・・

100000弦=6.28318554・・・
半径1の円の円周だから、近似値としては合ってます。


cos(a)のaは正しくはラジアンなのですが、度で指定して、何かの計算サイトを使ってませんか?

関数電卓や計算サイトでは、ラジアンで指定するものと、度で指定するものがあるから、そこの指定間違いしてませんか???
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!