今天编程时需要求矩阵的秩,于是就在网上搜了一个求矩阵的秩的代码(代码源自徐士良《常用算法程序集(C语言描述)》),用的是全选主元高斯消去法求矩阵的秩。拿了一些实验数据验证了一下,发现有问题。就仔细看了看代码,
代码如下:
int rank(double* a,int m,int n) //a为矩阵,m,n分别为矩阵的行与列
{
int i,j,k,nn,is,js,l,ll,u,v;
double q,d;
nn=m;
if (m>=n) nn=n;
k=0;
for (l=0; l<=nn-1; l++)
{ q=0.0;
for (i=l; i<=m-1; i++)
for (j=l; j<=n-1; j++)
{ ll=i*n+j; d=fabs(a[ll]);
if (d>q) { q=d; is=i; js=j;}
}
if (q +1.0 == 1.0) return(k);//这里q特别小的时候没有返回,于是我改为if(q< 1e-8)return(k);
k=k+1;
if (is!=l)
{ for (j=l; j<=n-1; j++)
{ u=l*n+j; v=is*n+j;
d=a[u]; a[u]=a[v]; a[v]=d;
}
}
if (js!=l)
{ for (i=l; i<=m-1; i++)
{ u=i*n+js; v=i*n+l;
d=a[u]; a[u]=a[v]; a[v]=d;
}
}
ll=l*n+l;
for (i=l+1; i<=n-1; i++)//这里我感觉应该为i<=m-1
{ d=a[i*n+l]/a[ll];
for (j=l+1; j<=n-1; j++)
{ u=i*n+j;
a[u]=a[u]-d*a[l*n+j];
}
}
}
return(k);
}
不知道改的是否正确,哪位朋友发现改的不对,请指出来,本人不胜感激。
分享到:
相关推荐
C/C++语言实现矩阵的求秩,原理是高斯消元法实现矩阵求秩。之前我在网上找的C/C++语言实现矩阵的秩的很多程序通不过大量的测试,此程序是本人经过大量的测试通过的。对于方阵和非方阵都能准确的求出其秩,如果发现有...
掌握求矩阵秩的方法,尤其是利用 MATLAB 进行计算,对于理解和应用高等代数中的理论至关重要。同时,MATLAB 在数值计算、科学建模和工程应用等领域都有着广泛的应用,是现代科技工作者不可或缺的工具之一。
【矩阵秩的概念与重要性】 矩阵的秩是矩阵理论中的核心概念之一,它反映了矩阵的线性独立性和信息含量。矩阵的秩定义为矩阵中不等于零的子式的最大阶数,这直接关联到矩阵能否表示更高维度的空间结构。若矩阵的秩为...
本压缩包文件"juzhenzhi.rar_strawwi3_求矩阵的秩_矩阵 秩_矩阵秩_秩"主要关注的是如何用C语言编写程序来计算矩阵的秩。下面我们将详细讨论矩阵秩的概念、计算方法以及在C语言中实现的策略。 矩阵的秩是指矩阵中的...
用初等变换求逆矩阵及矩阵秩 本文主要讲解了用初等变换求逆矩阵及矩阵秩的知识点。通过初等行变换和初等列变换,可以将矩阵化成标准形,从而求出矩阵的秩和逆矩阵。初等变换是矩阵变换的基本操作,包括交换矩阵的两...
可以完成矩阵的加减乘除,求秩,求逆,等各种功能,VB编写
**求矩阵秩的方法**通常包括将矩阵用初等行变换化为阶梯形或行最简形。例如,对于矩阵: \[ A = \begin{bmatrix} 1 & -1 & 2 \\ 2 & 1 & 1 \\ 1 & 2 & 1 \end{bmatrix} \] 可以通过初等行变换找到其行最简形,从而...
矩阵求秩
首先,Numpy 库提供了 `numpy.linalg.matrix_rank()` 函数,这是求矩阵秩的最简便方式。以下是一个简单的示例: ```python import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) rank = np....
根据给定文件的信息,我们可以总结出以下几个主要的知识点:矩阵的转置、求秩、求方阵行列式、以及求方阵的逆矩阵。 ### 一、矩阵的转置 矩阵的转置是指将矩阵A的行变为列,列变为行得到的新矩阵。具体来说,如果...
学生用矩阵计算器,可实现加、减、乘、转置及求矩阵的秩,为矩阵的常规计算,界面简单,易于操作
### 矩阵满秩分解详解 #### 一、引言 矩阵的满秩分解是一种重要的数学工具,在理论研究及实际应用(特别是矩阵广义逆的计算)中扮演着极其重要的角色。对于矩阵 \(A \in \mathbb{C}^{m \times n}\) 的满秩分解,...
- 初等变换在求矩阵秩中的重要作用在于,它们可以将矩阵转换为更简单的形式,如阶梯形或行最简形,从而更容易识别非零子式和确定秩。 - 对于非方阵,理解秩限制了矩阵表示的线性变换的范围,比如它可以指示线性...
向量组线性相关性是矩阵秩的重要应用之一。设向量组为$(a_1,a_2,...,a_n)$,向量组的秩即其极大线性无关组所含向量的个数。如果向量组所含向量个数与其秩相等,则该向量组线性无关;若所含向量个数大于秩,则该向量...
【初等变换求矩阵的秩】是线性代数中的一个重要概念,主要应用于确定矩阵的秩,即矩阵中最大线性无关向量组的数量。在矩阵理论中,矩阵的秩对于理解和解决线性方程组、理解空间的维数以及线性映射的本质等问题至关...
这是一个用c#语言写成的矩阵类,可以完成矩阵的各种准确的数学计算,如:矩阵的加减乘除、转置、逆运算、 复矩阵的乘法、求行列式值、 求矩阵秩、一般实矩阵的奇异值分解、求广义逆、约化对称矩阵为对称三对角阵、实...
矩阵低秩分解理论是数学与工程领域中用于处理和分析大规模数据集的一个重要工具。该理论的核心思想是将原始数据矩阵分解成两个或多个具有低秩结构的矩阵之和。这一理论在图像处理、机器学习、信号处理等多个领域有着...
矩阵秩与向量组极大无关组求法 矩阵秩是一个重要的概念,在线性代数中起着举足轻重的作用。矩阵秩是指矩阵中最大的非零子式的阶数,它反映了矩阵的线性独立性和秩的关系。矩阵秩的计算可以通过初等行变换和初等列...
本篇将深入探讨编码系统中的校验矩阵及其秩的概念,以及如何通过行列变换求解秩。 首先,我们来理解什么是校验矩阵。在编码理论中,校验矩阵(Parity Check Matrix)是用来检查数据正确性的矩阵,它由线性码的生成...