第7章矩阵运算法解方程
第7章 矩阵运算法解方程
7.1矩阵运算的规则 ·在MATLAB入门中已讲过的,不再重复。 ·由于其乘法不符合交换律,有些公式不能乱用: ·单列向量与单行向量的左右两种乘法要加区别, 而且往往有特别的用途。 -例如向量长度(范数)的计算; -例如二维坐标网格的生成: X=0nes(21,1)*[-10:10],Y=[-10:10]'*ones(1,21) ·矩阵的乘幂An,eA和(A)1的级数展开,都要求A 是方阵
7.1 矩阵运算的规则 • 在MATLAB入门中已讲过的,不再重复。 • 由于其乘法不符合交换律,有些公式不能乱用; • 单列向量与单行向量的左右两种乘法要加区别, 而且往往有特别的用途。 – 例如向量长度(范数)的计算; – 例如二维坐标网格的生成; X=ones(21,1)*[-10:10],Y= [-10:10]’*ones(1,21) • 矩阵的乘幂An , eA和(I-A) -1的级数展开,都要求A 是方阵
矩阵乘法不满足交换律 。有许多我们习惯的公式,其中隐含地包含 了交换律,这些公式在矩阵运算中也不能 直接使用。比如: A+B)2=A2+2AB+B2 (A+B)(A-B)=A2-B2 ·正确的做法是展开时不交换次序 (A+B)=A(A+B)+B(A+B)=A2+AB+BA+B2
矩阵乘法不满足交换律 • 有许多我们习惯的公式,其中隐含地包含 了交换律,这些公式在矩阵运算中也不能 直接使用。比如: • 正确的做法是展开时不交换次序 = = 2 2 2 2 2 (A + B) A + 2AB + B (A + B)(A - B) A - B 2 2 2 (A + B) = A(A + B) + B(A + B) = A + AB + BA + B
平面上网格坐标系的产生 (-10,10)(-9,10)… (0,10)…(9,10) (10,10) (-10,9)(-9,9) (0,9) … (9,9) (10,9) (x,y)= … … … (-10,-9)(-9,-9)…(0,-9)…(9,-9)(10,-9) (-10,10)(-9,-10)…(0,-10)…(9,-10) (10,-10) -10-9…0…9 10 [1010.10…10 10 -10-9…0…9 10 9 9…9…9 9 Y= …… … Y= … -10-9…0…9 10 -9 -9… …-9-9 -10-9…0…9 10 -10-10-10 -10-10
平面上网格坐标系的产生 ( 10,10) ( 9,10) (0 10) (9,10) (10,10) ( 10,9) ( 9,9) (0,9) (9,9) (10,9) ( , ) , ( 10, 9) ( 9, 9) (0, 9) (9, 9) (10, 9) ( 10,10) ( 9, 10) (0, 10) (9, 10) (10, 10) x y − − − − = − − − − − − − − − − − − − , 10 9 0 9 10 10 10 1 0 10 10 10 9 0 9 10 9 9 9 9 9 , 10 9 0 9 10 9 9 0 9 9 10 9 0 9 10 10 10 10 10 10 X Y − − − − = = − − − − − − − − − − − − −
用列矩阵乘行矩阵生成网格坐标 ·这两个矩阵都是21行21列的,都有441个元 素,如何快捷地输入呢?这时可以用到列 乘行的乘法运算。可用下面的语句: h=-10:10;lh=length(h)%输入均分行向量 %用全么列乘均分行生成X X=ones(Ih,1)*h %用均分列乘全么行生成Y Y=h'*ones(1,Ih)
用列矩阵乘行矩阵生成网格坐标 • 这两个矩阵都是21行21列的,都有441个元 素,如何快捷地输入呢?这时可以用到列 乘行的乘法运算。可用下面的语句: h=−10:10; lh=length(h) % 输入均分行向量 % 用全么列乘均分行生成X X=ones(lh,1)*h % 用均分列乘全么行生成Y Y=h‘*ones(1,lh)
7.2初等变换乘子矩阵的生成 行交换E1genn,ij):使n行矩阵中的第i,j两行交换 function E=E1gen(n,i,j) n=size(A);E=eye(n); ·E(,)=0;E(0,j)=0;E(j)=1;E0,)=1; 乘子矩阵E2gen(ni,k),使n行矩阵中的第i行乘以k function E=E2gen(n,i,k) n=size(A);E=eye(n);E(i,i)=k; E3gen(n,ij,c)使n行矩阵中的第i行乘以k加到第j行上 function E=E3gen(n,i,j,k) n=size(A);E=eye(n);E(j,i)=k;
7.2 初等变换乘子矩阵的生成 行交换E1gen(n,i,j):使n行矩阵中的第i,j两行交换 • function E=E1gen(n,i,j) • n=size(A); E=eye(n); • E(i,i)=0; E(j,j)=0; E(i,j)=1; E(j,i)=1; 乘子矩阵E2gen (n,i,k),使n行矩阵中的第i行乘以k • function E=E2gen(n,i,k) • n=size(A); E=eye(n); E(i,i)=k; E3gen(n,i,j,c)使n行矩阵中的第i行乘以k加到第j行上 • function E=E3gen(n,i,j,k) • n=size(A); E=eye(n); E(j,i)=k;
初等变换乘子矩阵示例 ·E=E1gen(8,4,6) E2=E2gen(8,4,6) 。E3=E3gen(8,4,6,5) ·例如E3=E3gen(3,1,3,4) 100 a11a12a13 a11 a12 a13 E3*A= 01 a21a22a23 a21a22 a23 40 a31a32a33 a31+4a11a32+4a12a33+4a13
初等变换乘子矩阵示例 • E=E1gen(8,4,6) • E2=E2gen(8,4,6) • E3=E3gen(8,4,6,5) • 例如E3=E3gen(3,1,3,4) 11 12 13 11 12 13 21 22 23 21 22 23 31 32 33 31 11 32 12 33 13 1 0 0 a a a a a a 0 1 0 a a a a a a 4 0 1 a a a a +4a a +4a a +4a = = E * A 3
例7.2.4求消元所需的乘子矩阵 ·要消去下列矩阵的A(2,1),求乘子矩阵E3 26 6 A= 8 58 8 ·在第二行加以第一行乘-A(2,1)/A(1,1)=-3, 故令B=E3gen(A,1,2,-3) 1000 2 6 71 -3 0 0-16-16 3 B= B*A= 0 0 8 4 6 1 00 0 1 5 8 8 4
例7.2.4 求消元所需的乘子矩阵 • 要消去下列矩阵的A(2,1),求乘子矩阵E3 • 在第二行加以第一行乘−A(2,1)/A(1,1)=−3, 故令B= E3gen(A,1,2,−3) 2 6 7 1 6 2 5 6 8 4 6 1 5 8 8 4 = A 1 0 0 0 2 6 7 1 3 1 0 0 0 16 16 3 , 0 0 1 0 8 4 6 1 0 0 0 1 5 8 8 4 − − − = = B B* A
行阶梯生成等价于矩阵左乘 ·因此,整个行阶梯形式U的生成过程,可以看作 把原矩阵左乘以一系列的初等变换矩阵E,和E3。 把这些初等矩阵的连乘积写成Ex,设其逆为L: U=Ex·A 从而有 L*U=A (7.10) 。 就是说,A可以分解为一个准下三角矩阵L和一个 上三角(即行阶梯)矩阵U的乘积。MATLAB提 供了三角分解的函数u,它的调用方法是: [L,U=lu(A)
行阶梯生成等价于矩阵左乘 • 因此,整个行阶梯形式U的生成过程,可以看作 把原矩阵左乘以一系列的初等变换矩阵E1和E3。 把这些初等矩阵的连乘积写成Ex,设其逆为L: 从而有 L*U=A (7.10) • 就是说,A可以分解为一个准下三角矩阵L和一个 上三角(即行阶梯)矩阵U的乘积。MATLAB提 供了三角分解的函数lu,它的调用方法是: [L,U]=lu(A) U Ex A =
1u分解是求行阶梯的一个方法 ·用1u函数求出的U实际上就是A的行阶梯形 式(不是简化行阶梯形式)。所以,求简 化行阶梯形式用ref函数,而求行阶梯形式 可以用u函数。不过,它和我们用消元运 算所得的数据不一定相同,尽管得出的阶 次和阶梯形状相同。但因为行阶梯形式可 以有无数种,用不同步骤算出的结果也不 同。只有变成简化行阶梯形式,才能进行 比较,看它是不是惟一的
lu分解是求行阶梯的一个方法 • 用lu函数求出的U实际上就是A的行阶梯形 式(不是简化行阶梯形式)。所以,求简 化行阶梯形式用rref函数,而求行阶梯形式 可以用lu 函数。不过,它和我们用消元运 算所得U的数据不一定相同,尽管得出的阶 次和阶梯形状相同。但因为行阶梯形式可 以有无数种,用不同步骤算出的结果也不 同。只有变成简化行阶梯形式,才能进行 比较,看它是不是惟一的