实验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];
Ab 得到该方程组的唯一解 ans 00 x3=-2.0000 +X,+2x,-x,=0 例9求方程组{2x1+x2+x3-x4=0的通解,并指出基础解系。 2x1+2x,+x2+2x=0 解:输入 matlab命令 A=[1,1,2,-1;2,1,1,-1;2,2,1,2]; rref(A) 输出结果: ns 1.0000 0-1.3333 01.0000 03,0000 01.0000-1.3333 可见未知量中有一个自由变量x4,方程组的通解为 x1+2x2+3x3+x4=5 例0求方程组2x+4x2 x4 x1-2x2+3x3+2x,=8° x1+2x2-9x3-5x4=-21 解:输入 matlab命令 A=[1,2,3,1;2,4,0,-1;-1,-2,3,2;12,-9,-5]; b=[5;-3;8;-21] rref(LA, b]) 输出结果:ans= 1.00002.0000 0-0.5000-1.5000 01.00000.50002.1667 0 0 0 0 可见未知量中自由变量为x2和x4,方程组的通解为
A\b 得到该方程组的唯一解 ans = x1=7.0000 x2=-1.5000 x3=-2.0000 例9 求方程组 + + + = + + − = + + − = 2 2 2 0 2 0 2 0 1 2 3 4 1 2 3 4 1 2 3 4 x x x x x x x x x x x x 的通解,并指出基础解系。 解:输入matlab命令 A=[1,1,2,-1;2,1,1,-1;2,2,1,2]; rref(A) 输出结果: ans = 1.0000 0 0 -1.3333 0 1.0000 0 3.0000 0 0 1.0000 -1.3333 可见未知量中有一个自由变量 4 x ,方程组的通解为 = = − = 3 4 2 4 1 4 3 4 3 3 4 x x x x x x 例10 求方程组 + − − = − − − + + = + − = − + + + = 2 9 5 21 2 3 2 8 2 4 3 2 3 5 1 2 3 4 1 2 3 4 1 2 4 1 2 3 4 x x x x x x x x x x x x x x x 。 解:输入matlab命令 A=[1,2,3,1;2,4,0,-1;-1,-2,3,2;1,2,-9,-5]; b=[5;-3;8;-21]; rref([A,b]) 输出结果: ans = 1.0000 2.0000 0 -0.5000 -1.5000 0 0 1.0000 0.5000 2.1667 0 0 0 0 0 0 0 0 0 0 可见未知量中自由变量为 2 x 和 4 x ,方程组的通解为
x1=-2x2+=x4 ,其中x2和x4为任意实数。 x4+ 练习 1、设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、 外部需求、初始投入等如下表所示 产出(亿元) 农业制造业服务业外部需求总产出 投入(亿元 农业 15 30 35 制造业 10 45 115 200 服务业 20 60 70 150 初始投入 35 110 75 总投入 100 表中第一行数字表示,农业总产出100亿元,其中15亿元农产品用于农业生产本身 亿元用于制造业,30亿元用于服务业,剩下35亿元农产品用来满足外部需求。第一列数 字中,15亿元如前所述,30亿元是制造业对农业的投入,20亿元是服务业对农业的投入 假定每个部门的产出和它的投入成正比,上表可以确定三个部门的投入产出表 (亿元) 农业制造业服务业 投入(亿元 0.15 制造业 0.30 0.30 服务业 0.200.30 0 表2中第一行,第二列的数字0.10表示生产1个单位产值的制造业产品需投入0.10个单位 产值的农产品,这是由表1中20亿元农产品投入制造业,可以产出200亿元制造业总产值 而来的(20/200=0.1)。其余雷同 (1)如果今年对农业、制造业和服务业的外部需求分别为50,150,100亿元,问这三个 部门的总产出分别应为多少? (2)如果三个部门的外部需求分别增加一个单位,问它们的总产出应分别增加多少? 2、种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群而言,为了保证稳 定的收获,各个年龄的种群数量应维持不变,种群因雌性个体的繁殖而改变,为方便起 见以下种群数量均指其中的雌性。种群年龄记做k=1,2,…,n,当年年龄k的种群记做
= − + = − + − 6 13 2 1 2 3 2 1 2 3 4 1 2 4 x x x x x ,其中 2 x 和 4 x 为任意实数。 练习: 1、 设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、 外部需求、初始投入等如下表所示: 表中第一行数字表示,农业总产出100亿元,其中15亿元农产品用于农业生产本身,20 亿元用于制造业,30亿元用于服务业,剩下35亿元农产品用来满足外部需求。第一列数 字中,15亿元如前所述,30亿元是制造业对农业的投入,20亿元是服务业对农业的投入, 总投入和总产出相等。 假定每个部门的产出和它的投入成正比,上表可以确定三个部门的投入产出表: 表2中第一行,第二列的数字0.10表示生产1个单位产值的制造业产品需投入0.10个单位 产值的农产品,这是由表1中20亿元农产品投入制造业,可以产出200亿元制造业总产值 而来的(20/200=0.1)。其余雷同。 (1) 如果今年对农业、制造业和服务业的外部需求分别为50,150,100亿元,问这三个 部门的总产出分别应为多少? (2) 如果三个部门的外部需求分别增加一个单位,问它们的总产出应分别增加多少? 2、 种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群而言,为了保证稳 定的收获,各个年龄的种群数量应维持不变,种群因雌性个体的繁殖而改变,为方便起 见以下种群数量均指其中的雌性。种群年龄记做 k = 1,2, , n ,当年年龄k的种群记做 产出(亿元) 投入(亿元) 农业 制造业 服务业 外部需求 总产出 农业 15 20 30 35 100 制造业 30 10 45 115 200 服务业 20 60 0 70 150 初始投入 35 110 75 总投入 100 200 150 产出(亿元) 投入(亿元) 农业 制造业 服务业 农业 0.15 0.10 0.20 制造业 0.30 0.05 0.30 服务业 0.20 0.30 0
x,繁殖率记做b(每个雌性个体1年繁殖的数量),自然存活率记做Sk=1-dk,dk 为1年的死亡率,收获量记做h,则来年年龄的种群数量x1应为 x1=∑bx,xk+1=Skxk-hk(k=12…n-1) 要求各个年龄的种群每年维持不变就是要使xk=xk,k=12…n (1)若b,Sk已知,给定收获量h4,建立求各年龄的稳定种群数量x的表达式(用矩 阵、向量表示)。 (2)设n=5,b1=b2=b=0,b3=5,b4=3,S1=S4=04,S2=S3=0.6,若要求 h~h为500,400,200,100,100,求x1~x5
k x ,繁殖率记做 k b (每个雌性个体1年繁殖的数量),自然存活率记做 k dk s = 1− , k d 为1年的死亡率,收获量记做 k h ,则来年年龄的种群数量 k x ~~ 应为 , 1 1 ~~ = = n k k k x b x ( 1,2, , 1) 1 ~~ xk + =sk xk −hk k= n− 要求各个年龄的种群每年维持不变就是要使 xk xk ,k 1,2, ,n ~~ = = (1) 若 k k b ,s 已知,给定收获量 k h ,建立求各年龄的稳定种群数量 k x 的表达式(用矩 阵、向量表示)。 (2) 设 n = 5,b1 = b2 = b5 = 0,b3 = 5,b4 = 3,s1 = s4 = 0.4,s2 = s3 = 0.6 ,若要求 h1 ~ h5 为500,400,200,100,100,求 x1 ~ x5