- 締切済み
C言語などで円周率を求める方法を教えてください
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- rndwalker7
- ベストアンサー率45% (5/11)
技術評論社 河西朝雄著の 「C言語によるはじめてのアルゴリズム入門」 という本の 第二章の数値計算の部分に πの1000桁を求めるプログラムが載っています。 こちらを参考にするとよいとおもいます。 円周率をもとめるのには マチンの公式を使っています。 多桁の数を計算する関数も作っています。
- nag0720
- ベストアンサー率58% (1093/1860)
円周率の計算自体はそんなに難しくありません。 π=6Σ[n→∞]{(2n)!/((2^(4n+1)(n!)^2(2n+1))} などのような級数をプログラミングすれば可能です。 http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87 問題は桁数です。普通にプログラミングしたのでは、その言語がサポートしている有効桁数までしか求めることができません。 それを解決するには、有効桁数を設定できるような数値計算ライブラリを入手するか、自作するしかありません。 自作する一番簡単な方法は、例えば有効桁数1000桁の数値を扱いたい場合、1000桁の文字列(または1000個の配列)に数値を格納し、その文字列(配列)同士で加減乗除ができるような関数を作ります。
- reiman
- ベストアンサー率62% (102/163)
PHPならば <?php for($sum=0,$i=0;$i<20;$i++) { $sum+=dash(2*$i)/pow(2,4*$i+1)/pow(dash($i),2)/(2*$i+1); $result=$sum*6; print<<<EOL <div>{$i}:{$result}</div> EOL; } function dash($n) { if($n<2)return 1; return $n*dash($n-1); } ?> 結果: 0:3 1:3.125 2:3.1390625 3:3.1411551339286 4:3.14151117234 5:3.1415767157749 6:3.1415894253191 7:3.1415919823584 8:3.1415925111579 9:3.1415926228706 10:3.1415926468756 11:3.1415926521059 12:3.1415926532587 13:3.1415926535153 14:3.1415926535729 15:3.141592653586 16:3.1415926535889 17:3.1415926535896 18:3.1415926535897 19:3.1415926535898
関連するQ&A
- C言語で円周率
大学でC言語で円周率を出すプログラムを作れと言われたのですが 一度作ってみたもののうまくできず さらに先生には 「もっと説明できるように作って来い」と言われてしまって困っています。 簡単なプログラミングで作りたいのですが どなたか教えていただけるとうれしいです!
- ベストアンサー
- その他(学問・教育)
- C言語で円周率を求めるプログラムを作りたいのですがわかりません。
C言語で円周率を求めるプログラムを作りたいのですがわかりません。 どなたか教えていただけないでしょうか。
- ベストアンサー
- C・C++・C#
- 円周(率)の計算方法
文系人間です。 高校の数学は、計算問題は解けるけど…といったレベルでした。 円周率は、「円周÷直径」と習いました。 しかし、実生活において円周や直径を実測しようと思ったら、 定規や巻き尺を使ってせいぜい10分の1ミリまでが限界です。 それで正確な(小数点以下何兆ケタの)円周率が算出できるとは思えません。 ということは円周も計算式で求めなければならないということです。 で、円周は、「直径×円周率」…これでは堂々巡りですね。 円周を円周率を使わずに求める方法ってあるんでしょうか。 ある値の近似値ってその値そのものですか? 小数点以下何兆ケタの円周率を算出する公式は調べれば出てくると思いますが、 その公式が意味するところは、一般人にも分かるように説明できるのでしょうか。 また、そのような公式は、円周と関係あるのでしょうか、ないのでしょうか。 円周と関係ないとしたら、どうして定義から離れたところで、円周率が算出できるのでしょうか。 円周率に対するもやもやした気持ちを言葉にすること自体が難しいのですが、 あえて質問にするとしたらこんな形です。 推察するに聞きたいことはそうじゃないだろ、というご意見でも結構です。 よろしくお願いいたします。
- ベストアンサー
- 数学・算数
- C言語、円周率の値が0.000000?
いつも大変お世話になりありがとうございます。 下記のコードを実行したところ、円周率の値が0.000000になりました。 どうしてでしょうか? アドバイスの程宜しくお願い申し上げます。 #include <stdio.h> int main(void) { double pi; printf("円周率の値はいくつですか?\n"); scanf("%1f", &pi); printf("円周率の値は%fです。\n", pi); return 0; } C:\MinGW>Sample9 円周率の値はいくつですか? 3.14 円周率の値は0.000000です。
- ベストアンサー
- C・C++・C#
- なぜ円周率ってそんなに重要なんですか
円周率。円の直径の約3倍が円の長さというのはわかるのですが、その円周率を突き詰めていくのにどういった意味があるんでしょうか?3. 1415926535 8979323846....と桁を増やしていって、その数を使って何に応用するというか、役にたつんでしょうか?
- ベストアンサー
- 数学・算数
- C言語で円周率を求めるプログラムを解読しています。
C言語で円周率を求めるプログラムを解読しています。 ウィキ(http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87)にも載っていましたが、 π/6=で始まる式を使って、 一項一項を順に求めていき、 最後にすべての項を足したものに6をかけて πを求めるという方法を使っています。 誤差が小さくなるまで繰り返すということで while(a>=1e-10) という表現をしているのですが、 ここのところが理解できません。 どなたか教えてくださいませんか? また、eとは自然対数の底などに用いられるあのeのことでしょうか? C言語初心者なのでお手柔らかに説明していただけると助かります。
- ベストアンサー
- C・C++・C#