第一章 矩阵和高斯消元法

  1. 消元法解方程,将矩阵化成上三角或者下三角矩阵:

    有100个等式的方程的消法需要3分之百万步(乘法和减法),接近百万步的时候,舍入误差将会很大。

  2. 行列式法(当矩阵变大时运算量急剧增大):

    消元法是当前普遍采用的方法。

    从行看,方程角度

    从列看,向量角度

    【从行向量的角度看线性组合Ax=b】

    面方程 ax+by+cz = d a,b,c中可以至多有两个为0,面只有两个维度,

    N维方程确定有n-1维的‘面‘(plane)

    线方程 ax+by = 0

    设方程为n维,每添加一个同维度的方程(一个新的‘平面‘,空间为n-1维),所确定空间的维度都会减1,要获得方程唯一解的话,至少要有n个方程

    不独立:两线平行(重合),两面平行(重合)或者方程无解(平行,或者不属于上述两种情况),注意线是一维的,面是二维的,从线和面自己定义的空间来说

    从列向量角度看线性组合:列向量的组合(combination)

    开始考虑线性组合的时候从方阵开始考虑,这是问题的出发点。以下大部分使用的都是三阶方阵。

    【奇异的情况】:

    注意这些无解的情况对应于几何表示的无交集和方程求解的无解,要从两方面去看待解的有无。

    注意平面的法向量。法向量不动而方程值右侧改变,会造成平面的平移

    在二维的情况下,平行线是唯一的无解的情况。

    三维情况下,奇异的情况(注意是三维的情况,下面画出的都是从侧面看到的面):

    对于(b),三面两两相交,交线彼此平行,没有交集,方程无解,事实上若第三个面不平行于前两个面的交线,结果一定会有一个交点,而不会出现无解的情形

    对于(c),用消法解方程会出现0=0的情形,此时有无限个解,这些解都在一条直线上(注意三维情况下无限解只有这种情况和三面重合的情况)。(b)中的面经过平移会出现(c)中的情形

    从列向量的角度:

    无解的情况:

    左边的三列向量属于同一个平面,右边的向量不在这个平面内

    无限解的情况:

    左边的三列向量属于同一个平面,右边的向量也在这个平面内

    确定三个向量在同一个平面内:Ax=0有(非全0)解,则三个向量在同一个平面内。

    总结:扩展到n维的情况下,如果n个‘平面(n-1维)‘(plane)没有交点,或者说有无限个交点(方程角度),那么这n列向量落在同一‘平面‘内,或者说这n列向量只确定了至多n-1维空间,没有涉及到第n维空间。

    如果row picture无解的话,那么coloumn picture自然也不会有解,两者表示的是同一个问题。

    U+v-w = 2 (1)

    2u+3w =5 (2)

    3u+v+4w=6 (3)

  3. (1)+(2)=(3)的含义:

    三维情况下点无限,只能是三 列向量 同平面

    因求的是(1)(2)(3)的交集,则点必符合(1)(2)(3)式,则点必符合(1)(2)式,则点必符合(1)+(2)式,实际上(1)(2)式的交集应该是一条直线,这条直线应该是(1)+(2)式代表空间的子集,因为(1)+(2)=(3),则(1)(2)(3)的交集就是(1)和(2)相交的直线,所以点是无限个

    再者列向量是否共面其实是和等式右边没有关系的,即等式左边的row picture如果经过简单变换能变成相加相等的形式就能确定左边的列向量其实是共面的,只要左边能换成相等的形式,总能找到符合(1)+(2)=(3)的等式右边的b,从而左边列向量是共面的。这个条件是充分的,但是不一定必要。

    确定共面的另一种形式(充分必要条件),令b=0,Ax=b,b=0,若有非全零解,说明列向量是共面的

    在进行消法运算中,出现了a!=b:

    也就是说,存在交集的假设根本不成立。。。意思就是没有交集,你可以认为它是一种反证法。

    【!!交集只是原来集合的子集,这些假设都是建立在这些子集上的,两方程的和式,差式,均是在交集上成立,而不是全集上成立】

    求两面交线:(1)垂直于两面的法向量(2)过交线上任意一点。。。但是,三维坐标系内会有直线方程存在么。。。。。。。。。所以结果必须用两个面来表示,一个方程是没法表示的

    如果(a,b)是(c,d)的倍数,则(a,c)一定是(b,d)的倍数

    (a,b)/n=(c,d) 则 (a,c)=(b,d)/w ,显而易见,a/n*w=b/n即c*w=d;

    高斯消元法:

    实际做的时候可以将后面的自变量去掉,只利用矩阵的形式

    高斯消元法解和奇异性的关系:

    唯一解: 非奇异

    一个pivot position出现0,之后此列剩余的系数就不能计算得到0,此时可能奇异,也可能是非奇异:因为可以调换行的位置,调换之后计算能够进行,非奇异,否则就是奇异的。

    非奇异和奇异的情况:

    在这些图中对应的row picture:

    1. 两面平行,一定会出现两行相消 0 = x 的情况,若x=0,则两平行线合一,有无限个解,否则无解

      在对row picture进行变换的时候,

    对于row picture,若它有唯一解,则再为这个row picture添加一行,消法中最后一行会出现0=0的结果。

    1.4 矩阵记法和矩阵乘法

    M equations and n unknowns: m*n矩阵

    Vector:本书中指的是列向量

    Ax=b b叫做非齐次项

    【!!!】矩阵的乘法的两种解释形式:

    这种形式很重要,他表示列的和,x是系数

    :i行j列的元素

    M by n:m行n列

    X = (2,5,0)表示的是列向量,只不过写成了行的形式。

    I identity matrix单位矩阵

    Eij elementary matrix 初等矩阵

    E在高斯消元法中可以作为Elimination matrix:

    第二行的[-2 1 0]就代表消法的第二行结果为-2倍第一行+第二行,应该需要两个e才能完成三维的矩阵消法,因为一次只能处理一行。

    【!!】不妨看看多个Elimination matrix相乘的结果,结果很机智,绝对很机智

    可以记做:,或者:

    [!!]注意当矩阵扩展到如下形式时:

    [!!]注意AB的任一列都是A中所有列的一个组合(2,4)*1+(3,0)*5 = (17,4)

    [!!]或者看成AB的每一行都是B中所有行的一个组合2*[1 2 0]+3*[5 -1 0]=[17 1 0];

    换行矩阵:

    矩阵乘法运算律:

    结合律,分配率,不满交换律(commutative)

    几种特定形状的矩阵:

    ··

    两个上三角矩阵的乘积还是上三角矩阵,两个下三角矩阵的乘积还是下三角矩阵

    [!!!]矩阵的第三种计算方法:

    A=[1/2 1/2;1/2 1/2], A的不管多少次方都是自己

    将矩阵中的元素从头到尾翻转:

    矩阵块乘法:

    另外三种矩阵乘法计算方法遵从同样的计算规律,可以将一个块看成一个整体去计算。只要块的划分是正确的。

    1.5 三角因子和行交换

    上三角矩阵:upper triangular

    下三角矩阵:lower triangular

    [!!!]逆的问题竟然是从高斯消元法导出的:

    L计算的规律:

    L和U似乎是解决问题Ax=b的关键:

    LUx=b

    先解A=LU,然后计算c,再计算x

    A good elimination code:

    分解的唯一性:

    如果,U‘s是有单位对角线元素的上三角矩阵,

    L是有单位对角元素的下三角矩阵,D的对角线元素没有0,则L1=L2,D1=D2,

    U1=U2;

    对于置换矩阵P来说,,且

    注意P的记法,P的下标表示的是P所交换的两行

    P的使用设想:

    当某个pivot接近0的时候,也需要换行,为了减少误差。

    注意在消元法过程中,如果出现了换行的情况,Elimination Matrix的相应的行也需要跟着改变。

    交换k,r两行的matlab算法,r在k下面

    A([r k],:) = A([k r],:); %交换A的K两行

    L([r k],1:k-1)=L([k r],1:k-1);%交换L的k,r两行,之后做消元的时候是基于交换过

    %行的矩阵,注意实际交换的是A,是L随A动

    P([r k],:)=P([k r],:);

    sign = -sign

    A good question:

    注意对于来说,其在计算过程中一直保持此种形式

    这就对应了lij为什么会对号入座的问题,所有X的位置都会照搬到左边0的位置,对于GFE可不一定是此种形式,因为它的运算顺序于此相反,可以很容易的举出不能对号入座的例子,比如,很明显最后一行不是[-1 -1 1]。比如另一个例子:

    A=LDU,若A的元素关于主对角线对称,则L,U相互对称

    Tridiagonal matrice:

    [!!]matlab里进行LU分解的函数:[L,U,P]=Lu(m);

    Cholesky 分解: R = chol(A); 满足:

    1.6 逆和转置

    逆不存在:当Ax=0,且x不等于0,A无逆

    对于Ax=0,若A是可逆的,则x只有0解

    逆的定义式:

    逆存在:当且仅当消元法产生n个非0 pivots

    每个矩阵的逆是唯一的

    如果A是可逆的,则Ax=b的解唯一:

    因此,有逆对应于矩阵非奇异,无逆对应矩阵奇异

    行列式也可以确定矩阵是否可逆:

    Matlab里测试矩阵是否可逆是通过找n个非0 pivots的方法

    对角矩阵可逆的充要条件:对角线元素都不为0

    A=LU这个:

    Gauss-Jordan method来求逆:

    右边的inv(L)实际上就是(假设最简单情况下,没有行交换)

    U:

    如果能求出,则Ax=b一步可解,但是作者更推荐使用A=LU的形式:

    注意:当A必须交换行以达到获取U的目的时,按照上节的规则,我们获取的是

    PA=LU,Gauss-Jordan方法并没有采用这种形式(,这才是它采用的形式,两者并不相同),当行交换时直接整行交换即可,结果是正确的,正好是

    可逆与否:本书将会从行的独立性,列的独立性,非0行列式,非零的特征值等这些方面去看待,以及与转置的关系这些方面去看待独立性。

    A 1-sided inverse of a square matrix is automatically a 2-sided inverse.

    1-sided inverse: a left-inverse or a right-inverse

    事实上Gauss-Jordan方法获得的是A的左逆:

    p64

    因为矩阵的各种操作都是乘在A的左边

    左逆等于右逆的证明 p60

    可逆则有n个非零pivots的证明 p64

    转置矩阵:

    证明见p65

    对称矩阵:

    ,必然是方阵

    对称矩阵不一定是可逆的,如果可逆,其逆一定是对称的

    即对于任意矩阵上三式一定是对称矩阵

    是对称矩阵 是斜对称矩阵

    都是对称矩阵,但是两者通常不相等

    证明P66

    对于permutation matrices来说,。可以发现

    【!!】也就是说AB=AC,B和C并不一定相等,而且这种不相等是普遍存在的,而不是只有少数几种情况。

    但是注意AB有逆可不代表A或者B是可逆的

    若矩阵的某列为全零,则矩阵一定是不可逆的(从角度去看),若某个pivots为0,则此列一定可以变换成全0的形式,故不可逆。

    【??】,(a)(c)应该是正确的

    Skew-symmetric :

    实际上,可逆性这种性质一直在强调的是唯一性。一个矩阵的逆一定是唯一的,它实际是非奇异性的另一种应用形式。

    三元上三角矩阵求逆也是很简单啊:

    若A可逆,则也是可逆的:

    [??]若可逆,则A可逆?(是基于A有逆,由上可知,若A可逆,则也是可逆的)

    [!!]在matlab里,\被用来处理Ax=b的问题,,实际就是b当分子,A当分母,因此使用左除\

    分块矩阵的转置:

    :(a) (c)

    下三角矩阵的逆是他本身,下三角矩阵乘下三角矩阵还是下三角矩阵

    对称矩阵的逆是对称矩阵,对称矩阵乘对称矩阵结果不一定是对称矩阵

    对角矩阵的逆还是对角矩阵,两对角矩阵相乘还是对角矩阵

    只通过换行或者换列操作无法做到对一个矩阵的转置

    1.7 特殊矩阵和应用

    主要讲了三角对称矩阵在消元法时的所做的运算可以大为简化,使用了微分方程的例子。

