📄 golden.pas
字号:
FUNCTION golden(ax,bx,cx,tol: real; VAR xmin: real): real;
(* Programs using routine GOLDEN must supply an external
function func(x:real):real whose minimum is to be found. *)
CONST
r=0.61803399;
VAR
f0,f1,f2,f3,c: real;
x0,x1,x2,x3: real;
BEGIN
c := 1.0-r;
x0 := ax;
x3 := cx;
IF (abs(cx-bx) > abs(bx-ax)) THEN BEGIN
x1 := bx;
x2 := bx+c*(cx-bx)
END ELSE BEGIN
x2 := bx;
x1 := bx-c*(bx-ax)
END;
f1 := func(x1);
f2 := func(x2);
WHILE (abs(x3-x0) > tol*(abs(x1)+abs(x2))) DO BEGIN
IF (f2 < f1) THEN BEGIN
x0 := x1;
x1 := x2;
x2 := r*x1+c*x3;
f0 := f1;
f1 := f2;
f2 := func(x2)
END ELSE BEGIN
x3 := x2;
x2 := x1;
x1 := r*x2+c*x0;
f3 := f2;
f2 := f1;
f1 := func(x1)
END
END;
IF (f1 < f2) THEN BEGIN
golden := f1;
xmin := x1
END ELSE BEGIN
golden := f2;
xmin := x2
END
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -