Page 13 - 4824
P. 13
750 GOSUB 2000:FQ = Z
760 GOSUB 3000:G2 = GO
770 GQ = 0
780 FOR I = 1 TO N
790 GQ = GQ+G(I)*D(I)
800 NEXT I
810 IF GQ>0 OR FQ>FP THEN 860
815 " ВИКОНАТИ ІТЕРАЦІЮ З ПОДВОЄНИМ КРОКОМ
І ПЕРЕЙТИ
817 " ДО ТОЧКИ Q АБО ПОДВОЇТИ КРОК, ЩОБ
ЛОКАЛІЗУВАТИ МІНІМУМ
820 НН = 2*НН
830 FOR I = 1 ТО N:P(I)=Q(I) : NEXT I
840 FP = FQ:GP = GQ:G1 = G2
850 GOTO 710
860 ZZ=3*(FP—FQ)/HH:ZZ=ZZ+GP+GQ
870 WW = ZZ*ZZ—GP*GQ: IF WW<0 THEN WW = 0
880 W=SQR(WW)
890 DD = HH*(1—(GQ + W—ZZ)/(GQ—GP+2*W))
900 FOR I = 1 TO N:X(I)=P(I)+DD*D(I) : NEXT I
910 GOSUB 2000:FR = Z
920 GOSUB 3000:G3 = GO
925 " ЗНАХОДИМО ГРАДІЄНТ У НОВІЙ ТОЧЦІ
930 GR = 0
940 FOR I= 1 ТО N : GR = GR + G(I)*D(I) : NEXT I
950 IF Z<=FP AND Z<FQ THEN 1100
960 IF GR>0 THEN 1020
970 HH = HH—DD
980 FOR I = 1 TO N : P(I) =X(I) : NEXT I
990 HH = HH—DD
1000 FOR I = 1 TO N:P(I)=X(I) : NEXT I 1010 FP = Z : GP = GR
: GOTO 860 1020 HH = DD
1030 FOR I = 1 TO N: Q(I)=X(I) : NEXT I 1040 FQ = Z :
GQ=GR : GOTO 860 1100 " ПЕРЕВІРКА КРИТЕРІЮ
ЗАКІНЧЕННЯ 1110 IF G3<0,0005 THEN 1300 1120 IF K = N
THEN 1250