10/05/21 03:18:18
>>131
77なら77と最初から言え・・・といいつつ本来の質問を見ていなかった朕。
一応、昔風に芋臭く書いてみた。DIMENSIONをどう使ったらいいのか分からん。
微分もプログラム的にやることにしてみた。ちょっと無理っぽいw あと、ABSを使った。
PROGRAM main
WRITE(6, *) 'INPUT START VALUE ='
READ(5, *) a
1 x = a
CALL newton(x, h)
a = x - h
IF (ABS(h) .GT. 0.0000001) GOTO 1
WRITE(6, *) 'h=', h, ' x=', x
END
SUBROUTINE newton(x, h)
DIMENSION c(2)
c(1) = -1.0
c(2) = 3.0
y1 = (x - c(1)) * (x - c(2)) ! f = (x + 1)(x - 3)
y2 = (x - c(1)) + (x - c(2)) ! df/dx = 1(x - 3) + (x + 1)1
h = y1 / y2
RETURN
END
実行例1
INPUT START VALUE =
5.0
h= 0.0000000E+00 x= 3.000000
実行例2
INPUT START VALUE =
-3.0
h= 0.0000000E+00 x= -1.000000