APP下载

Matlab在线性方程组求解中的应用

2017-02-05邓凌峰

湖南科技学院学报 2017年10期
关键词:线性方程组方程组代数

刘 娟 邓凌峰



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

猜你喜欢

线性方程组方程组代数
深入学习“二元一次方程组”
两个有趣的无穷长代数不等式链
求解非线性方程组的Newton迭代与Newton-Kazcmarz迭代的吸引域
Hopf代数的二重Ore扩张
《二元一次方程组》巩固练习
什么是代数几何
一类次临界Bose-Einstein凝聚型方程组的渐近收敛行为和相位分离
线性方程组解的判别
一个非平凡的Calabi-Yau DG代数
非自治耗散Schrödinger-Boussinesq方程组紧致核截面的存在性