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

📄 det.inc

📁 心理测量统计分析中
💻 INC
字号:

//type TMatDet = array[1..10,1..10] of extended;

function  Det( a   : TMatDet;
               n   : Longint;
               acc : Extended ) : Extended;
  label  QP;
  var    i, j, k : Longint;
         TempV, zero, v : Extended;


  procedure swap( var x, y : Extended );
    var  v : Extended;
    begin
         v:=x;  x:=y;  y:=v;
    end;


  begin    {   Det   }
         TempV:=1.0;

         if n > 1 then
           begin
             zero:=abs(a[1,1]);
             for i:=1 to n do
               for j:=1 to n do
                 if zero < abs(a[i,j])
                   then zero:=abs(a[i,j]);
             if zero < acc
               then
                 begin
                   TempV:=0.0;
                   goto QP;
                 end
               else
                 zero:=acc*zero;

             for i:=1 to n-1 do
               begin
                  k:=i;
                  for j:=i+1 to n do
                    if abs(a[k,i]) < abs(a[j,i]) then k:=j;
                    if abs(a[k,i]) < zero then
                      begin
                          TempV:=0.0;
                          goto QP;
                      end;

                  if i <> k then
                    begin
                      for j:=i to n do swap(a[i,j], a[k,j]);
                      TempV:=-TempV;
                    end;

                  v:=1/a[i,i];
                  TempV:=TempV*a[i,i];
                  for j:=i+1 to n do a[i,j]:=v*a[i,j];
                  for j:=i+1 to n do
                    for k:=i+1 to n do a[j,k]:=a[j,k]-a[j,i]*a[i,k];
               end;
           end
         else
           begin
             TempV:=a[1,1];
             goto QP;
           end;

         if abs(a[n,n]) < 1.0E-10
           then  TempV:=0.0
           else  TempV:=TempV*a[n,n];

         QP : Det:=TempV;
  end;   {   Det   }

⌨️ 快捷键说明

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