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

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

課題(必須)

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

  • [E051]

    関数 f(x)=\log(1+x)について, プログラム

    
    #include <stdio.h>
    #include <math.h>
    
    int main(void){
    
      int i;
      double xmin=-0.8;
      double dx=0.2;
      int nint=14;
    
      double x;
      double y;
    
      for(i=0;i<=nint;i++){
        x=xmin+i*dx;
        y=log(1.0+x);
        printf("%f, %f\n",x,y);
      }
      return 0;
    }
    

    を実行すると, 範囲-0.8\le x \le 2, xの刻み0.2で, 値x,f(x)を次のように出力する.

    
    # x       f(x)
    -0.800000, -1.609438
    -0.600000, -0.916291
    -0.400000, -0.510826
    -0.200000, -0.223144
    0.000000, 0.000000
    0.200000, 0.182322
    0.400000, 0.336472
    0.600000, 0.470004
    0.800000, 0.587787
    1.000000, 0.693147
    1.200000, 0.788457
    1.400000, 0.875469
    1.600000, 0.955511
    1.800000, 1.029619
    2.000000, 1.098612
    
    

    このデータから, 演習で説明するように Excel を利用してy=f(x)のグラフを描くと 次のようになる

    plot of log(1+x)

    ところで, このlogのようにC言語で提供されていない関数だったら, マクローリン級数でも使ってデータを得るしかないだろう.

    そのような状況を妄想することにして, まず f(x)=\log (1+x)のマクローリン級数 f_N(x)=\sum_{n=0}^N \frac{f^{(n)}(0)}{n!}x^n を鉛筆による計算で一般のnで求めよう. そして, 2,5,8次でうちきったマクローリン級数f_2(x),f_5(x),f_8(x)について, 上のようなデータを得て, すべてのグラフを重ねて描こう. y方向の範囲は-2\leq y \leq 2としよう. 次に示すグラフは y=f(x),y=f_2(x)を重ねて描いたもの. f_2,f_5,f_8の計算には, [E041]などでπやeを計算したときのように次数nに関するforループを使おう. (L05のp.13 L04のp.15のサンプルプログラム参照)

    log(1+x) and its maclarin approximation
  • [E052] f(x)=\cos(x) のマクローリン級数を求めよう. つぎに マクローリン展開の計算に, [E041]などでπやeを計算したときのようにforやwhileループを使って
    • y = \cos(x)
    • マクローリン級数をn=20次までで打ち切った関数y=f_{20}(x)(L05のp.13参照)
    • マクローリン展開を, xごとに項が10-5より小さくなるまでとって近似したもの(L05のp.14参照)
    のグラフを 範囲0 \le x \le 40, -2 \le y \le 2, xの刻み0.5で, 重ねてExcelで描こう. Excelを使ったグラフの描き方.

なおExcel嫌いの人はgnuplotその他好きなグラフ描画ツールを用いてもよい.

発展問題

余裕のある人だけやってね. 松木平先生の第6回課題を改題して使用させていただいています.

数値計算法☆演習の課題

  • E00ウォーミングアップ
  • E01整数の2進表現
  • E02誤差の怖い話
  • E03計算機で数列と漸化式
  • E04計算機でe,πテイラー級数
  • E05計算機で関数のグラフを描こう
  • E06方程式を解こう
  • E072分法で方程式を解こう
  • E08台形公式で数値積分
  • E09シンプソン公式で数値積分
  • E10データの統計的扱い
  • E11最小二乗近似
  • E12行列・ベクトルの演算と反復法による1次方程式の解
  • E13Gauss-Jordanの消去法による1次方程式の解