实验三使用MATLAB解决线性代数问题学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144
实验目的:
学习MATLAB有关线性代数运算的指令,主要学习运用MATLAB解决矩阵除法,线性方程组的通解,矩阵相似
对角化问题,以及解决投入产出分析等应用问题。
实验内容:
矩阵转置:A=[1 2;3 4];B=[4 3;2 1];
>> A',B'
ans =
1 3
2 4
ans =
4 3
3 1
矩阵加减:A-B
ans=
-3 -1
1 3
矩阵乘法:A*B,A.*B(数组乘法)||比较矩阵乘法与数组乘法的区别ans=
8 5
20 13
ans=
4 6
6 4
矩阵除法:A\B,B./A
ans=
-6 -5
5 4
ans=
4 1.5
0.6667 0.25
特殊矩阵生成:zeros(m,n)||生成m行n列的矩阵
ones(m,n)||生成m行n列的元素全为一的矩阵
eye(n)||生成n阶单位矩阵
rand(m,n)||生成m行n列[0 ,1]上均匀分布随
机数矩阵
zeros(2,3)
ans =
0 0 0
0 0 0
>> ones(3,3)
ans =
1 1 1
1 1 1
1 1 1
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
>> rand(2,4)
ans =
Columns 1 through 3
0.9501 0.6068 0.8913
0.2311 0.4860 0.7621
Column 4
0.4565
0.0185
矩阵处理:trace(A)||返回矩阵的迹
diag(A)||返回矩阵对角线元素构成的向量
tril(A)||提取矩阵的下三角部分
triu(A)||提取矩阵的上三角部分
flipud(A)||矩阵上下翻转
fliplr(A)||矩阵左右翻转
reshape(A,m,n)||将矩阵的元素重排成m行n列矩阵A=[1 2 3;4 5 6;7 8 9];
>> t=trace(A),d=diag(A),u=triu(A)
t =
15
d =
1
5
9
u =
1 2 3
0 5 6
0 0 9 flipud(A),fliplr(A)
ans =
7 8 9
4 5 6
1 2 3 ans =
3 2 1
6 5 4
9 8 7
矩阵特征值与标准型:
[V,D]=eig(A)||返回矩阵特征值与特征向量
[V J]=Jordan(A)||返回矩阵的相似变换矩阵和若尔当标
准型
A=[1 2;3 4];
>> [V,D]=eig(A)
V =
-0.8246 -0.4160
0.5658 -0.9094
D =
-0.3723 0
0 5.3723
>> [V,J]=jordan(A)
V =
0.2389 0.7611
0.5222 -0.5222
J =
5.3723 0
0 -0.3723
线性方程组求解A=[1 2 1;3 -2 1];B=[1;4];x=A\B x =
1.2500 ||求一特解
-0.1250
>> A=[1 2;3 -2;1 -1];B=[1;4;2];x=A\B
x = ||求得一最小二乘近似解
1.2838
-0.1757:
方阵的相似对角化及应用:
A=[1 1/4 0;0 1/2 0;0 1/4 1];[P,T]=eig(A) P =
1.0000 0 -0.4082
0 0 0.8165
0 1.0000 -0.4082
T =
1.0000 0 0
0 1.0000 0
0 0 0.5000
求得三个特征值1,1,0.5,对应特征向量(1,0,0),(0,0,1),
(-0.4028,0.8165,-0.4082),由于三个特征向量线性无关,从而A 可相似对角化,即p-1AP=T.那么A∧n=p[1 0 0;0 1 0;0 0 0]p-1,计算的
P*diag([1,1,0])*inv(P)
ans =
1.0000 0.50000 0
0 0 0
0 0.5000 1.0000
所以得到近似解。
投入产出问题:
设金鱼某种遗传病染色体的正常基因为A,不正常基因为a,那么,AA,Aa,aa,分别表示正常金鱼,隐形患者,显性患者,设初始分布为90%正常金鱼,10%的隐性患者,无显性患者,考虑下列两种配种方案对后代该遗传病基因型分布的影响,
方案一:同类基因结合,均可繁殖;
方案二:显性患者不允许繁殖,隐形患者必须与正常金鱼结合繁殖。
解:先考虑方案一,设初始分布x(1),x(2),x(3),第n带分布为x1(n),x2(n),x3(n),n=1,2……,令
A=(1 1/4 0 (x1(n)
0 1/2 0 X(N)=x2(n)
0 1/4 1) x3(n))
那么X(n)=AX(n-1)
A=[1 1/4 0;0 1/2 0;0 1/4 1];
>> x=[0.9 0.1 0]';
>> for i=2:20,x=A*x;end;x20=x
x20 =
0.9500
0.0000
0.0500
可见,按方案一,很多代后,将出现5%的稳定现行患者。
类似的对于方案二,状态转移矩阵变为A=(1 1/2 0
0 1/2 0
0 0 0)
A=[1 1/2 0;0 1/2 0;0 0 0];
>> x=[0.9 0.1 0];
>> for i=2:20,x=A*x;end;x20=x
x20 =
1.0000
0.0000
可知按方案二,很多后代以后,不仅不会出现隐性患者,连隐形患者也趋于消失,这个例子提现了杂交的优势。
实验心得:
通过此实验,我学会了用matlab解决线性代数这些比较不容易计算的问题,也学会了用多个方法解决问题思考问题,对这门课的兴趣也加深了。