Maltabについて3
2変数の極地問題について、どのようにプログラムを書けばいいのでしょうか?
具体的には、fortranでは、以下のように書かれているのですが、、、
次のzがなる時のxとyは?
z=-x^2+5x-2y^2+2y+2
(以下のページ
http://www8.plala.or.jp/uemura/sim2.html
を参照しています。)
DOUBLE PRECISION X,Y,H,MAXZ,Z1,Z2,Z3,Z
X=0 !xの初期値
Y=0 !yの初期値
H = 0.1 !ステップ幅
MAXZ = -100000
100 Z1 = Z(X, Y)
Z2 = Z(X + H, Y)
Z3 = Z(X, Y + H)
IF (Z2.GT.Z1.AND.Z2.GT.Z3) THEN
MAXZ = Z2
X = X + H
GOTO 100
END IF
IF (Z3.GT.Z1.AND.Z3.GT.Z2) THEN
MAXZ = Z3
Y = Y + H
GOTO 100
END IF
IF (Z1.GE.Z2.AND.Z1.GE.Z3) THEN
H = H / 10
IF (H.GT..000001) GOTO 200
GOTO 100
END IF
200 WRITE(*,*) 'X*= ', X
WRITE(*,*) 'Y*= ',Y
WRITE(*,*) 'Z*= ',Z1
END
DOUBLE PRECISION FUNCTION Z(X,Y)
DOUBLE PRECISION X,Y
Z=-X**2+5*X-2*Y**2+2*Y+2
END
これを実行すると次の解が求まる。
X*= 2.500000037252903
Y*= 5.000000074505806E-001
Z*= 8.749999999999998
補足
こんにちは。 挙げていただいたのは全部知らなくて(笑) イノセンス https://www.ntv.co.jp/innocence/ これは本当に続編を作って欲しいと思っています。