C语言实现行列式计算 您所在的位置:网站首页 递推法求行列式计算d1d2 C语言实现行列式计算

C语言实现行列式计算

2024-02-02 23:20| 来源: 网络整理| 查看: 265

C语言实现行列式计算 前言

行列式的计算有多种方法,其中按行(列)展开法最为直观,因此也最容易编写为程序.本文提供两种计算方法.

【方法一】 利用函数的递归,计算任意阶行列式的值。注意:本程序中,在计算行列式之前,需输入行列式的阶数. C语言在数学计算领域有诸多不便之处,例如数组的长度不可更改,这一点对于行列式的计算来说是极不方便的,因为余子式的阶数比原行列式的阶数要小,而在递归的过程中涉及到数组的长度.为此,设立两个函数,第一个函数DET为计算的主要部分,第二个函数Minor专门用于计算余子式的值,而第二个函数中会调用第一个函数. 【方法二】 利用高斯消元法把行列式化简为上三角形,再累乘对角线元素即可.

代码展示

【方法一】:

#include #include #define MAX 20 //最大计算阶数,可以更改 //两个函数的声明 int DET(int arr1[MAX][MAX], int n); int Minor(int arr1[MAX][MAX], int i, int n); int DET(int arr1[MAX][MAX], int n) { int i, M, sum = 0;//i是第一行的列指标,M是余子式的值,sum是行列式的计算值 if (n == 1)//一阶行列式直接得出结果 return arr1[0][0]; else if (n > 1) { for (i = 0; i int j, k,result; int arr2[MAX][MAX]; //以下为构造余子式的过程。由于C语言的特性,这个过程会比较复杂,需要观察余子式与原行列式的关系。 for (j = 0; j if (k = i) arr2[j][k] = arr1[j + 1][k + 1]; } } return DET(arr2, n - 1);//构造完后,余子式是一个新的行列式,返回DET函数进行计算。 } int main() { int arr1[MAX][MAX]; int a,b,n; printf("请输入行列式阶数:"); scanf_s("%d", &n); printf("请输入行列式:\n"); for (a = 0; a scanf_s("%d", &arr1[a][b]); } } printf("%d", DET(arr1, n)); }

【方法二】 注:此方法中数据类型为double型.

#include #define MAX 20 void swap(double* a,double*b){ double tmp = *a; *a = *b; *b = tmp; } void swaparr(double arr[MAX][MAX],int a,int b,int n){ int i; for(i=0;i for(j=0;j //确保标准数不为0 swaparr(arr,i,i+(k++),n); sign++; } if(arr[i][i]==0.0&&i+k==n){ //整个一行都为0 printf("0"); return 0; } for(j=i+1;j tmp = -(double)arr[j][i]/arr[i][i]; //保存乘积因子 for(k=i;k


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有