时间: 2025-01-18 00:18:14

第一章 矩阵和高斯消元法的相关文章

第一章《3D理论初步》

?? 小伙伴们,你们好! 经历了两年多的Cocos2d-x的学习与开发,我相信你们都已经成长为一名合格的Cocos2d-x程序员.但是,千万不要觉得这样就可以万事无忧了!3D时代已经来临,3D手游的产品越来越多,怎么办?使用Unity3D?嗯,是啊,Unity3D看起来不错的样子,不过,你是愿意放弃长期习惯的VC++的开发方式?你是否愿意放弃开源引擎自由掌控代码的感觉?你是否愿意从此站在引擎底层之外,只是做一个使用者? 如果你想快速的基于现有的Cocos2d-x经验或项目来增加3D部分功能,或者

用 WEKA 进行数据挖掘 ——第一章:简介

1.简介数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至算法优化,确实需要很多背景知识.但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西.他们的精力,集中在特征提取,算法选择和参数调优上.那么,一个可以方便地提供这些功能的工具,便是十分必要的了.而weka,便是数据挖掘工具中的佼佼者.Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化的,基于JAVA环境下

图像处理分析与机器视觉【第一章】

第一章是引言部分,简单的做一下笔记,记录一些学习的心得体会,日后回头在复习的话也会有一些新的体会. 计算机视觉目的是是一种电子化的感知和理解图像.我们都知道人的视觉系统是十分复杂的,可以根据光照强弱,明暗颜色等各种特征对我们周围的物体加以识别和区分,但是电脑却不可以.因为图像一般是以数字矩阵的形式存在的,下图就是电脑眼中的世界和我们眼中的世界有着明显的不同.              而学习计算机视觉的目的就是帮助电脑去理解图像,全局性地去提取图像中的信息.计算机视觉技术可以分为低级和高级两种,

