这篇文章和大家聊聊矩阵的初等变换和矩阵的秩

矩阵的初等变换这个概念可能在很多人听来有些陌生,但其实我们早在初中的解多元方程组的时候就用过它。只不过在课本当中,这种方法叫做消元法。我们先来看一个课本里的例子:

假设我们要解这个方程,怎么做呢?

首先,我们把(1)式加到(2)式,把(4)式加到(3)式,把(1)式乘6加到(4)式可以得到:

我们再把(4)式减去(2)式乘5,可以解出x4=−3:

我们把x4=−3带入,可以解出x1, x2, x3。

因为消元之后,方程组的数量少于变量的数量,我们无法解出所有的变量。其中的x3可以取任何值。

上面这个计算的方法我们都非常熟悉,如果我们用一个矩阵来表示所有的次数,那么这个矩阵D可以写成:

那么,我们刚才消元的过程,其实就是对这个矩阵做初等变换。我们把这个过程总结一下,矩阵的初等变换操作包含以下三种:

  1. 对调两行
  2. 以数k,k≠0乘上某行的所有元素
  3. 以数k,k≠0乘上某行所有元素并加到另一行

以上的三种都是针对行为单位的,因此上面的三种变换也称为“行变换”。同样我们也可以对列做如上的三种操作,称为“列变换”。行变换和列变换结合就是矩阵的初等变换。

同样,我们可以对D这个矩阵使用刚才我们上述的初等变换操作,将它变成如下这个结果:

它就对应方程组:

Dt矩阵是经过初等行变换的结果,我们还可以再对它进行列变换,将它变得更简单,我们只要交换第三和第三列,之后就可以通过初等列变换把第五列消除,之后它就变成了下面这个样子:

我们用数据归纳法可以很容易证明,所有的m*n的矩阵经过一系列初等变换,都可以变成如下的形式:

r就是最简矩阵当中非零行的行数,它也被称为矩阵的秩。我们把A矩阵的秩记作: R(A)

之前我们在介绍行列式的时候说过,行列式还存在多种性质。其中之一就是一个矩阵经过初等变换,它的行列式保持不变。我们又知道,如果行列式当中存在某一行或者某一列全部为0,那么它的行列式为0。

所以,我们可以得到,对于n阶矩阵A而言,如果它的秩R(A)

再根据我们前文当中有关可逆矩阵的定义,可以得到,可逆矩阵的秩就等于矩阵的阶数,不可逆矩阵的秩小于矩阵的阶数。所以,可逆矩阵又称为满秩矩阵,不可逆矩阵(奇异矩阵)又称为降秩矩阵。

之前我们在复习行列式以及逆矩阵的时候,总觉得少了些什么,现在有了矩阵的秩的概念之后,这些知识就能串起来了。

代码计算

同样,numpy当中也继承了计算矩阵秩的工具。我们可以很轻松的用一行代码算出矩阵的秩,这样我们在判断矩阵是否可逆的时候,就不需要通过行列式来判断了。因为矩阵秩的计算要比行列式的计算快得多。

import numpy as npnp.linalg.matrix_rank(a)

有了矩阵秩的概念之后,我们后续的很多内容介绍起来都方便了许多,它也是矩阵领域当中非常重要的概念之一。

线性方程组的解

我们理解了矩阵的秩的概念之后,我们现学现用,看看它在线性方程组上的应用。

我们之前在介绍行列式的时候,曾经介绍过n元n个等式的方程组的解,可以用行列式表示。但是现实当中我们遇见的方程组并不一定是n元n等式的,我们推广到一般的情况来看。假设当下有一个n元m个等式的方程组:

我们可以将它写成矩阵相乘的形式:Ax = b

我们利用系数矩阵A和增广矩阵B=(A,b)的秩,可以和方便地看出线性方程组是否有解。我们先来看结论:

  1. 当R(A) < R(B)时无解
  2. 当R(A) = R(B) = n时,有唯一解
  3. 当R(A) = R(B) < n时,有无数解

证明的过程也很简单,主要就是利用矩阵秩和最简矩阵的定义。

我们假设R(A)=r,并将B矩阵化简成最简形式,假设得到的结果是:

(1) 显然,当R(A) < R(B)时,那么矩阵Bf中的dr+1 = 1,那么第r + 1行对应的方程0 = 1矛盾,所以方程无解。

(2) 如果R(A) = R(B) = r = n,那么矩阵Bf中的dr+1 = 0,并且 bij都不出现,所以我们可以直接写出方程组的解:

此时,方程组有唯一解

(3) 如果R(A) = R(B) = r < n,则B中的dr+1=0,我们写出对应的解:

由于参数c1, c2, ... cn-r可以取任意值,所以方程有无数解。上面写出的解的形式即是线性方程组的通解

齐次线性方程组

如果我们将上面的线性方程组的常数项都置为0,就称为齐次线性方程组,如下:

齐次方程组最大的特点就是当x=0时一定有解,称为方程组的零解。我们还通过增广矩阵来判断,写出来其实还是刚才一样的形式:

和非齐次线性方程组不同的是,我们可以断定dr+1=0,如此一来就不存在无解的情况。这个时候我们要判断的就是方程组是否存在非零解,我们一样通过矩阵的秩来判断,判断的条件也很简单,如果R(A) = n,则不存在非零解,如果R(A) < n,则存在无数组非零解。

我们先写出R(A) = n的情况,这时候的矩阵Bf为:

也就是说:

当R(A) < n时方程组和非齐次方程组类似,唯一不同的是可以确定di=0 (i=1, 2, ...n),我们直接带入之前的通项公式,可以得到:

