実現したいこと
円周率を求める公式をプログラミングで作成し、実際に値を求めたいです。
値は小数点以下16桁の指数表記で表記したいです。
前提
c言語で円周率を求めるプログラムを作成しています。
円周率を求める公式は既に与えられており、Sn = √12Σ(i=0 ~ i=n) (-1)i / 3i * (2i+1)です。非常にわかりにくいのですが分子が(-1)iで、分母が3i*(2*i+1)です。
この級数を使ってプログラミングでn=10の時すなわちS_10の時の値、S_30の時の値、S_50の時の値を求めたいです。
自分でプログライングを作成したのですがS_50の時のとき3.1415926535897940e+00と出力され円周率の値に近くなったのですが、S_10とS_30の時が非常に小さい値となってしまいました。
発生している問題・エラーメッセージ
自分で作ったプログラミングでは S_10の時、-6.1170154539476122e+78 S_30の時、-4.1659005310514316e+12 という値が出力され円周率とは程遠い数値となってしまいました。
該当のソースコード
```ここに言語を入力 #include<stdio.h> #include<math.h> int main(){ double a,b; for(int i=0;i<=10;i++){ a = pow(-1,i)/(pow(3,i)*(2*i+1)); b += a; } printf("%.16e\n",sqrt(12)*b); return 0; }
### 試したこと for文の中の数字をi<=1とiを小さく変えてみたりしたのですが、正しい数値が出力されませんでした。 公式の部分の書き方を変えてみて挑戦したのですがうまくいきませんでした。 正直どこの部分を間違えているのか発見できなかったのでご教示いただきたいです。 よろしくお願いします。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
0 コメント