Class integral
In: integral03.f90

台形公式を用いた数値積分モジュール

Authors:森川 靖大
Version:0.3 2008-03-09 morikawa
Copyright:Copyright (C) GFD Dennou Club, 2006. All rights reserved.

trapezoid サブルーチンに積分区間に関する情報を与えると, 計算を行い値を返します.

参考資料

開発履歴

  • 0.3 Ruby 用 RDoc チュートリアルを元に作ってみた.

Methods

trapezoid  

Public Instance methods

Function :
s :real
: 積分値
a :real, intent(in)
: 積分区間の下限
b :real, intent(in)
: 積分区間の上限
n :integer, intent(in), optional
: 積分区間の分割数

台形公式を用いた数値積分を行います.

$ f(x) = x^2 - 2x + 2 $ の積分値を台形公式によって求めます.

  • 積分区間は $ [a, b] $ とします.
  • 実際に計算する式は以下の通りです. ここで $ h $ は $ h = frac{b-a}{n} $ です.

\[

   \int_{a}^{b} f(x) dx =
     \frac{h}{2} \left\{f(a) + f(b)\right\} + h\sum_{i=1}^{n-1} f(a+ih)

\]

このサンプルプログラムは www.gfd-dennou.org/library/dcmodel にて入手できます.

[Source]

  function trapezoid(a,b,n) result(s)
    !
    ! 台形公式を用いた数値積分を行います. 
    !
    ! $ f(x) = x^2 - 2x + 2 $ の積分値を台形公式によって求めます.
    !
    ! * 積分区間は $ [a, b] $ とします.
    ! * 実際に計算する式は以下の通りです.
    !   ここで $ h $ は $ h = \frac{b-a}{n} $ です.
    !
    ! \[
    !    \int_{a}^{b} f(x) dx =
    !      \frac{h}{2} \left\{f(a) + f(b)\right\} + h\sum_{i=1}^{n-1} f(a+ih)
    ! \]
    !
    ! このサンプルプログラムは http://www.gfd-dennou.org/library/dcmodel
    ! にて入手できます. 
    !
    !

    real,    intent(in) :: a ! 積分区間の下限
    real,    intent(in) :: b ! 積分区間の上限
    integer, intent(in), optional :: n ! 積分区間の分割数
    real :: s  ! 積分値
    real :: h
    integer :: i, div = 10
    if (present(n)) div = n
    h = (b-a) / div
    s = (f(a)+f(b)) / 2.0
    do i = 1, n-1
      s = s + f(a + i*h)
    end do
    s = h*s
  end function trapezoid

[Validate]