第一章:机器学习基础

第一部分:分类 本书前两部分主要探讨监督学习(supervisedieaming).在监督学习的过程中,我们只需要给定输入样本集,机器就可以从中推演出指定目标变量的可能结果.监督学习相对比较简单,机器只需从输入数据中预测合适的模型,并从中计算出目标变量的结果.      监督学习一般使用两种类型的目标变量:标称型和数值型.标称型目标变量的结果只在有限目标集中取值,如真与假.动物分类集合{爬行类.鱼类.哺乳类.两栖类.植物.真菌};数值型目标变量则可以从无限的数值集合中取值,如0.100.42.0

[线代笔记]第一章 线性方程组解法

第一章 线性方程组解法 代数学起源于解方程(代数方程) 一元一次.一元二次.一元三次.一元四次都有求根公式(通过系数进行有限次加.减.乘.除.乘方.开方得到解),一元五次以上方程就不再有求根公式了(近世代数) 二元一次方程组.三元一次方程组.…….n元一次方程组(线性代数研究对象) 高等代数——线性代数+多项式理论 1. 线性方程组的同解变形.线性组合.初等变换.消去法 例1 同解变形:用3种同解变形必可化方程组为阶梯型 交换两个方程位置 用非0的数c乘某个方程两边 用某个方程的k倍加到另一个方

