Matlab在线性方程组求解中的应用
2017-02-05邓凌峰
刘 娟 邓凌峰
Matlab在线性方程组求解中的应用
刘娟邓凌峰
(湖南科技学院 经济与管理学院,湖南 永州 425199)
线性方程组的求解是线性代数教学的重点难点内容,学生在求解方程组的通解过程很容易在系数矩阵、增广矩阵初等化简为行最简型时出现计算失误,从而导致对方程组通解的求解错误。文章应用Matlab软件实现齐次非齐次线性方程组的求解,便于学生在求解过程中的检验计算结果,以期提高学生理论结合实践的动手解决问题能力。
线性方程组;解的结构;MATLAB
0 引 言
线性方程组的求解在整个线性代数的教学中非常重要。线性方程组的求解,通常采用初等变换方法求解线性方程组的通解,但是在求解过程中,存在计算难度大,计算容易出错等问题,导致学生一步错步步错,不能很好的求出对应方程组的通解问题。Matlab软件计算功能强大,可以提高学生对该门课的兴趣,文章通过Matlab软件求解线性方程组的解,以期提高学生的实践动手能力。
1 Matlab求解齐次线性方程组
齐次线性方程组的矩阵形式为,其中是×阶矩阵,是维未知列向量[1]。
(1)维零向量是方程组的解;
在Matlab中,可以调用函数null(A,'r')来求出齐次线性方程组的解。下面给出两个实例[2]。
解:程序为
A=[1 1 1 1 1;3 2 1 1 -3;0 1 2 2 6;5 4 3 3 -1];
B=null(A,'r')%线性方程组的有理数解
得到:B =
1 1 5
-2 -2 -6
1 0 0
0 1 0
0 0 1
再输入:
syms k1 k2 k3; %定义符号参数
X=k1*B(:,1)+k2*B(:,2)+k3*B(:,3)
结果为
X =
k1 + k2 + 5*k3
- 2*k1 - 2*k2 - 6*k3
k1
k2
k3
解:程序为
A=[1 1 -1 1;1 2 -1 2;1 -1 1 -1;-3 2 3 1];
B=null(A, 'r')
结果为
B =
Empty matrix: 4-by-0
答:此齐次线性方程组只有零解。
2 Matlab求解非齐次线性方程组
注:克莱姆法则仅适用于未知数个数与方程个数相同的情况。
例题3 求下列非齐次线性方程组的通解(有唯一解的情形)。
解法一:逆矩阵法.程序为
A=[1 0 -1 1 ;3 0 2 1;2 -1 4 8;4 1 6 3];
b=[1 -1 0 0]';
C=[A,b];
rank(A)
rank(C)
D=det(A)
得到:ans =
4
ans =
4
D =
57
x=inv(A)*b
结果为
x =
-3/19
42/19
-32/57
34/57
解法二:克莱姆法则.程序为
A=[1 0 -1 1 ;3 0 2 1;2 -1 4 8;4 1 6 3];
b=[1 -1 0 0]';
D= det(A)
得到:D =
57
a1=[1 3 2 4]';
a2=[0 0 -1 1]';
a3=[-1 2 4 6]';
a4=[1 1 8 3]';
x1=det([b a2 a3 a4])/D;
x2=det([a1 b a3 a4])/D;
x3=det([a1 a2 b a4])/D;
x4=det([a1 a2 a3 b])/D;
X=[x1;x2;x3;x4]
结果为
x =
-0.1579
2.2105
-0.5614
0.5965
解法三:程序为
A=[1 0 -1 1 ;3 0 2 1;2 -1 4 8;4 1 6 3];
b=[1 -1 0 0]';
X=linsolve(A,b)
结果为
X =
-0.1579
2.2105
-0.5614
0.5965
解法一:程序为
A=[1 2 3 1;3 7 7 2;1 4 5 2];
b=[3;12;6];
C=[A b];
n=4;
[rank(A),rank(C)]
得到ans =
3 3
注:先判断解的情况,rank(A)=rank(C)=3<4,方程有无穷多解.
B=null(A,'r')
x0=pinv(A)*b %或用x0=A
结果为
B =
0.5000
0
-0.5000
1.0000
x0 =
0.3333
2.0000
-0.3333
-0.3333
解法二:在Matlab中建立一个M文件:ex1如下
A=[1 2 3 1;3 7 7 2;1 4 5 2];
b=[3;12;6];
B=[A b];
n=4;
r1=rank(A);
r2=rank(B);
if(r1==r2&r1==n) %n为未知数个数,判断是否有唯一解
X=A;
else if (r1==r2&r1 C=null(A, 'r') %求AX=0的基础解系 x0=pinv(A)*b %求特解 else fprintf('方程组无解') %判断是否无解 end end 输入命令:ex1 结果为 C = 0.5000 0 -0.5000 1.0000 x0 = 0.3333 2.0000 -0.3333 -0.3333 答:非齐次线性方程组的通解为: ,其中为任意常数。 例题5求非齐次线性方程组 解:程序为: A=[1 1 1 1;0 1 -1 2;2 3 1 4;3 5 1 7]; b=[1 1 4 5]'; C=[A b] [rank(A),rank(C)] 结果为: ans = 2 3 矩阵A与矩阵C的秩不相等,故次方程组无解。 线性代数课程开设的目的是让学生掌握行列式、矩阵的相关计算,线性方程组的通解的求解。但学生对理论理解不透彻,计算过程存在计算量大,人工手算容易出错的问题,为了提高学生对该门课的学习兴趣,根据Matlab软件的很多优良的性质,具备计算功能强大,应用Matlab软件在教学方式上进行改革,提高同学们对线性代数这门课的理解,提升学生运算效率和动手能力。 [1]北京大学数学系几何与代数教研室前代数小组编.高等代数[M].北京:高等教育出版社,2003. [2]刘卫国.MATLAB程序设计教程[M].北京:中国水利水电出版社,2010. (责任编校:何俊华) 2017-06-20 刘娟(1987-),女,湖南衡阳人,硕士,讲师,研究方向为时间序列。 F224 A 1673-2219(2017)10-0018-03