实验3 matlab中的数组和矩阵运算,线性方程组实验目的:
1、理解并能区分数组运算和矩阵运算;
2、掌握用matlab软件中数组运算和矩阵运算的命令;
3、掌握用matlab软件中求解线性方程组的命令。
实验内容:
矩阵和数组的输入:
(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]。
矩阵运算命令:
A′ 矩阵共轭转置
A+B 矩阵相加
A-B 矩阵相减
A*B 矩阵相乘
A/B 矩阵相除(左除)除
B\A 矩阵相除(右除)元素除
A^n A阵的 n次幂
数组运算命令:
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 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]
输出结果:
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)
输出结果:
x1 =
160
x2 =
160
x3 =
320
x4 =
-160
x5 =
160
试着解释上面的运算结果。
设矩阵,试求矩阵的逆矩阵。
解:输入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
解方程组,了解matlab中的右除号的功能。
解:输入matlab命令
A=[3,2,6;6,10,9;6,4,15];
b=[6;9;6];
A\b
得到该方程组的唯一解
ans =
x1=7.0000
x2=-1.5000
x3=-2.0000
求方程组的通解,并指出基础解系。
解:输入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
可见未知量中有一个自由变量,方程组的通解为

求方程组。
解:输入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
可见未知量中自由变量为和,方程组的通解为
,其中和为任意实数。
练习:
设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、外部需求、初始投入等如下表所示:
产出(亿元)
投入(亿元)
农业
制造业
服务业
外部需求
总产出
农业
15
20
30
35
100
制造业
30
10
45
115
200
服务业
20
60
0
70
150
初始投入
35
110
75
总投入
100
200
150
表中第一行数字表示,农业总产出100亿元,其中15亿元农产品用于农业生产本身,20亿元用于制造业,30亿元用于服务业,剩下35亿元农产品用来满足外部需求。第一列数字中,15亿元如前所述,30亿元是制造业对农业的投入,20亿元是服务业对农业的投入,总投入和总产出相等。
假定每个部门的产出和它的投入成正比,上表可以确定三个部门的投入产出表:
产出(亿元)
投入(亿元)
农业
制造业
服务业
农业
0.15
0.10
0.20
制造业
0.30
0.05
0.30
服务业
0.20
0.30
0
表2中第一行,第二列的数字0.10表示生产1个单位产值的制造业产品需投入0.10个单位产值的农产品,这是由表1中20亿元农产品投入制造业,可以产出200亿元制造业总产值而来的(20/200=0.1)。其余雷同。
如果今年对农业、制造业和服务业的外部需求分别为50,150,100亿元,问这三个部门的总产出分别应为多少?
如果三个部门的外部需求分别增加一个单位,问它们的总产出应分别增加多少?
种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群而言,为了保证稳定的收获,各个年龄的种群数量应维持不变,种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。种群年龄记做,当年年龄k的种群记做,繁殖率记做(每个雌性个体1年繁殖的数量),自然存活率记做,为1年的死亡率,收获量记做,则来年年龄的种群数量应为
要求各个年龄的种群每年维持不变就是要使
若已知,给定收获量,建立求各年龄的稳定种群数量的表达式(用矩阵、向量表示)。
设,若要求为500,400,200,100,100,求。