📄 bessj.txt
字号:
Function BESSJ(N:Integer; X:Real):Real;
var
BJ,BJM,BJP,SUM,TOX,ANS:Real; J,JSUM,M:Integer;
const
IACC = 40; BIGNO = 1.0e10;
BIGNI = 1.0e-10;
begin
If N < 2 Then
ShowMessage('bad argument N in BASSJ');
TOX:=2 / X;
if x > 1.0*N then
begin
BJM:=BESSJ0(X);
BJ:=BESSJ1(X);
For J:=1 To N - 1 do
begin
BJP:=J * TOX * BJ - BJM;
BJM:=BJ;
BJ:=BJP;
end;
ANS:=BJ
end
Else
begin
M:=2 * ((N + Trunc(Sqrt(IACC * N))) div 2);
ANS:=0.0;
JSUM:=0;
Sum:=0;
BJP:=0;
BJ:=1;
For J:=M DownTo 1 do
begin
BJM:=J * TOX * BJ - BJP;
BJP:=BJ;
BJ:=BJM;
If Abs(BJ) > BIGNO Then
begin
BJ:=BJ * BIGNI;
BJP:=BJP * BIGNI;
ANS:=ANS * BIGNI;
Sum:=Sum * BIGNI;
end;
If JSUM <> 0 Then Sum:=Sum + BJ;
JSUM:=1 - JSUM;
If J=N Then ANS:=BJP;
end;
Sum:=2 * Sum - BJ;
ans:=ans / Sum
end;
BESSJ:=ans;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -