【线性代数】线性方程组的求解

       上一篇文章讲述了Ax=0的解和矩阵A的零空间,这里我们讨论Ax=b的解以及矩阵A的列空间。

       Ax=0是肯定有解的,因为总存在x为全零向量,使得方程组成立。而Ax=b是不一定有解的,我们需要高斯消元来确定。我们还是利用上一篇讲述了Ax=0的解的矩阵A来举例说明:

我们可以得到上述方程组的增广矩阵(等式右侧不是全零向量,消元时值会改变,所以需要用增广矩阵)如下:

然后我们进行高斯消元可以得到:

从上面的矩阵可以看出,等式成立必须有

我们假设一个满足上面条件的b向量,例如:b=[1 5 1+5];并且令两个自由变量x2=0,x4=0,则我们将消元后的矩阵写成方程组的形式如下:

得到的解为:

Xc是这个方程组的一个特解,因为当X2,X4取不同的值时,会得到不同的特解。那么我们如何得到方程的同解呢?即怎样用一般形式来表示所有的特解?

求解Ax=b的过程:

1、求解特解Xc

2、求解Ax=0的解Xn

Ax=b的解就是特解Xc+Xn,证明如下:

Xc我们上面已经得到,Xn在上一篇文章中得到,则通解可以表示为:

至此,我们就得到了Ax=b的解。

通过上面的分析求解,我们知道当b满足下式时,方程组有解:

实际上,方程有解的条件是向量b属于矩阵A的列空间,即向量b可以表示为矩阵A的各列的线性组合。例如上面的例子:

方程的解就是矩阵A中各列前面的系数。

下面推广到更一般的情况,我们以矩阵A的不同情况来看解的结构(假设矩阵A为m*n的矩阵,秩为r):

1、r=n<m,即列满秩(所有列都有主元)

     由于所有列都有主元,则自由变量的个数为0,矩阵A的零空间中只有零向量。Ax=b的解的个数为0个或者1个.

     举例说明:

  当b=[4 3 6 7]时,Ax=b的唯一解为x=[1 1]。

2、r=m<n,即行满秩(所有行都有主元)

     由于所有行都有主元,消元后不会出现全为0的行,则Ax=b有无穷多解。且自由变量的个数为n-r,矩阵A的零空间中不只有零向量。

     例如:

3、r=m=n,即列、行都满秩(矩阵可逆)

     由于列、行都满秩,则具有列满秩,行满秩的一些性质:零空间只有零向量,方程总有解且解唯一。

4、r<m,r<n,非满秩矩阵

Ax=b有无穷多解或则没有解。

从上面的四种情况的讨论,我们可以总结如下:

如果想看一个线性方程组的解的情况,我们可以通过高斯消元法得到矩阵A的最简形式R,R的可能情况如下:

这四种情况分别对应的解的情况为:

1、唯一解或无解

2、无穷多解

3、唯一解

4、无解或无穷多解

原文:http://blog.csdn.net/tengweitw/article/details/40921003

作者:nineheadedbird

时间: 2024-09-22 21:34:44

【线性代数】线性方程组的求解的相关文章

开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解

原文:[原创]开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解 开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math.NET(一)综合介绍    2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算    3.开源.NET基础数学计算组件Math.NET(三)C#解析Matlab的mat格式   4.开源.NET基础数学类库使用Math.NET(四)C#解析Matrix Marke数据格式   5.开源.NET基

《MATLAB智能算法超级学习手册》一一1.4 线性方程组的求解

1.4 线性方程组的求解 MATLAB智能算法超级学习手册 线性方程组的求解在日常生活中的应用较多,特别是解决企业规划.任务分配等问题.线性方程组的求解一般分为两类:一类是求唯一解或求特解,另一类是求通解.可以通过由MATLAB求解线性方程组系数矩阵的秩来判断: 若系数矩阵的秩r=n(n为方程组中未知变量的个数),则有唯一解: 若系数矩阵的秩r<n,则可能有无穷解: 线性方程组的通解(无穷解) = 对应齐次方程组的通解 + 非齐次方程组的一个特解,其特解的求法属于解的第一类问题,通解部分属第二类

【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组

               本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 在前几篇关于Math.NET的博客中(见上面链接),主要是介绍了Math.NET中主要的数值功能,并进行了简单的矩阵向量计算例子,接着使用Math.NET的矩阵等对象,对3种常用的矩阵数据交换格式的读写.一方面可以了解Math.NET的使用,另一方面以后也可以直接读取和保存数据为这两种格式,给大家的

使用OpenCASCADE的Math功能解线性方程组

Use Math Utilities in the OpenCASCADE OpenCASCADE由七个模块组成,分别如下: Module FoundationClasses; 基础类: Module ModelingData; 造型数据: Module ModelingAlgorihtms; 造型算法: Module Visualization; 可视化: Module ApplicationFramework; 程序框架: Module DataExchange; 数据交换: Module

OPEN CASCADE Gauss Least Square

OPEN CASCADE Gauss Least Square eryar@163.com Abstract. The least square can be used to solve a set of n linear equations of m unknowns(n >= m). The OPEN CASCADE class math_GaussLeastSquare implements the least square solution of the linear equations

OpenCASCADE Interpolation - Lagrange

OpenCASCADE Interpolation - Lagrange eryar@163.com Abstract. Power basis polynomial is the most simple polynomial function. It also be called power series. OpenCASCADE provides basic computation functions for polynomial functions, such as evaluate th

《MATLAB图像处理超级学习手册》一一1.1 MATLAB简介

1.1 MATLAB简介 MATLAB图像处理超级学习手册MATLAB是由美国MathWorks公司发布的主要面对科学计算.可视化以及交互式程序设计的高科技计算环境.它将数值分析.矩阵计算.科学数据可视化及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究.工程设计及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案.1.1.1 什么是MATLABMATLAB提供了一个高性能的用于数值计算和图形显示的科学和工程计算软件环境.这种易于使用的MATLAB 环境

vc++-新手问题:事先不知道行列数的增广矩阵的VC++控制台输入

问题描述 新手问题:事先不知道行列数的增广矩阵的VC++控制台输入 我的大概思路: vector augMa; //整个增广矩阵,其中的每一个元素为矩阵的一行(数组首地址) 我的问题是: double nu=0; while(cin>>nu){ .............................. } 相信各位大神也猜出来了,每敲一次回车代表矩阵一行的结束(这怎么实现???) 整个作业是实现线性方程组的求解(高斯消去法和三角分解法)

《数值分析(原书第2版)》—— 第2章 方 程 组

第2章 方 程 组 物理定律控制着所有的工程结构,从摩天大楼与桥梁,到跳水板以及医疗设备.静态或者动态的受力使得物体变形或者扭曲.扭曲的数学模型是结构工程师工作桌上的基本工具.结构在受力时可以扭曲的度数依赖于物质的强度,该强度使用杨氏(Young)模量来度量.压力和强度之间的竞争关系可以使用微分方法进行建模,在离散化后,该方程可以简化为一个线性方程组进行求解. 为了提高精度,使用精细的离散化,进而得到规模更大并且离散的线性系统.高斯消去法可用于一般规模的矩阵,但是对于规模大的稀疏矩阵需要特定的迭