gauleg.pas
来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· PAS 代码 · 共 35 行
PAS
35 行
PROCEDURE gauleg(x1,x2: double; VAR x,w: darray; n: integer);
(* Programs using routine GAULEG must define the type
TYPE
darray=ARRAY [1..n] OF double;
in the calling program *)
CONST
eps = 3.0e-11; (* adjust to your floating precision *)
VAR
m,j,i: integer;
z1,z,xm,xl,pp,p3,p2,p1: double;
BEGIN
m := (n+1) DIV 2;
xm := 0.5*(x2+x1);
xl := 0.5*(x2-x1);
FOR i := 1 TO m DO BEGIN
z := cos(3.141592654*(i-0.25)/(n+0.5));
REPEAT
p1 := 1.0;
p2 := 0.0;
FOR j := 1 TO n DO BEGIN
p3 := p2;
p2 := p1;
p1 := ((2.0*j-1.0)*z*p2-(j-1.0)*p3)/j
END;
pp := n*(z*p1-p2)/(z*z-1.0);
z1 := z;
z := z1-p1/pp;
UNTIL (abs(z-z1) <= eps);
x[i] := xm-xl*z;
x[n+1-i] := xm+xl*z;
w[i] := 2.0*xl/((1.0-z*z)*pp*pp);
w[n+1-i] := w[i]
END
END;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?