《从0到1》笔记 第一章 未来的挑战

第一章 未来的挑战----质疑现在,组建有新思想的小团体,实现垂直与深入创新 进步可以呈现两种形式.一种是水平进步,也称广泛进步,意思是照搬已取得成就的经验--直接从1跨度到n.水平进度相对较容易,它是从已有的,现成的出发.一种是垂直进步,也称深入进步,意思是要探索新的道路--从0到1的进步.垂直进步比较难,这需要尝试从未做过的事情. 如果你根据一台打字机造出了100台打字机,那就是水平进步.而如果你有一台打字机,但你又造出了一台文字处理机,这就是垂直进步. 在宏观上,全球化就是水平进步,它把某

离散数学第一章【给广大不认真学习学生的福利贴】

第一章 1.1:集合和子集 空集:没有任何元素的集合 无限集合: 1. Z+:正整数集合: 2. N: 自然数集合: 3. Z: 整数集合 4. Q: 有理数集合 5. R: 实数集合 幂集:A的所有子集的集合. 基数:A中的不同元素的个数 1.2集合运算 并集∪:集合呈变大趋势 交集∩:集合呈变小趋势 补集:A-B={x|x∈A且x不属于B}: U-A: A的补集,{x|x∈U且x不属于A},符号:A上有"一", (AUB)的补集==A的补集∩B的补集 (A∩B)的补集==A的补集∪

《windows程序设计》第一章,建议想学API的每天看一章

开始 壹佰软件开发小组  整理编译   本书介绍了在Microsoft Windows 98.Microsoft Windows NT 4.0和Windows NT 5.0下程序写作的方法.这些程序用C语言编写并使用原始的Windows Application Programming Interface(API).如在本章稍后所讨论的,这不是写作Windows程序的唯一方法.然而,无论最终您使用什么方式写作程序,了解Windows API都是非常重要的. 正如您可能知道的,Windows 98已

《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换

文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将数据以某种方式转化为另一种相似的形式,数据本身发生了改变:③生成全新的数据 每次处理一个字符: 任务用每次处理一个字符的方式处理字符串. 解决方案可以创建一个列表,列表的子项是字符串的字符.代码如下: >>> thelist = list('thestring') >>>