Week3
数値積分の解説
積分,

を数値的に求めよう.数値積分法では関数を下図のように連続した細かい短冊に分けて,それぞれの面積を足し算する.分割点の数をNとすると,各点は,

ここで,

ととれる.そうすると,もっとも単純には,

となる.

これをそのままRubyでコーディングすると次のようになる.
dh=(b-a)/iter sum =0.0 x=a (iter-1).times do sum+=f(x)*dh x+=dh end puts sum
課題3 数値積分(台形則,Trapezoidal rule)
単純な短冊よりも,短冊の上端をななめにした台形にすれば精度が上がりそうに思う.台形の短冊一枚の面積は,

で求まる.これを単純に足せばよい.さらに計算時間を短縮するためには,端から端まであらかじめ足しあわせたときに得られる式

を使えばよい.こうすれば先ほどのもっとも単純な短冊による数値積分と計算時間は変わらない.課題2のプログラムを書き換えて台形則による数値計算を実行するようにせよ.分割数を変えて計算し(100,1000,10000等),単純な短冊の場合と比較せよ.
課題4 二分法(bisection)による方程式の解
関数
f(x) = x*x-4.0*x+1.0
が零となる点を数値的に求めよう.もっとも単純には解をまたぐx1,x2を初期値として,その関数値f(x1), f(x2)を求め,さらに2分点での値を次々に計算して,解を囲い込んでいく方法である.下の表をうめてみよ.これを実行するRubyスクリプトを書け.
x1 | x2 | f(x1) | f(x2) |
---|---|---|---|
0.0 | 1.0 | ||
- ヒント
- 解をまたぐとは値の符号が変わることを意味する.あらたな両端を求めるときの条件分岐はf1*f2<0となる,

Keyword(s):
References:[LinuxEx]