演習E 04 | 数値計算法☆演習(2010年度)

Time-stamp: "2010-07-15 Thu 12:16 JST hig"

課題(必須)

以下3つの課題がすべてできたら教員またはTAをよんでね.

  • [E041] 以下の無限級数で円周率を計算するプログラムを作成しよう. 誤差S_N-\piを計算するときに必要な円周率の正確な値は各自で調べること. \displaystyle \pi = \lim_{N\rightarrow+\infty} S_N=\lim_{N\rightarrow+\infty} 4\sum_{n=0}^N \left(-1\right)^n\frac{1}{2n+1} = 4\left(1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \cdots \right)
    
    N=         10 のとき S_N = 3.2323158 誤差:9.072316e-02
    N=        100 のとき S_N = 3.1514934 誤差:9.900747e-03
    N=       1000 のとき S_N = 3.1425917 誤差:9.990007e-04
    N=      10000 のとき S_N = 3.1416926 誤差:9.999000e-05
    N=     100000 のとき S_N = 3.1416027 誤差:9.999900e-06
    N=    1000000 のとき S_N = 3.1415937 誤差:9.999990e-07
    N=   10000000 のとき S_N = 3.1415928 誤差:9.999999e-08
    N=  100000000 のとき S_N = 3.1415927 誤差:9.999533e-09
    N= 1000000000 のとき S_N = 3.1415927 誤差:9.982575e-10
    
    • πの値はVisual C++の機能を使うんじゃなくて, どこかで見つけて来いってことだよね. だって, 有効数字何桁なのかわかった上で使わないといけないよね. なのでここでは適切じゃないけど, M_PIを使う方法はよくある質問参照.
    • 指数表示したいとき printf などで使う書式指定は %fのかわりに%e
  • [E042] 以下の漸化式で定められる数列の無限級数を用いて円周率を計算するプログラムを作成しよう. 誤差S_N-\piを計算するときに必要な円周率の正確な値は各自で調べること。 \displaystyle a_0 = 2,\quad a_{n} = \frac{n}{2n+1}a_{n-1}, \displaystyle \pi = \lim_{N\rightarrow+\infty} S_N=\lim_{N\rightarrow+\infty}\sum_{n=0}^N a_n = 2\left(1+\frac{1}{3}+\frac{1\cdot 2}{3\cdot 5}+\frac{1\cdot 2\cdot 3}{3\cdot 5 \cdot 7} + \cdots \right)
    
          N =  0 のとき S_N = 2.00000000  誤差:-1.141593e+00
          N =  1 のとき S_N = 2.66666667  誤差:-4.749260e-01
          N =  2 のとき S_N = 2.93333333  誤差:-2.082593e-01
          N =  3 のとき S_N = 3.04761905  誤差:-9.397361e-02
          N =  4 のとき S_N = 3.09841270  誤差:-4.317996e-02
          N =  5 のとき S_N = 3.12150072  誤差:-2.009193e-02
          N =  6 のとき S_N = 3.13215673  誤差:-9.435921e-03
          N =  7 のとき S_N = 3.13712954  誤差:-4.463116e-03
          N =  8 のとき S_N = 3.13946968  誤差:-2.122973e-03
          N =  9 のとき S_N = 3.14057817  誤差:-1.014484e-03
          N = 10 のとき S_N = 3.14110602  誤差:-4.866320e-04
          N = 11 のとき S_N = 3.14135847  誤差:-2.341811e-04
          N = 12 のとき S_N = 3.14147965  誤差:-1.130046e-04
          N = 13 のとき S_N = 3.14153799  誤差:-5.466042e-05
          N = 14 のとき S_N = 3.14156616  誤差:-2.649424e-05
          N = 15 のとき S_N = 3.14157979  誤差:-1.286545e-05
          N = 16 のとき S_N = 3.14158640  誤差:-6.257553e-06
          N = 17 のとき S_N = 3.14158961  誤差:-3.048002e-06
          N = 18 のとき S_N = 3.14159117  誤差:-1.486598e-06
          N = 19 のとき S_N = 3.14159193  誤差:-7.259146e-07
          N = 20 のとき S_N = 3.14159230  誤差:-3.548495e-07
          N = 21 のとき S_N = 3.14159248  誤差:-1.736316e-07
          N = 22 のとき S_N = 3.14159257  誤差:-8.503616e-08
          N = 23 のとき S_N = 3.14159261  誤差:-4.168096e-08
    
    • a_{n+1}=f(a_n)じゃなくa_{n}=f(a_{n-1})で書いてあることに注意
  • [E043]級数\displaystyle e=\sum_{n=0}^\infty \frac{1}{n!}1^nを用いて, 自然対数の底を計算し, [E041][E042]と同様な出力をするプログラムを作成せよ.

発展問題

余裕のある人だけやってね. 松木平先生の第5回課題をもとに改変しています.

解答例

部分的解答 もし日本語部分の表示がおかしかったらブラウザ>表示>エンコーディングで文字コードとしてUTF-8を選んでね.

数値計算法☆演習の課題

このサイトのコンテンツ

QRcode to hig3.net

http://hig3.net