实验3 matlab中的数组和矩阵运算,线性方程组 实验目的 1、理解并能区分数组运算和矩阵运算 2、掌握用 matlab软件中数组运算和矩阵运算的命令: 3、掌握用 matlab软件中求解线性方程组的命令 实验内容: 1、矩阵和数组的输入 (1)逐个输入法:如果数据元素之间均用空格(或逗号)隔开,该向量称为行向量:如 果数据元素之间均用分号隔开,该向量称为列向量。 例如:x=[1,2,3,4;5,6,7,8;9,10,11,12] 输出结果:x 11 (2)冒号生成法:x= first: increment:last,表示包含由 first开始,步长为 increment, 到last结束的组成的行向量 例如:x=0:pi/4:pi 输出结果:x 00.78541.57082.35623.1416 (3)利用内部函数:x= linspace( first,last,n),创建从 first开始,到last结束, 有n个元素的均匀间隔的行向量 例如:x= linspace(0,pi,5) 输出结果:x 00.78541.57082.35623.1416 (4)多维矩阵必须有以下三个要素:整个输入矩阵必须以“[]”为其首尾;矩阵的行与 行之间必须用分号“;”或回车键( Enter)隔离;矩阵元素必须由逗号“,”或空格分隔。 例如:A=[1,2,3:4,5,6;7,8,9] 输出结果: 2、特殊矩阵的输入 zeros(m, n) m×n全0阵 m×n对角线1矩阵 ones(m, n) n全1阵 rand(m, n) m×n(0,1)随机阵 3、矩阵元素的操作: 取矩阵中的一个元素:x(a,b)其中a,b分别代表元素的行和列 取矩阵中的一行或一列:x(a,:),x(:;,b) 取矩阵A的第i1~i2行、第j~j列构成新矩阵:A(i1:i2,j:j) 删除A的第ii2行,构成新矩阵:A(i1:i2,:)=[]。 删除A的第jj2列,构成新矩阵:A(:,j1:j2)=[]。 将矩阵A和B拼接成新矩阵:[AB]:[A:B]
实验 3 matlab 中的数组和矩阵运算,线性方程组 实验目的: 1、理解并能区分数组运算和矩阵运算; 2、掌握用 matlab 软件中数组运算和矩阵运算的命令; 3、掌握用 matlab 软件中求解线性方程组的命令。 实验内容: 1、 矩阵和数组的输入: (1)逐个输入法:如果数据元素之间均用空格(或逗号)隔开,该向量称为行向量;如 果数据元素之间均用分号隔开,该向量称为列向量。 例如:x=[1,2,3,4;5,6,7,8;9,10,11,12] 输出结果:x = 1 2 3 4 5 6 7 8 9 10 11 12 (2)冒号生成法:x=first:increment:last,表示包含由 first 开始,步长为 increment, 到 last 结束的组成的行向量。 例如:x=0:pi/4:pi 输出结果:x = 0 0.7854 1.5708 2.3562 3.1416 (3)利用内部函数:x=linspace(first,last,n),创建从 first 开始,到 last 结束, 有 n 个元素的均匀间隔的行向量。 例如:x=linspace(0,pi,5) 输出结果:x = 0 0.7854 1.5708 2.3562 3.1416 (4)多维矩阵必须有以下三个要素:整个输入矩阵必须以“[ ]”为其首尾;矩阵的行与 行之间必须用分号“;”或回车键(Enter)隔离;矩阵元素必须由逗号“,”或空格分隔。 例如:A=[1,2,3;4,5,6;7,8,9] 输出结果:A = 1 2 3 4 5 6 7 8 9 2、 特殊矩阵的输入: zeros(m,n) ~ m×n 全 0 阵 eye(m,n) ~ m×n 对角线 1 矩阵 ones(m,n) ~ m×n 全 1 阵 rand(m,n) ~ m×n (0,1) 随机阵 3、 矩阵元素的操作: 取矩阵中的一个元素:x(a,b)其中 a,b 分别代表元素的行和列。 取矩阵中的一行或一列:x(a,:),x(:,b)。 取矩阵 A 的第 i1~i2 行、第 j1~j2 列构成新矩阵:A(i1:i2,j1:j2)。 删除 A 的第 i1~i2 行,构成新矩阵:A(i1:i2,:)=[ ]。 删除 A 的第 j1~j2 列,构成新矩阵:A(:,j1:j2)=[ ]。 将矩阵 A 和 B 拼接成新矩阵:[A B];[A;B]
4、矩阵运算命令 矩阵共轭转置 矩阵相加 矩阵相减 矩阵相乘 A/B 矩阵相除(左除)除 B\A 矩阵相除(右除)元素除 a n A阵的n次幂 5、数组运算命令 矩阵元素的共轭转置 矩阵对应元素相加 矩阵对应元素相减 同维数组对应元素相乘 A的元素被B的对应元素除 B. \A A的元素被B的对应元素除 A的每个元素自乘n次 例1特殊矩阵的生成,a= zeros(3)b=ones(4,3)c=eye(46) 试试看输出结果是什么? 例2矩阵的生成、访问,B=[1,2,3,4;5,6,7,8;9,10,11,12] 输入 matlab命令 a1=a(2,4) a2=a([,2],[2,3,4]) a3=a([1,2],[2,3,1]) a4=a([B3,1],:) 输出结果 3737 6 a4= 9101112 2 例3:练习矩阵的运算, a=[1,2,3;4,5,6] b=[-101;312] 输出结果: 3 56
4、 矩阵运算命令: A′ 矩阵共轭转置 A+B 矩阵相加 A-B 矩阵相减 A*B 矩阵相乘 A/B 矩阵相除(左除)除 B\A 矩阵相除(右除)元素除 A^n A 阵的 n 次幂 5、 数组运算命令: A.′ 矩阵元素的共轭转置 A.+B 矩阵对应元素相加 A.-B 矩阵对应元素相减 A.*B 同维数组对应元素相乘 A./B A 的元素被 B 的对应元素除 B.\A A 的元素被 B 的对应元素除 A.^n A 的每个元素自乘 n 次 例1 特殊矩阵的生成,a=zeros(3) b=ones(4,3) c=eye(4,6) 试试看输出结果是什么? 例2 矩阵的生成、访问,a=[1,2,3,4;5,6,7,8;9,10,11,12] 输入matlab命令: a1=a(2,4) a2=a([1,2],[2,3,4]) a3=a([1,2],[2,3,1]) a4=a([3,1],:) 输出结果 a1 = 8 a2 = 2 3 4 6 7 8 a3 = 2 3 1 6 7 5 a4 = 9 10 11 12 1 2 3 4 例3: 练习矩阵的运算, a=[1,2,3;4,5,6] b=[-1 0 1;3 1 2] 输出结果: a = 1 2 3 4 5 6
b 1 输入 matlab命令 4=1+a x6=2*b x7=[2,4;1,3:0,1 输出结果 x1= 4 x2 072 482 x5 03262 472524 431 8 1337 例4练习数组的运算 =[1,2,3;45,6] b=[-101;312] 输出结果:
b = -1 0 1 3 1 2 输入matlab命令 x1=a' x2=a+b x3=a-b x4=1+a x5=a-1 x6=2*b x7=[2,4;1,3;0,1] x8=a*c 输出结果: x1 = 1 4 2 5 3 6 x2 = 0 2 4 7 6 8 x3 = 2 2 2 1 4 4 x4 = 2 3 4 5 6 7 x5 = 0 1 2 3 4 5 x6 = -2 0 2 6 2 4 x7 = 2 4 1 3 0 1 x8 = 4 13 13 37 例4 练习数组的运算, a=[1,2,3;4,5,6] b=[-1 0 1;3 1 2] 输出结果:
3 b 101 输入 matlab命令 y1=a *b y2=8./b y4=2.a 输出结果: 12 12 Warning: Divide by zero. 1.0000 Inf3,0000 1.33335.00003.0000 3 49 62536 163264 例5计算矩阵a的秩,其中a 3 2 1-3-2 0 解:输入命令 a=[3,2,-1,-3,-2;2,-1,3,1,-3;7,0,5,-1,-8] rank(a) 刂6计算方阵a的行列式,其中a 1 3 234 4 2 解:输入命令 2=det(a’) (:;1)=2*(:,1) x3=det(c) x4=det(a(:,[3,2,1,4]))
a = 1 2 3 4 5 6 b = -1 0 1 3 1 2 输入matlab命令 y1=a.*b y2=a./b y3=a.^2 y4=2.^a 输出结果: y1 = -1 0 3 12 5 12 Warning: Divide by zero. y2 = -1.0000 Inf 3.0000 1.3333 5.0000 3.0000 y3 = 1 4 9 16 25 36 y4 = 2 4 8 16 32 64 例5 计算矩阵a的秩,其中 a = 3 2 -1 -3 -2 2 -1 3 1 -3 7 0 5 -1 -8 解:输入命令 a=[3,2,-1,-3,-2;2,-1,3,1,-3;7,0,5,-1,-8] rank(a) 例6 计算方阵a的行列式,其中 a = 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 解:输入命令 x1=det(a) x2=det(a') c=a;c(:,1)=2*a(:,1); x3=det(c) x4=det(a(:,[3,2,1,4]))
d=a;d(2,:); x5=det(d) 输出结果 320 160 试着解释上面的运算结果。 例7设矩阵A=221,试求矩阵A的逆矩阵 解:输入 matlab命令 A=[123;221;343] B=inv ( a 输出 B 1.00003.0000-2.0000 1.5000-3.00002.5000 1.00001.0000-1.0000 也可以用初等行变化求逆矩阵,输入 matlab命令 =[123;221;343]; ey rref(D) 输出结果: ans 1.0000 01.00003.0000-2.0000 01.0000 0-1.5000-3.00002.5000 01.00001.00001.0000-1.0000 例8解方程组{6x1+10x2+9x3=9,了解 matlab中的右除号的功能 6x1+4x,+15x 解:输入 matlab命令 A=[3,2,6;6,10,9;6,4,15]; b=[6;9;6
d=a;d(2,:); x5=det(d) 输出结果: x1 = 160 x2 = 160 x3 = 320 x4 = -160 x5 = 160 试着解释上面的运算结果。 例7 设矩阵 = 3 4 3 2 2 1 1 2 3 A ,试求矩阵 A 的逆矩阵。 解:输入matlab命令 A=[1 2 3;2 2 1;3 4 3]; B=inv(A) 输出结果: B = 1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000 也可以用初等行变化求逆矩阵,输入matlab命令 A=[1 2 3;2 2 1;3 4 3]; D=[A,eye(3)] rref(D) 输出结果: ans = 1.0000 0 0 1.0000 3.0000 -2.0000 0 1.0000 0 -1.5000 -3.0000 2.5000 0 0 1.0000 1.0000 1.0000 -1.0000 例8 解方程组 + + = + + = + + = 6 4 15 6 6 10 9 9 3 2 6 6 1 2 3 1 2 3 1 2 3 x x x x x x x x x ,了解matlab中的右除号的功能。 解:输入matlab命令 A=[3,2,6;6,10,9;6,4,15]; b=[6;9;6];