- 作者: 久野靖
- 出版社/メーカー: 近代科学社
- 発売日: 2008/12
- メディア: 単行本
- クリック: 5回
- この商品を含むブログ (13件) を見る
f(x) = x^2 を [1, 10] の区間で数値積分してみます。ここでは区間を100分割します。ちなみに、正しい答えは 333 です。
def integral(fn, a, b, n) dx = (b - a) / n.to_f s = 0.0 n.times do |i| x = a + i * dx y0 = fn.call(x) y1 = fn.call(x + dx * 0.5) y2 = fn.call(x + dx) s += (y0 + 4 * y1 + y2) * dx / 6.0 end s end f = ->(x) {x ** 2} puts integral(f, 1, 10, 100) #=>332.99999999999983
シンプソンの公式とは、分割された区間を2次曲線で補完する方法です。