利用Mathematica软件实现线性方程组求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用Mathematica 软件实现线性方程组求解
摘要:Mathematica 作为一款独特的数学软件,有强大的数值计算和符号计算能力,具有很强的实用性,而线性方程组在线性代数中具有重要的地位.针对线性方程组的解具有零解、唯一解、无穷解的情况,文章借助Mathematica 数学软件分别给出求解的算法以及如何直接调用内部函数求解线性方程组的方法.文章中主要利用高斯-约当(Gauss-Jordan )消元法、矩阵的LU 分解法求解线性方程组,并用Mathematica 软件对这两种算法予以实现.同时给出了带有可读性好的求解过程、能用于各种逆矩阵和线性方程组求解的通用程序,利用Mathematica 数学软件实现对求逆矩阵和线性方程组的可读性计算.
关键字:Mathematica ;线性方程组;可读性计算;算法
引言
1.Mathematica 软件功能简介
Mathematica 作为一款独特的数学软件,有强大的数值计算和符号计算能力.同时,线性方程组是连接矩阵和向量组的纽带,也是矩阵和向量组的直接应用.在我们的实际工作中出现的大量数学模型,他们最后都可以化为解线性方程组,所以对线性方程组的解的研究是非常重要的.
在数学的许多分支中都涉及到线性方程组的问题,我们通常分齐次与非齐次两大类以及未知量个数与方程个数相等或不等对其进行求解,在系数矩阵为方阵时,还可以按照行列式是否为零进行分类.对于线性方程组的求解,其算法是非常清楚的,就是利用矩阵的行初等变换将对应的增广矩阵化为行最简矩阵,然后就可写出通解.但是由于整个过程涉及到大量数字运算,往往会因计算过程中不小心出现一些计算错误而导致错误的结论,有时甚至出现对没解的方程求出有解,或相反.然而,如果利用数学软件Mathematica ,可以将大家从繁琐的数字运算中解脱出来,而将注意力集中在基本概念和基本算法的学习上,从而增加学习兴趣,提高学习效率.笔者从事了一年多大学生创新实验《基于数学软件的高等代数解题实践研究》,通过实践发现,如果能够通过计算机编程让计算机自动求解各种线性方程组,这将是非常快速、方便的.因此本文以Mathematica 数学软件为平台,通过举例、演示与实验来理解线性方程组中的一些抽象概念和理论,并简捷直观地用计算机来解决复杂的线性方程组的求解问题,化简过难、过繁的运算技巧.
本文根据Mathematica 软件强大的数值计算无误差的特点和符号计算功能,总结Mathematica 的关于线性方程组计算的功能、命令,总结了求解线性方程组的解的算法,并给出带有可读性好的求解过程、能用于各种线性方程组求解的通用程序,实现线性方程组的可读性计算.
由于本章用到线性代数的许多基本知识,有必要对相关的概念和性质做一下说明. 定义1 如两个方程组具有完全相同的解,则称两个方程组为等价方程组.
定义2 关于方程组的初等运算有三种类型:
1) 交换方程组中两个方程:i j R R ↔,称为交换运算.
2) 用一个非零的实数乘以某一方程:i i R R λ→,称为倍法运算.
3) 某方程加上另一个方程的倍数:i j i R R R λ+→,称为消法运算.
定理1 若一个方程由另一个方程经过有限次初等运算得到的,则这两个方程组等价.
定义3 矩阵的初等变换,用i A 表示矩阵A 的第i 行,那么有:
1) 交换A 的两行:i j A A ↔,称为交换变换.
2) 用一个非零的实数λ乘以A 的某一行:i j A A λ→,称为倍法变换.
3) 用A 某行加上另一行的λ倍:i j i A A A λ+→,称为消法表换.
定义4 对矩阵A 施行初等变换,得到的矩阵称为相应的初等阵.
例如
23100100010001001010A A ↔⎛⎫⎛⎫ ⎪ ⎪−−−→ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭
记作23E
2210010001000001001A A λλ⨯↔⎛⎫⎛⎫ ⎪ ⎪−−−−→ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭
记作()2E λ
32310010001001000101A A A λλ+⨯↔⎛⎫⎛⎫ ⎪ ⎪−−−−−→ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭
记作()23E λ
定理2 对矩阵施行初等变换相当于将矩阵左乘相应的初等阵.
212+-210210221-101-5001001A A A ⨯→⎛⎫⎛⎫ ⎪ ⎪−−−−−−→ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭
()相当于12(-2)E A
100102102-21021-1=01-5001001001⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪ ⎪⎪ ⎪ ⎪⎪ ⎪⎝⎭⎝⎭⎝⎭
定理3 对任何n 阶矩阵A,以下性质等价:
1) A 存在逆矩阵,即A 是可逆矩阵.
2) 0A ≠,即A 是非奇异矩阵.
3) A 的行向量组(列向量组)线性无关.
4) 方程组AX b =有唯一解.
定理4 如果矩阵A 经过一系列的初等变换化为单位阵E,则单位阵E 通过相同的初等变换化为1
A -.
由此得出用初等变换求矩阵逆的方法下例所示. 例1:求矩阵123133247A ⎛⎫ ⎪= ⎪ ⎪⎝⎭
的逆. 解:
()(2)(1)(1)(2)(3)(1)13(3)(2)13(1)(3)(3)(1)(1)(2)211231*********
33010010-110247001011-201123100100010-1
10010001-1-110A E +-⨯→+-⨯→+-⨯→+-⨯→+-⨯→⎛⎫⎛⎫ ⎪ ⎪=−−−−−−→−−−−−−→ ⎪ ⎪ ⎪ ⎪⎝
⎭⎝⎭⎛⎫ ⎪−−−−−−→ ⎪ ⎪⎝
⎭()()()()()()()
-161-3-110=01-1-11E A ⎛⎫ ⎪ ⎪ ⎪⎝⎭ 2 Mathematica 软件常用命令及其功能
为了便于读者更好地利用Mathematica 软件解决数学问题,首先给出本文程序涉及的Mathematica 数学软件的命令及其功能.
Append[expr,elem]——生成一个在表expr 的最后添加元素elem 后的表;Complement[listall, list1,list2,…]——求全集listall 对listi 的差集; Delete[expr,{i}]——删除expr 中第i 个元素后剩下的表;
Do[expr,{imax}]——重复执行expr 共imax 次;
Table[expr,{imax}]-—生成一个由表达式expr 产生的元素构成的共imax 个元素的表; Do[expr,{i,min,max}]——循环变量i 按步长1从min 取至max,重复执行表达式expr; Do[expr,{i,imin,imax},{j,jmin,jmax},…]——多重循环;
Dot[a,b]——矩阵、向量、张量a 与b 的内积;Transpose[list]——对矩阵list 进行转置; IdentityMatrix[n]——自动生成一个n 阶单位矩阵;
Insert[expr,elem,n]——在表expr 的第n 个元素前插入元素elem 产生一个新表; If[condition,t,f]——如果条件condition 为True,执行t 段,否则执行f 段;
Length[expr]——表expr 中第一层元素的个数( 通常称为表的长度);
LinearSolve[A,b],给出向量x,使得Ax b =成立.——求解线性方程组Ax b =的一个特解; LUBackSubstitution[数据,b]——利用LUDecomposition[矩阵A]输出的结果求解方程组矩阵.x=b
LUDecomposition[A]——求出矩阵A 的LU 分解;
LUMatrices[lu]——返回一个形式为{l,u}的列表;
MatrixForm[expr]——按矩阵形式将表expr 输出;
NullSpace[A]——求齐次线性方程组AX=0的基础解系;
Print[expr1,expr2,…]——顺次输出表达式expri 的值;
RowReduce[A]——将矩阵A 化为简化行梯形形式;
Simplify[expr]——对表达式expr 进行化简;
Solve[eqns,vars]——从方程组eqns 中解出变量vars;
(*information*)--注释语句,其中information 表示对程序作说明;
{a,b,c}--Mathematica 中表的结构,表示元素分别为a,b,c 的表;