如何计算多个矩阵的行列式

时间:2017-02-21 16:35:24

标签: c matrix linear

我正在尝试根据Cramer规则在C中制作线性系统解算器......

我找到了这段很好的代码来找到矩阵的决定因素[n] [n]:

int determinant(int f[20][20],int x)
{
  int pr,c[20],d=0,b[20][20],j,p,q,t;
  if(x==2)
  {
    d=0;
    d=(f[1][1]*f[2][2])-(f[1][2]*f[2][1]);
    return(d);
   }
  else
  {
    for(j=1;j<=x;j++)
    {
      int r=1,s=1;
      for(p=1;p<=x;p++)
        {
          for(q=1;q<=x;q++)
            {
              if(p!=1&&q!=j)
              {
                b[r][s]=f[p][q];
                s++;
                if(s>x-1)
                 {
                   r++;
                   s=1;
                  }
               }
             }
         }
     for(t=1,pr=1;t<=(1+j);t++)
     pr=(-1)*pr;
     c[j]=pr*determinant(b,x-1);
     }
     for(j=1,d=0;j<=x;j++)
     {
       d=d+(f[1][j]*c[j]);
      }
     return(d);
   }
}

但是为了解决基于Cramer规则的线性系统,我必须创建n个矩阵[n-1] [n-1] ...例如:

2x - y + 4z + t = -2
3x + 2y - t = -3
x + 2y + 2t = 10
x + y + 2z = 2

在这个5x4的情况下,我将不得不计算以下5个矩阵的行列式:

3 -1 4 1
3 2 0 -1
1 2 0 2
1 1 2 0

-2 -1 4 1
-3 2 0 -1
10 2 0 2
2 1 2 0

2 -2 4 1
3 -3 0 -1
1 10 0 2
1 2 2 0

2 -1 -2 1
3 2 -3 -1
1 2 10 2
1 1 2 0

2 -1 4 -2
3 2 0 -3
1 2 0 10
1 1 2 2

然后我将制作5个矩阵并为每个矩阵调用determinant()函数...然后进行最后的计算

但是,即使在用户输入n值之前,我的程序如何检测创建和填充所需的矩阵数量?

0 个答案:

没有答案