eobeom 发表于 2020-10-14 10:45:59

小白求助 如何计算矩阵行列式的值?

请问计算矩阵行列式的值的程序该怎么写?

kogawananari 发表于 2020-10-14 11:08:26

{:10_289:}
你到底是求行列式的值 还是求增广矩阵对应的线性方程组的解

行列式的值np.linalg.det
增广矩阵求解np.linalg.solve

风过无痕1989 发表于 2020-10-14 17:24:48

#include <stdio.h>
#include <math.h>

#define MAX 100

double D(double arr[], int n);
void Display(double arr[], int n);

void main()
{
    double arr;
    double bak;
    double value;
    int n;
    int i,j,k,c;

    printf("Please enter matrix size n(1 <= n < 20):");
    scanf("%d",&n);

    printf("Please input matrix line by line:\n");
    for(i = 0;i < n;i++)
    {
      for(j = 0;j < n;j++)
        {
            scanf("%lf",&arr);
        }
    }

    printf("matrix a:\n");
    Display(arr,n);

    /* 保存D(0,i)的值到bak中 */
    for(i = 0;i < n;i++)               /* 处理第1行的每一列元素 */
    {
      for(j = 1;j < n;j++)         /* 逐行处理 */
        {
            for(c = 0,k = 0;k < n;k++) /* 逐列处理 */
           {
                if(k == i)
                {
                  continue;
                }
                bak = arr;
          }
        }
      value = D(bak,n-1);

      printf("Submatrix:\n");
      Display(bak,n-1);

      printf("DValue of the Submatrix is %f\n",D(bak,n - 1));
    }

    value = D(arr,n);
    printf("result = %f\n",value);
}

double D(double arr[],int n)
{
    double bak;
    int i,j,k,c;
    double sum = 0;

    if(n == 1)
    {
      return arr;
    }

    for(i = 0;i < n;i++)                /* 处理第1行的每一列元素 */
    {
      for(j = 1;j < n;j++)            /* 逐行处理 */
      {
            for(c = 0,k = 0;k < n;k++)/* 逐列处理 */
          {
                if(k == i)
                {
                  continue;
                }
                bak = arr;
          }
        }

      /* 计算arr(row,col) * D(row,col)的值 */
      sum += (i % 2 == 0 ? 1 : -1) * arr * D(bak,n - 1);
    }
    return sum;
}

void Display(double arr[],int n)
{
    int i,j;
    printf("");
    for(i = 0;i < n;i++)
    {
      for(j = 0;j < n;j++)
        {
            printf("%10.1lf",arr);
        }
      printf("\n");
    }
}

乐乐学编程 发表于 2020-10-14 21:52:35

帮你顶

风过无痕1989 发表于 2020-10-15 09:33:19

如果满意了,回来选个最佳答案哈~~你这个举手之劳的动作不需要你付出任何(鱼币、荣誉值、积分),由系统给我们进行奖励:鱼币+3,荣誉+2,技术+1

乐乐学编程 发表于 2020-10-17 01:03:30

还没满意?帮你顶上去

风过无痕1989 发表于 2020-10-17 14:40:32

还有什么不满意的,你倒是说话呀

eobeom 发表于 2020-10-17 19:48:06

风过无痕1989 发表于 2020-10-17 14:40
还有什么不满意的,你倒是说话呀

不好意思我才看到,我明白了谢谢

风过无痕1989 发表于 2020-10-17 19:49:43

eobeom 发表于 2020-10-17 19:48
不好意思我才看到,我明白了谢谢

明白了,就给个最佳答案呀
页: [1]
查看完整版本: 小白求助 如何计算矩阵行列式的值?