program prog07 c c This program solves the equation c*x = exp(-x) by using NI-Bun-Ho. implicit real*8 (a-h,o-z) c Statement function (文関数) f(x)=c*x - exp(-x) c 初期設定 ------------------------------------------------------------* eps = 1.0d-10 ! 数値解の誤差 do m = 1,50 c = m*0.1d0 ! さまざまな c について調べる。 a = 0.0d0 ! f(0) = -1, f(1/c)= 1 - exp(-1/c) > 0 b = 1.0d0/c ! なので、f(x)=0 の解は 0 log((b-a)/eps)/log(2.0d0) n = int(log((b-a)/eps)/log(2.0d0))+1 fa = f(a) c 初期設定終り。 ------------------------------------------------------* c 実際の計算 ----------------------------------------------------------* do i = 1,n x = (a + b)/2.0d0 fx = f(x) if(fx .eq. 0.0d0) goto 20 ! fx = 0 なら解が見付かった。 if(fx*fa .gt. 0.0d0) then ! IF (...) THEN a = x ! f(x)*f(a) > 0 ならば、解は x と b の間 fa = fx ! よって領域を (x, b) とする。 else ! ELSE b = x ! f(x)*f(a) < 0 ならば、解は a と x の間 end if ! END IF end do 20 continue ! goto 20 でこの行に飛ぶ write(*,100) c,(a+b)/2.0d0 ! 最終的な答えを書く end do c 実際の計算終り。 ----------------------------------------------------* 100 format(2(1x,f15.7)) end