台形公式

数値積分の中でも簡単な方法に分類される台形公式をやってみた。区分求積にひと手間加えた感じでいいのかな。図形を細長い台形で分割してそれらの和で近似する。次のサイトが参考になる。誤差についても書かれているので読んでみるといいかもしれない。

dfltweb1.onamae.com – このドメインはお名前.comで取得されています。


で、こんなコードができた。

import math

def daikei(a, b):
    n = 10000000    #分割数
    S = 0    #面積
    h = (b - a) / n    #台形の高さ
    for i in range(n - 1):
        S += f(a + i * h)
    S = (f(a) + 2 * S + f(b)) * h / 2    #面積を求める
    return S

def f(x):
   #例としてx^4-x^3+12x^2-x*sin(cos(x))の指定した範囲の面積を求める
    return x**4 - x**3 + 12*x**2 - x * math.sin(math.cos(x))

def main():
    a = 0
    b = math.pi    #a,bは積分区間
    ans = daikei(a, b)
    print ans

if __name__ == '__main__':
    main()


実行結果はこちら

>>> 
162.628259379


Wolfram Alphaでやってみたらこうなった。


いい感じになっている。