在实际生产生活中,需要我们解大量的线性方程组,例如是有探测、线性规划、电路等,这里我们便从理论角度建立一套解决线性方程组的体系。

线性方程组:

形如下面形式的方程组称为线性方程组。

回想起解决二元线性方程组我们的处理方法,本质上就是高斯消元法的个例,在解决多元线性方程组的时候,我们使用的便是高斯消元法.

探求线性方程组的解情况以及解线性方程组是线性代数核心要解决的问题。

然而为了更好的简化运算过程,我们确定每个方程中xi的位置,仅仅关注线性方程组的系数,因此这里自然的引入的矩阵:

这里我们便完成了一步简单但是非常重要的工作,系数矩阵的引入将线性方程组的运算放在了矩阵运算,于是研究线性方程组的解法就和矩阵的一系列性质变得密不可分。

矩阵的行初等变换是高斯消元算法的基础。结合上文关于矩阵的引入,我们要时刻关注另外的一个视角看矩阵——它表征一个线性方程组。容易看到,对于线性方程组做出上述的三个变化,线性方程组的解空间是没有发生变化的,因此矩阵本身表征的意义就没有发生变化。

既然引入了工具,就应该更好的为我们用高斯消元解线性方程组做出更好的铺垫。我们再来看几个概念:

(注:这里的先导元素指的是每一行第一个非零元素。)

依然从线性方程组的角度审视这个阶梯型矩阵,我们看到,再次将其转化成线性方程组的时候,线性方程组变得非常容易解,对于有解的情况,我们能够从最下面一行确定1个变量,然后依次向上确定其余变量值,不仅如此,在阶梯型矩阵的基础上,判断是否有解也十分方便,具体如何判断将在后面详细给出。

最简阶梯型矩阵的意义与阶梯型矩阵一致,但计算上会带来一定的便捷,因此在后面处理线性方程组的时候,采取的策略都是将线性方程组的增广矩阵通过行初等变换变成最简阶梯型矩阵。

上文我们说对于一个线性方程组的增广矩阵,基于它的最简阶梯型形式,非常容易得到解集,因此下面很有必要做的工作就是,如何将一个矩阵化简成最简行阶梯型矩阵。

为了论述的方便,首先给出下面关于主元位置、主元列的定义:

这是我们再以线性方程组的角度审视最简阶梯型矩阵,将主元位置的变量视为基本变量,其余位置的变量视为自由变量,我们就可以将线性方程组的解系表达出来。

基于最简阶梯型矩阵,容易得到如下的关于线性方程组的解情况的定理。

不谈严谨的充要性证明我们简单的理解,依然用线性方程组的角度去审视最简阶梯型矩阵,如果最右侧是主元列,则出现0=1的情况,显然无解。而对于有解的两种情况,其正确性也很显然。

综合一下上面论述的内容,我们得到了下面应用行化简算法解线性方程组的算法:

Step1:写出方程组的增广矩阵。

Step2:应用航化简算法把增广矩阵化为阶梯型,确定方程组是否有解,如果没有解则停止,否则进行Step3.

Step3:继续行化简算法得到它的简化阶梯型。

Step4:写出Step3所得到的矩形所对应的方程组。

Step5:把Step4所得的每个方程改写为用自由变量表示基本变量的形式。

至此,我们较为初级的解决了线性方程组的求解问题,在后面随着对矩阵认识的深入,对于判断线性方程组的解情况,会有一种基于矩阵的秩的方法。

