数学实验教程_实验11(线性方程组及向量组的线性相关性)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验11 线性方程组及向量组的线性相关性
实验目的
1.掌握齐次线性方程组的通解的求解方法
2.掌握非齐次线性方程组的特解和通解的求解方法
3.利用向量组线性相关与无关的几何演示,加深理解线性相关与线性无关的概念4.掌握向量组的秩和最大线性无关组的计算方法
5.理解线性方程组的解的结构的几何意义
实验准备
1.复习线性方程组的解法及其表示;
2.复习向量的基本运算、向量的线性组合及线性表示
3.复习向量组的线性相关(无关)、向量组的秩和最大线性无关组的求法等
4.复习向量空间的基及维数
实验内容
1.线性方程组的解法
2.向量的基本运算及线性组合
3.向量组的线性相关性的判别
4.向量组的秩和最大线性无关组的求法
5.线性方程组的解的结构
软件命令
表11-1 Matlab向量操作命令
实验示例
- 66 - 第一章 基础实验
【例11.1】 线性方程组的解法
求下列线性方程组的通解
1.23045607890x y z x y z x y z ++=⎧⎪++=⎨⎪++=⎩; 2.23024603690x y z x y z x y z ++=⎧⎪++=⎨⎪++=⎩;3.2314254240x y z x y z x y z -+=⎧⎪
-+=⎨⎪-+=⎩
;
4.2312264257x y z x z x y z -+=⎧⎪+=⎨⎪++=⎩; 5.26767971411725979361625225
x y z w x y z w x y z w x y z w +++=⎧⎪+++=⎪
⎨+++=⎪⎪+++=⎩。
【原理】线性方程组Ax b =的求解可以分为两类:一类是齐次线性方程组;另一类是非齐次线性方程组。无论哪一种类型,都需要先判断出该方程组的解的分布情况:唯一解?无解?无穷多解?,然后在进行求解。具体如下(n 为未知量的个数):
【判别原理】:(1)若()(,)R A R A b n ==,则方程组Ax b =有唯一解;
(2)若()(,)R A R A b n =<,则方程组Ax b =有无穷多解; (3)若()(,)R A R A b ≠,则方程组Ax b =无解。 Matlab 命令:rank(A),rref(A,b)。
【求解方法】原理:高斯消元法。将增广矩阵化成行最简形,然后求解。 【步骤】:Step1:当Ax b =有唯一解时,可采用如下两种方法之一
● 利用命令:x=A\b ;
● 利用命令:x=linsolve(A,b);
● 利用LU 、QR 、Cholesky 分解命令:x=U\(L\b);x=Q\(R\b);x=R\(R'\b) Step2: 当Ax b =有无穷多解时,可以采用下述方法
● 利用命令:null(A,'r');
● 第一步,利用z=null(A,'r')求出0Ax =的基础解系;
第二步,利用A\b 或者rref([A,b])或者linsolve(A,b)求出Ax b =的一个特解;
第三步,利用Ax b =的解的结构理论构造处通解。
Step3:(3)当Ax b =有无解时,可以采用下述方法求出最小二乘解
● 命令:x=(A'*A)\(A'*b); ● 命令:x=linsolve(A,B,opt)
实验11 线性方程组及向量组的线性相关性 - 67 -
【程序】:
【程序1】:LinearSysYesorNo.m
% 调用方式: str=LinearSysYesorNo(A,B)
% 判断线性方程组 Ax=b 是否有解 % 输入:系数矩阵 A ,右端矩阵 B
% 输出:解的判别的三种情况:唯一解、无解、无穷多解 中的一种。 【程序2】:SolveLinearSys.m
% 调用方式: x=SolveLinearSys(A,b)
% 求解线性方程组 Ax=b % 输入:A , b % 输出:x
% 说明:利用高斯消元法求解线性方程组 Ax=b 【程序3】:Exm12Demo02.m
% 调用前面的函数,具体求解 。
【例11.2】参数方程求解
试就参数λ的各种情况,讨论下述线性方程组的解的情况:
21
x y z x y z x y z λλλλλ⎧++=⎪
++=⎨⎪++=⎩
。 【方法一】:根据方程组的特殊性:m=n ,先利用Cramer 法则确定唯一解;然后分别讨论无解和无穷多解的情况。
syms a;
A=[a 1 1;1 a 1;1 1 a]; B=[1;a;a^2]; det(A)
factor(det(A)) solve(det(A))
因此,由Cramer 法则,当2
(2)(1)0λλ+-≠,即2,1λλ≠-≠时,有唯一解;
下面讨论其否定情况,即21λλ=-=或时原方程组的解的情况:
当2λ=-时,将2λ=-代入上面A 和B 中的a ,利用【例12.1】中的函数计算:
A=[-2 1 1;1 -2 1;1 1 -2]; B=[1;-2;4];
LinearSysYesorNo(A,B) SolveLinearSys(A,B)
可得此时,方程组无解,最小二乘解为[1;2;0];
当1λ=时,将1λ=代入上面A 和B 中的a ,利用【例12.1】中的函数计算:
A=[1 1 1;1 1 1;1 1 1];
- 68 - 第一章 基础实验
B=[1;1;1];
LinearSysYesorNo(A,B) SolveLinearSys(A,B)
可得此时,方程组无穷多解,解为[1-c1-c2;c1;c2]。 【方法二】:直接对增广矩阵做初等行变换,变成类似行阶梯型矩阵,然后根据秩讨论。(这里需要调用三个小程序:swaprow(A,r,s),scalerow(A,r,t),replacerow(A,r,s,t)): 【主程序】:Exm12Demo02.m
【子程序】:swaprow.m ;scalerow.m ;replacerow.m
% 调用方式: Y=swaprow(A,r,s)
% 交换矩阵 A 的第 r 行和第 s 行 % 输入:矩阵 A ;行号:r ,s % 输出:交换后的矩阵 Y
% 调用方式: Y=scalerow(A,r,t) % 比例行
% 输入:矩阵 A ;非零数 t ; % 输出:矩阵 Y
% 调用方式: Y=replacerow(A,r,s,t)
% 替换行:A 的第 s 行乘以数 t 加到第 r 行上 % 输入:矩阵 A ;行号 r 和 s ,数量 t % 输出:Y
【注意】:含有参数情况的线性方程组的解的情况讨论,不能直接使用Matlab 中的函数:rank,rref,因为Matlab 会默认这些参数及其表达式不等于零。因此,应该编写独立的过程加以讨论。
【例11.3】向量组的线性相关性的判别法、秩和最大线性无关组的求法
判断下列向量组的线性相关性,并求其秩和一个最大线性无关组。 1.1234(1,2,1,3),(4,1,5,6),(1,3,4,7),(1,2,1,1)αααα==-=--=;
2.123451202125111,,,,0334236073ααααα⎡⎤⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥
---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=====⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦⎣⎦⎣⎦
。
【原理】:向量组的秩与向量组中向量的个数之间的关系: 若两者相等,则线性无关;否则线性相关。
【最大无关组】:列向量组构成的矩阵的主元列。 【主程序】:Exm12Demo03.m
% Exm12Demo03.m : 判断向量组的线性相关性
% 第一个向量组
A=[1 2 1 3;4 -1 5 6;1 -3 -4 7;1 2 1 1]';