⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svdfit.dem

📁 Delphi Pascal 数据挖掘领域算法包 数值算法大全
💻 DEM
字号:
PROGRAM d14r4(input,output);
(* driver for routine SVDFIT *)
(* polynomial fit *)
CONST
   npt=100;
   spread=0.02;
   npol=5;
   mp=npt;
   np=npol;
   ncvm=npol;
TYPE
   glndata = ARRAY [1..npt] OF real;
   glmma = ARRAY [1..npol] OF real;
   glnpbynp = ARRAY [1..np,1..np] OF real;
   glmpbynp = ARRAY [1..mp,1..np] OF real;
   glnparray = glmma;
   glmparray = glndata;
   (* The previous 2 declarations are required because of the absence *)
   (* of conformant arrays in most Pascal implementations. *)
   glcvm = ARRAY [1..ncvm,1..ncvm] OF real;
VAR
   glinext,glinextp : integer;
   glma : ARRAY [1..55] OF real;
   gliset : integer;
   glgset : real;
   chisq : real;
   i,idum : integer;
   x,y,sig : glndata;
   a : glmma;
   cvm : glcvm;
   u : glmpbynp;
   v : glnpbynp;
   w : glnparray;

(*$I MODFILE.PAS *)
(*$I RAN3.PAS *)

(*$I GASDEV.PAS *)

(*$I SVDCMP.PAS *)

(*$I SVBKSB.PAS *)

(*$I SVDVAR.PAS *)

PROCEDURE func(x: real; VAR p: glmma; mma: integer);
(* This is essentially FPOLY renamed. *)
VAR
   j: integer;
BEGIN
   p[1] := 1.0;
   FOR j := 2 to mma DO p[j] := p[j-1]*x
END;

(*$I SVDFIT.PAS *)

BEGIN
   gliset := 0;
   idum := -911;
   FOR i := 1 to npt DO BEGIN
      x[i] := 0.02*i;
      y[i] := 1.0+x[i]*(2.0+x[i]*(3.0+x[i]*(4.0+x[i]*5.0)));
      y[i] := y[i]*(1.0+spread*gasdev(idum));
      sig[i] := y[i]*spread
   END;
   svdfit(x,y,sig,npt,a,npol,u,v,w,mp,np,chisq);
   svdvar(v,npol,np,w,cvm,npol);
   writeln;
   writeln('Polynomial fit:');
   FOR i := 1 to npol DO BEGIN
      writeln(a[i]:12:6,'  +-',sqrt(cvm[i,i]):10:6)
   END;
   writeln('Chi-squared',chisq:12:6);
END.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -