矩阵的分块求逆及解线性方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 矩阵的分块求逆及解线性方程组
一、 问题
化已知矩阵为上三角矩阵,构作范德蒙矩阵,高阶非奇异矩阵的分块求逆,求非齐次线性方程组的通解。
二、 实验目的
学会用Matlab 语言编程,实施矩阵的初等变换将已知矩阵化为上三角矩阵;掌握
用循环语句由已知向量构造范德蒙矩阵;了解高阶非奇异矩阵用不同分块法求逆矩阵的误差分析;能根据由软件求得的非齐次线性方程组增广矩阵的阶梯型的最简形式写出线性方程组的通解。
三、 预备知识
1. 线性代数知识:
(1) 向量},,,{21n x x x X =作出的 n 阶范德蒙矩阵为
⎪⎪⎪
⎪⎪
⎪⎭⎫ ⎝⎛---112112222
1
21111
n n n n n n x x x x x x x x x
(2)分块矩阵⎪⎪⎭⎫
⎝⎛=2221
1211A A A A A ,其中11A 为方的可逆子块,求逆矩阵有如下公式: 设⎪⎪⎭
⎫ ⎝⎛=-2221
1211
1
B B B B A
,则2212111121
12111212222,)(B A A B A A A A B ----=-=, 1
11211211111111212221,----=-=A A B A B A A B B
(3)常用的矩阵范数为Frobenius 范数;2
1112||||||⎪⎪⎭
⎫ ⎝⎛=∑∑==n i n j ij F a A
2. 本实验所用Matlab 命令提示:
(1)输入语句:input('输入提示');
(2)循环语句:for 循环变量=初始值 :步长 :终值 循环语句组 end
(3)条件语句: if(条件式1)
条件块语句组1
elseif(条件式2)
条件块语句组2 else
条件块语句组3 end
(4)矩阵和向量的范数:norm(A); (5)求矩阵A 的秩:rank (A );
(6)求矩阵A 的阶梯型的行最简形式:rref(A)。
四、 实验内容及要求
1. 在建立的sy31.m 文件中编程将任意给定的n 阶方阵B1,化为上三角矩阵B1;调用
时输入:B1=A ,n=6;其A 为实验1[矩阵的基本运算]中的矩阵A 矩阵;
2. 在建立的sy32.m 文件中编程用1~6单位增量的行向量产生一个范德蒙矩阵B2; 3. 在建立的sy33.m 文件中编程对任意输入的高阶分块可逆矩阵B3实现分块法求逆;
(1)调用sy33.m 文件时输入:B3=A^2 ,输入n1=2求出B3的逆C2 ; (2)调用sy33.m 文件时输入同上的B3,输入n1=4求出B3的逆C4 ; (3)调用sy33.m 文件时输入同上的B3,输入n1=6求出B3的逆C6 ;
(4)用norm()函数对上面三种方法所求的逆作误差分析[即作(B3*Ci -E)的范数]; 4. 建立sy34.m 文件,求下列非齐次线性方程组的通解。
⎪⎪⎪⎪⎩⎪⎪⎪⎪
⎨⎧=-++-+-=+++--=+++-=-+++=-++-+=+-+++2
4663555425484321
95263355442423642654321654326421
65321654321654321x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
五、思考与练习
1. 求下列齐次线性方程组的基础解系
⎪⎪⎪⎪⎩⎪⎪⎪⎪
⎨
⎧=-++-+=+++--=+++=-+++=-++-+=+-+++0
4663550425404320
95263055442023642654321654326421
65321654321654321x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
2.用任意输入的8维行向量构造一个8阶范德蒙矩阵。
六、操作提示
1.计算过程
(1)sy31.m 文件
B1=input('B1=') N=input('N=') for j=1:N
for i=j+1:N
B1(i,:)=-B1(i,j)/B1(j,j)*B1(j,:)+B1(i,:) end end B1
调用时输入:Load sy1 A B1=A ,n=6
(2)sy32.m文件
t=input('t=');
t
n=input('n=');
for i=1:n
B2(i,:)=t.^(i-1);
end
B2
调用时输入:T=1:6 ,n=6
(3)sy33.m文件
B3=input('B3=');
[n,m]=size(B3);
n1=input('n1=');
if(n1>n)
disp('n1>n')
elseif(n1==n)
C1=inv(B3)
else
b11=B3(1:n1,1:n1);
b12=B3(1:n1,n1+1:n);
b21=B3(n1+1:n,1:n1);
b22=B3(n1+1:n,n1+1:n);
ib11=inv(b11);c22=inv(b22-b21*ib11*b12);
c12=-ib11*b12*c22;c21=-c22*b21*ib11;
c11=ib11-c12*b21*ib11;
C=[c11 c12;c21 c22]
End
(1)调用时输入:B3=A^2 ,n1=4;转换C4=C;(2)调用时输入:同上的B3 ,n1=2;转换C2=C;(3)调用时输入:同上的B3 ,n1=6;转换C6=C;(4)E=eye(size(B3));
norm(B3*C2-E);
norm(B3*C4-E);
norm(B3*C6-E);
(4)sy34.m文件
A34=[1 2 4 6 -3 2 4;2 4 -4 5 1 -5 3;3 6 2 0 5 -9 -1;...
2 3 0 4 0 1 8;0 -4 -5 2 1 4 -5;5 5 -3 6 6 -4 2]
rank(A34)
A35=rref(A34)
2.计算结果
>> sy31
B1=A
B1 =
3 4 -1 1 -9 10
6 5 0
7 4 -16