C6.1
ここで より、
なので、
とすると、 すなわち となる。
これより
が得られる。ここで最後の式はピタゴラスの定理と三角関数の定義による。
ここで より、
- 作者: Paul J. Nahin
- 出版社/メーカー: Springer
- 発売日: 2014/08/28
- メディア: ペーパーバック
- この商品を含むブログを見る
数値計算 台形公式+Richardson 補外
実行結果
1.64492430955605 1.64490909118690 1.64486343607944 1.64493406684823 続行するには何かキーを押してください . . .
収束が悪い。
プログラム
module m_mod implicit none integer, parameter :: kd = kind(0.0d0) real(kd), parameter :: pi = 4 * atan(1.0_kd) contains pure real(kd) function f(x) real(kd), intent(in) :: x f = acos(1.0_kd / (1.0_kd + 2.0_kd * cos(x))) end function f pure real(kd) function trapez(func, x0, x1, n) result(s) procedure(f) :: func real(kd), intent(in) :: x0, x1 integer , intent(in) :: n real(kd) :: h, y(0:n) integer :: i h = (x1 - x0) / n forall(i = 0:n) y(i) = func(x0 + i * h) s = h * ( y(0) / 2 + sum(y(1:n-1)) + y(n) / 2 ) end function trapez end module m_mod program test use m_mod implicit none integer, parameter :: n = 2**9 real(kd) :: s0, s1, x0, x1 integer :: i x0 = 0.0_kd x1 = pi / 2.0_kd - epsilon(x1) s0 = trapez(f, x0, x1, n * 2) s1 = trapez(f, x0, x1, n) print *, (4 * s0 - s1) / 3, s0, s1, pi**2 / 6.0_kd end program test