《Linear Algebra and Its Application》-chaper1-行化简法解决线性方程组的更多相关文章

  1. 「2020-2021 集训队作业」Yet Another Linear Algebra Problem(行列式,Binet-Cauchy 公式)

    题面 出题人:T L Y \tt TLY TLY 太阳神:Tiw_Air_OAO 「 2020 - 2021 集 训 队 作 业 」 Y e t A n o t h e r L i n e a r A ...

  2. 《Linear Algebra and Its Applications》-chaper1-向量方程、矩阵方程和线性方程组

    向量: 向量的基本运算:向量的运算最基本的一件事情,就是基于它n个分量上进行,即对于两个分量的向量a = <a1,a2>,b = <b1,b2>,有a + b = <a1 ...

  3. 线性代数导论 | Linear Algebra 课程

    搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...

  4. 个案排秩 Rank (linear algebra) 秩 (线性代数)

    非叫“秩”不可,有秩才有解_王治祥_新浪博客http://blog.sina.com.cn/s/blog_8e7bc4f801012c23.html 我在一个大学当督导的时候,一次我听一位老师给学生讲 ...

  5. PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)

    前言 MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶.也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作. 虽然PYTHON和众 ...

  6. 线性代数 -- Linear Algebra with Applications

    @.如果线性方程组无解,则称该方程组是不相容的(inconsistent). @.如果线性方程组至少存在一个解,则称该方程组是相容的(consistent). @.等价方程组(equivalent s ...

  7. Here’s just a fraction of what you can do with linear algebra

    Here’s just a fraction of what you can do with linear algebra The next time someone wonders what the ...

  8. MFC用串行化实现文档存储和读取功能

    在面向对象的程序设计中,一般都是用二进制文件来保存文档资料.在VC++中控制和使用文件流的方法很多,MFC程序设计中常用的有两种方法:用CFile对象存储和读取文件:利用串行化存取文件.其中用CFil ...

  9. Codeforces Gym101502 B.Linear Algebra Test-STL(map)

    B. Linear Algebra Test   time limit per test 3.0 s memory limit per test 256 MB input standard input ...

随机推荐

  1. 重装系统时,将MBR分区转为GPT 分区

    摘要 很多同学在重装系统的时候,或多或少都遇到过这样的问题:镜像文件没有问题,软碟通刻录也没有问题,但偏偏就在选择安装系统盘盘符的时候,跳出对话框,提示:Windows无法安装到这个磁盘,选中的磁盘具 ...

  2. dedecms网站文章标题与简标题的调用问题

    使用dedecms调用标签的时候,既然有,咱们就合理利用,如果没有,咱也可以自己去添加.以下介绍dedecms网站文章标题调用的一些技巧,希望大家能够合理运用. dedecms网站文章标题与简标题的调 ...

  3. CTE的使用

    CTE在SQL2005后的版本提供,丰富了查询的表现形式,下面我们慢慢来看下CTE都能干什么 1.自我递归 ;WITH myaa AS ( SELECT num=1 UNION ALL SELECT ...

  4. 抓取锁的sql语句-第一次修改

    CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000); CUR_LOCK SYS_REFCURSOR; TYPE TP_LOCK ...

  5. iOS 中的传值方式

    一. 属性传值   将A页面所拥有的信息通过属性传递到B页面使用 很常用的传值,也很方便,但是要拿到类的属性.例如: B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传 ...

  6. 《C# 并发编程 · 经典实例》读书笔记

    前言 最近在看<C# 并发编程 · 经典实例>这本书,这不是一本理论书,反而这是一本主要讲述怎么样更好的使用好目前 C#.NET 为我们提供的这些 API 的一本书,书中绝大部分是一些实例 ...

  7. 修改一行SQL代码 性能提升了N倍

    在PostgreSQL中修改了一行不明显的代码,把(ANY(ARRAY[...]) 改成 ANY(VALUES(...))),结果查询时间从20s变为0.2s.最初我们学习使用EXPLAN ANALY ...

  8. asp.net Server.HtmlEncode和HtmlDecode

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">< ...

  9. Linux imagemagic(转载)

    原文地址:http://linux.chinaitlab.com/c/803455.html 更多详细使用示例请参考:http://www.ibm.com/developerworks/cn/open ...

  10. set_time_limit() 控制页面运行时间

    当你的页面有大量数据时,建议使用set_time_limit()来控制运行时间,默认是30s,所以需要你将执行时间加长点,如 set_time_limit(300)  ,其中将秒数设为0 ,表示持续运 ...