矩阵的秩

在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数,通常表示为r(A),rk(A)或rank A。一个矩阵A的列秩是A的线性独立的纵列的极大数目。类似地,行秩是A的线性无关的横行的极大数目。即如果把矩阵看成一个个行向量或者列向量,秩就是这些行向量或者列向量的秩,也就是极大无关组中所含向量的个数。

相关定理

定理:矩阵的行秩,列秩,秩都相等。
定理:初等变换不改变矩阵的秩。
定理:如果A可逆,则r(AB)=r(B),r(BA)=r(B)。
定理:矩阵的乘积的秩Rab<=min{Ra,Rb};
引理:设矩阵A=(aij)sxn的列秩等于A的列数n,则A的列秩,秩都等于n。
当r(A)<=n-2时,最高阶非零子式的阶数<=n-2,任何n-1阶子式均为零,而伴随阵中的各元素就是n-1阶子式再加上个正负号,所以伴随阵为0矩阵。
当r(A)<=n-1时,最高阶非零子式的阶数<=n-1,所以n-1阶子式有可能不为零,所以伴随阵有可能非零(等号成立时伴随阵必为非零)。

代码块

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 5    //表示行数
#define M 9    //表示列数
void main()
{float a[N][M]={{0,4,5,0,0,1,1,1,0},{-5,0,2,0,1,0,1,0,3},{7,2,0,0,-4,0,4,1,0},{-3,1,0,0,0,0,0,0,1},{2,-3,0,0,3,1,0,4,0}};int i,j,k;float temp;  int r=0,d=0; //r表示秩,d表示当前正在哪一行。for(i=0;i<M;i++){k=d;                            /*a[i][i] a[i+1][i] ... a[n][i]中绝对值最大的行位置*/for(j=d+1;j<N;j++)if(fabs(a[k][i])<fabs(a[j][i]))k=j;   if(k!=d)                     /*交换第i行和第k行,行列式该变号*/{for(j=i;j<M;j++){temp=a[d][j];a[d][j]=a[k][j];a[k][j]=temp;}}if(a[d][i]==0)            /*当a[i][i]为零是时,行列式为零*/     { continue;}else{r=r+1;for(j=0;j<N;j++){if(j!=d){temp=-1*a[j][i]/a[d][i];for(k=i;k<M;k++)a[j][k]=a[j][k]+temp*a[d][k];}}temp=a[d][i];for(j=i;j<M;j++)a[d][j]=a[d][j]/temp;}d=d+1;if(d>=N)break;}printf("矩阵行的最简式为:\n");for(i=0;i<N;i++){for(j=0;j<M;j++)printf("%.4f\t",a[i][j]);printf("\n");}printf("\n矩阵的秩R(A)=%d\n",r);
}

注:请在C语言编译环境下运行

求解矩阵的秩相关算法(C语言)相关推荐

  1. 《算法导论》第六章之堆和优先级队列相关算法C语言实现

    #include <stdio.h> int heap_size = 10; void max_heapify(int *A, int i){ //维持最大堆性质int l = 2 * i ...

  2. Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)

    Algorithm:C+语言实现之数组相关算法(和为定值的两个数.和为定值的m个数.荷兰国旗.长度为2n的洗牌算法.任意长度数组的洗牌算法) 目录 数组 1.寻找和为定值的两个数 2.和为定值的m个数 ...

  3. Algorithm:C++语言实现之队列相关算法(最短路径条数问题、拓扑排序)

    Algorithm:C++语言实现之队列相关算法(最短路径条数问题.拓扑排序) 目录 队列 1.最短路径条数问题 2.拓扑排序 队列 1.最短路径条数问题

  4. Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)

    Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...

  5. Algorithm:C++语言实现之内排序、外排序相关算法(插入排序 、锦标赛排序、归并排序)

    Algorithm:C++语言实现之内排序.外排序相关算法(插入排序 .锦标赛排序.归并排序) 目录 一.内排序 1.插入排序 2.锦标赛排序 3.归并排序 二.外排序 1.过程 一.内排序 1.插入 ...

  6. Algorithm:C++语言实现之链表相关算法(链表相加、链表的部分翻转、链表划分、链表去重、重复元素全部删除)

    Algorithm:C++语言实现之链表相关算法(链表相加.链表的部分翻转.链表划分.链表去重.重复元素全部删除) 目录 一.链表 1.1.链表相加 1.2.链表相加 2.1.链表的部分翻转 2.2. ...

  7. Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树、二叉查找树的插入节点、二叉查找树的删除、二叉树的遍历、平衡二叉树)C 语言实现

    Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树.二叉查找树的插入节点.二叉查找树的删除.二叉树的遍历.平衡二叉树)C++语言实现 目录 树的基础知识 1.二叉树的遍-前序 ...

  8. Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)

    Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...

  9. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

    详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...

最新文章

  1. 超级详细的教程 一步步教你Vue项目中使用axios如何进行参数拼接
  2. SAP IBASE logic of pt_equiindx
  3. php空间限制磁盘限额,ORA-01536:超出表空间XXXX的空间限额
  4. linux c++线程池的实现
  5. 从《在小吃店遇见凯恩斯》初识经济
  6. 前端学习(2868):vue3数据劫持解析3
  7. C++安全方向:(三)课前导学:密码学核心开发技术
  8. 让组件悬浮所有页面之上
  9. centos 7 php目录权限设置密码,Linux系统中(CentOS 7)的用户和权限管理
  10. 雷林鹏分享:PHP 变量
  11. 活动选择问题 贪心
  12. I00015 打印等腰三角形字符图案(底边在上)
  13. 78 ----二次曲面方程的化简、移轴变换、转轴变换、伸缩变换
  14. 开发环境配置(netbeans+ant迁移到eclipse+maven)
  15. Atitti opencv2.4 实现的人脸检测 attilax总结
  16. 小程序快速入门:wxml的使用
  17. 自制光猫超级密码解密工具
  18. 小程序实现保存图片到手机
  19. 如何开启Windows共享文件夹服务
  20. 2022(一等奖)B360基于Arcpy与SVM的滑坡易发性评价

热门文章

  1. 可信数字版权保护解决方案Sky Engine—重塑原创价值,构建数字版权新生态
  2. 波长、子载波、载波容量和波长容量、频谱效能(针对光通信来说)
  3. 使用matlab对记录数据进行傅里叶分析
  4. 2020年6月编程语言排行榜:C语言蝉联榜单第一
  5. middlebury立体匹配评估使用方法总结(二)——python版离线教程
  6. 软件生命周期模型—V模型
  7. java bat转vbs_EXE2BAT(EXE转BAT)的vbs脚本
  8. 怎么爱护眼睛保护视力?补充光照的护眼台灯
  9. python 卡方分布值_饱和模型与偏差计算R方与p值
  10. 【OpenCV--模板匹配】