- ベストアンサー
pythonで大規模な数値計算
大学3年生女子。数学系の学科です。 pythonを勉強しているのですが、結局何ができるのかな、と思うときがあります。 例えば円周率の計算とか、何前何万桁って簡単にできるようになるんでしょうか? 100桁とかになるとどうやって計算していったらいいのか。 級数を使って計算するにしても、一つ一つを少数点以下100桁ずつ計算してたしあげてるわけないですよね、と、何かいい方法あるんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Pythonは整数ならメモリーがある限りいくらでも桁数の大きな数を扱うことができます。メモリーが足りなければ桁を分割してファイルにしてハードディスクに書き出したり読み込んだりするという技が使えます。これはPythonに限ったことではありません。 円周率を何百桁も求めるということは、Pythonの実数計算でも他の言語と同じで簡単には処理できません。どのプログラミング言語もコンピューターのFPU(浮動小数点演算ユニット)というハードウェアを利用しているからです。FPUが処理できる桁数を超えた実数は計算できません。 数値計算であれば円周率を求めるのであれ、平方根を求めるのであれ、方程式の根をニュートン法で求めるのであれ、公式とか方法というものがあります。 まずその方法でどうやって値を求めるのか考え、もし筆算があれば筆算の方法を手計算で少し試してみて、計算方法をアルゴリズムにしてプログラムにします。 FPUで計算できない桁数の計算も、短い桁数に分割して計算し、それを足し合わせていくなど計算方法による方法でつなぎ合わせて、最後に全体をひとつのデータとして画面に表示したりプリンタに出力したりファイルに記録したりします。 途中結果も最終結果も桁数が大きすぎるとどのプログラミング言語でもひとつの変数では扱えません。途中結果や最終結果の値を見たいのなら、分割した数値をつなぎ合わせて長いテキストデータに変換するしかありません。
その他の回答 (2)
- sknbsknb2
- ベストアンサー率38% (1158/3030)
円周率ならラマヌジャンの公式とかで計算すりゃいいと思いますが。反復計算でどんどん精度は上げられます。 まあ、誤差がないようにBCDで計算するとか、桁数億以上に対応できるように工夫するとは必要ですけど。
お礼
回答いただけてありがとうございます。
- aokii
- ベストアンサー率23% (5210/22062)
Python(パイソン)は汎用のプログラミング言語ですので、自分でも開発すれば何でもできます。円周率の計算も、数値計算も、無限に桁を増やして計算もできます。
お礼
回答いただけてありがとうございます。
お礼
回答いただけてありがとうございます。