线性方程组的解的公式和计算本身其实并不重要。因为在实际的算法领域,用到的也不多。但是理解线性方程组对于理解后面的向量以及线性空间非常有帮助,文中的公式看着恐怖,但冷静下来真的去试着理解一下,会发现也就那么回事。

衷心希望大家学有收获,如果喜欢本文,请顺手给个关注吧~

matlab非同秩矩阵相乘_线性代数精华——讲透矩阵的初等变换与矩阵的秩相关推荐

  1. c++矩阵转置_线性代数中的向量矩阵

    目录 前言 符号约定 向量的基本性质 [定义,基向量,线性相关/无关*,向量点积] 矩阵的基本性质 [转置,广播,线性变换] 矩阵基本运算 [矩阵相乘,矩阵点积] 行列式 [概念,性质,右手法则,行列 ...

  2. 线性代数--第二讲:矩阵消元

    线性代数--第二讲:矩阵消元 1,矩阵消元 1.1,方程组求解 1.2,增广矩阵 2,矩阵乘法 2.1,矩阵*向量 = 矩阵列的线性组合 2.2,向量*矩阵 = 矩阵行的线性组合 2.3,总结 3,单 ...

  3. matlab非同秩矩阵相乘_MATLAB中的矩阵与向量运算

    4.1 数组运算和矩阵运算 从外观形状和数据结构来看 , 二维数组和数学中的矩阵没有区别 . 但是 , 矩阵作为一种变换或 映射算符的体现 , 矩阵运算有着明确而严格的数学规则 . 而数组运算是 MA ...

  4. matlab非同秩矩阵相乘_MATLAB自学笔记(八):矩阵元素运算与矩阵运算

    一.矩阵元素运算 1.矩阵的加减运算 前提是参与运算的两个或多个矩阵均为m*n矩阵:或者其中一个或多个矩阵为标量 C = A±B:C(m,n) = A(m,n) + B(m,n) C = A±x:C( ...

  5. java 矩阵求秩_线性代数精华3——矩阵的初等变换与矩阵的秩

    矩阵的初等变换这个概念可能在很多人听来有些陌生,但其实我们早在初中的解多元方程组的时候就用过它.只不过在课本当中,这种方法叫做消元法.我们先来看一个课本里的例子: 假设我们要解这个方程,怎么做呢? 首 ...

  6. pytorch 矩阵相乘_编译PyTorch静态库

    背景 众所周知,PyTorch项目作为一个C++工程,是基于CMake进行构建的.然而当你想基于CMake来构建PyTorch静态库时,你会发现: 静态编译相关的文档不全: CMake文件bug太多, ...

  7. matlab里的矩阵和opencv里的矩阵的区别,opencv 矩阵相乘, matlab矩阵相乘,以及自己写的矩阵相乘的时间比较...

    直接上代码吧 matlab clc close all clear all tic; c = rand(7500,7500)*rand(7500,1);toc; Elapsed time is2.57 ...

  8. pytorch 矩阵相乘_深入浅出PyTorch(算子篇)

    Tensor 自从张量(Tensor)计算这个概念出现后,神经网络的算法就可以看作是一系列的张量计算.所谓的张量,它原本是个数学概念,表示各种向量或者数值之间的关系.PyTorch的张量(torch. ...

  9. 1 数列分块入门_线性代数入门——关于分块矩阵的典型证明题与综合题

    系列简介:这个系列文章讲解线性代数的基础内容,注重学习方法的培养.线性代数课程的一个重要特点(也是难点)是概念众多,而且各概念间有着千丝万缕的联系,对于初学者不易理解的问题我们会不惜笔墨加以解释.在内 ...

最新文章

  1. SQL Server 字符串操作
  2. 服务器2003蓝屏A5修复,求助windows 2003 蓝屏分析
  3. 利用均差的牛顿插值法(Newton)
  4. python 文档字符串_新款Python文档字符串生成器来了
  5. UI素材资源|Material风格的插图,有品位的素材
  6. springMVC之mvc:interceptors拦截器的用法
  7. Unity中一个安卓设备拆装项目,从使用到放弃ab包过程记录
  8. oracle sql 取中位数,Oracle / PLSQL MEDIAN函数
  9. 统计局:2018年全国规模以上工业企业利润增长10.3%
  10. Eclipse的Debug调试技巧大全
  11. Eclipse中的Lua插件 LDT
  12. java名片_JavaWeb练习-网上名片管理系统
  13. spring cloud tencent:框架概括及组件详解(一)
  14. 索尼1000xm3成功配对小米5 蓝牙支持ldac传输
  15. 小米抢发全尺寸人形机器人,全方面转型!
  16. 超好用的电脑浏览器广告去除拓展工具
  17. 英语“不规则”动词的“规律”
  18. 图形变换核心原理(平移、缩放、旋转,拉伸)
  19. Oracle查询数据提示ORA-00942:表或视图不存在
  20. 4G时代 载波聚合——用户、网络双受益

热门文章

  1. 最新php常用函数200个,180多个PHP常用函数总结
  2. tkmybatis 子查询_真假童子命符箓道长教你如何查询
  3. 和平精英显示服务器人数太多,和平精英到底有多差 导致玩家纷纷国际服
  4. 合并排序算法排序过程_外部合并排序算法
  5. Java ClassLoader setDefaultAssertionStatus()方法与示例
  6. python元组为什么不可变_为什么python字符串和元组是不可变的?
  7. python爬虫与django_请问django和爬虫程序如何整合?
  8. linux touch权限不够,Linux下的Access、Modify、Change , touch的使用以及权限问题
  9. java工程师占比_Java工资怎么样?哪个地方Java工作机会最多?
  10. TTYL的完整形式是什么?