📄 rtsafe.txt
字号:
Function RTSAFE(X1, X2, XACC:real):real;
Label 99;
var
J,MAXIT:integer;
FL,FH,F,XL,XH,SWAP,DX,DF,DXOLD,RTS,DUM,TEMP:real;
begin
MAXIT:=100;
FUND(X1, FL, DF);
FUND(X2, FH, DF);
If FL * FH >= 0 Then ShowMessage('root must be bracketed');
If FL < 0 Then
begin
XL:=X1;
XH:=X2;
end
Else
begin
XH:=X1;
XL:=X2;
SWAP:=FL;
FL:=FH;
FH:=SWAP;
end;
RTS:=0.5 * (X1 + X2);
DXOLD:=Abs(X2 - X1);
DX:=DXOLD;
FUND(RTS, F, DF);
For J:=1 To MAXIT do
begin
DUM:=(RTS - XH) * DF - F * ((RTS - XL) * DF - F);
If (DUM >= 0) Or (Abs(2 * F) > Abs(DXOLD * DF)) Then
begin
DXOLD:=DX;
DX:=0.5 * (XH - XL);
RTS:=XL + DX;
If XL = RTS Then goto 99;
end
Else
begin
DXOLD:=DX;
DX:=F / DF;
TEMP:=RTS;
RTS:=RTS - DX;
If TEMP = RTS Then goto 99;
end;
If Abs(DX) < XACC Then goto 99;
FUND(RTS, F, DF);
If F < 0 Then
begin
XL:=RTS;
FL:=F;
end
Else
begin
XH:=RTS;
FH:=F;
end;
end;
ShowMessage('RTSAFE exceeding maximum iterations.');
99: RTSAFE:=RTS;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -