第3講 for文の学習
第9話 ウォレスの公式によるπの計算
ウォレスの公式によって円周率πを求めるプログラムコード例
#include<iostream>
#include <iomanip>
using namespace std;
void main(){
int c1=0,c2=1,n;
double w=1;
cout<<"計算回数は?"<<endl;
scanf("%d",&n);
for(int i=0;i<n;i++){
if(i%2==0)c1++;
if(i%2==1)c2++;
w=w*((2*(double)c1)/(2*(double)c2-1));
}
cout<<"円周率="<< setprecision(20) <<2*w<<endl;
}
実行例
今回も実験結果を表にしてみましょう。
正しい円周率 | 3.1415926535897932 |
n=100 | 3.0021759545569062 |
n=1000 | 3.126078900215409 |
n=10000 | 3.1400238186005862 |
n=100000 | 3.1414355935898644 |
n=1000000 | 3.1415769458226377 |
n=10000000 | 3.1415910827949127 |
n=100000000 | 3.1415924965090136 |
n=1000000000 | 3.1415926378785031 |
ライプニッツの公式による場合も比較のために再掲しておきましょう。
正しい円周率 | 3.1415926535897932 |
n=100 | 3.1315929035585537 |
n=1000 | 3.1405926538397941 |
n=10000 | 3.1414926535900345 |
n=100000 | 3.1415826535897198 |
n=1000000 | 3.1415916535897743 |
n=10000000 | 3.1415925535897915 |
n=100000000 | 3.141592643589326 |
n=1000000000 | 3.1415926525880504 |
私の予想は、ウォレスの公式の方が速いでしたが、
残念ながら、ライプニッツの公式の方が収束が速いようです。
πの計算は、収束の速い公式を見つけられば、計算精度がより高くなっていきます。
さて、次は前話で簡単に触れて、
今回のプログラムで使ったif文を本格的に学びましょう。
第8話へ 第4講第1話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