利用MATLAB求线性方程组.docx
- 文档编号:5122904
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:10
- 大小:44.88KB
利用MATLAB求线性方程组.docx
《利用MATLAB求线性方程组.docx》由会员分享,可在线阅读,更多相关《利用MATLAB求线性方程组.docx(10页珍藏版)》请在冰豆网上搜索。
利用MATLAB求线性方程组
《MATLAB语言》课成论文
利用MATLAB求线性方程组
姓名:
郭亚兰
学号:
专业:
通信工程
班级:
2010级通信工程一班
指导老师:
汤全武
学院:
物电学院
完成日期:
2011年12月17日
利用MATLAB求解线性方程组
(郭亚兰2010级通信一班)
【摘要】在奇等数学及线性代数中涉及许多的数值问题,未知数的求解,微积分,不定积分,线性方程组的求解等对其手工求解都是比较复杂,而MATLAB语言正是处理线性方程组的求解的很好工具。
线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。
因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。
线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。
因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。
线性代数是讨论矩阵理论、与矩阵结合的有限维向量空间及其线性变换理论的一门学科。
【关键字】线性代数MATLAB语言秩矩阵解
一、基本概念
1、N级行列式A:
A等于所有取自不同性不同列的n个元素的积的代数和。
2、矩阵B:
矩阵的概念是很直观的,可以说是一张表。
3、线性无关:
一向量组(al,a2,an)不线性相关,既没有不全为零的数kl,k2,kn
使得:
kl*al+k2*a2++kn*an=0
4、秩:
向量组的极在线性无关组所含向量的个数成为这个向量组的秩。
5、矩阵B的秩:
行秩,指矩阵的行向量组的秩;列秩类似。
记:
R(B)
%*旺+如*勺+•••+%»%=4
*西+厲2F*xn=»
二、基本理论
三种基本变换:
1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一方程;3,互换两个方程的位置。
以上称出等变换。
消元法
首先用初等变换化线性方程组为阶梯形方程组:
1,如果剩下的方程当中最后的一个等式等于一非零数,那么方程组无解;否则有解;2,如果阶梯形方程组中方程的个数r等于未知量的个数,那么方程组有唯一的解;3,如果阶梯形方程组中方程的个数r小于未知量的个数,那么方程组就有无穷个解。
定理1:
线性方程组有解的充要条件为:
R(A)=R(A,b)
线性方程组解的结构:
1:
对齐次线性方程组,/两个解的和还是方程组的解;b:
—个解的倍数还是方程组的解。
定义:
齐次线性方程组的一组解ul,u2,・・・ui称为齐次线性方程组的一个基础解系,如果:
齐次线性方程组的任一解都表成ul,u2,—ui的线性组合,且ul,u2,—ui线性无关。
2:
对非齐次线性方程组
(1)方程组的两个解的差是
(2)的解。
(2)方程组的一个解与
(2)的一个解之和还是
(1)的解。
定理2如果R0是方程组
(1)的一个特解,那么方程组
(1)的任一个解R都可以表成;R=RO+V….其中V是
(2)的一个解,因此,对方称
(1)的任一特解R0,当v取遍它的全部解时,(3)就给出了
(1)全部解。
三:
基本思路
线性方程的求解分为两类:
一类是方程求唯一解或求特解;一类是方程组
求无穷解即通解。
(1)判断方程组解的情况。
1:
当R(A)=R(B)时,有解(R(A)=R(A,b))>=n
唯一解,R(A)=R(A,b)(n,有无穷解);2:
当R(B)+1=R(A,b)时无解。
(2)求特解;
(3)求通解(无穷解),线性方程组的无穷解二对应齐次方程组的通解+非齐
次方程组的一个特解;
注:
以上针对非齐次线性方程组,对齐次线性方程组,主要使用到
(1),
(2)步!
四、基本方法
基本思路将在解题的过程中得到体现。
1、(求线性方程组的唯一解或特解),这类问题的求法分为两类:
一类主要用于解低阶稠密矩阵——直接法;一类是解大型稀疏矩阵——迭代法。
2、利用矩阵除法求线性方程组的特解(或一个解)
方程:
AX=b,解法:
X=A\b,(注意此处'不是'/')
2旺--x3+x4=2
(1)求方程组
A]+x2-2x3+x4=4
4x,一6x2+2x3一2x4=4
3Xj+6x2一9x3+7x4=9
命令如下:
A=[2,-l,-1,1;1,1,-2,1;4,-6,2,-2;3,6,-9,7];%产生4x4阶系数矩阵2[2,4,4,9]';%对矩阵进行转置
x=A\b%进行左初运算
NaN
Inf
Inf
曾介绍过利用矩阵求逆来解线性方程组,即其结果于使用左除是相同的。
2、利用矩阵的分解求线性方程组
矩阵分解是指根据一定的原理用某种运算将一个矩阵分解成若干个矩阵的乘积。
常见矩阵分解如,LU,QR和Cholesky分解求方程组的解,这三种分解,再求大型方程组是很有用。
其优点是运算速度快,可以节省磁盘空间,节省内存。
(1)LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变
换形式(行变换)和上三角矩阵的乘积。
即A=LU,L为下三角阵,U为上三角
阵。
则:
A*X=b
变成L*U*X=b
所以X=U\(L\b)这样可以大大提髙运算速度。
命令[L,U]二lu(A)
在matlab中可以编如下通用m文件;
在MATLAB建立M文件如下
%
A;b;
[L,U]=lu(A);
A=LU
%产生一个三角矩阵A和一个变换形式的下三叫矩阵L(交换行),使之满足
X=U\(L\b)
%L右乘b的结果再右乘U得到x的值
旺+心_“_X4=1
(2)求方程组
2“一5x2+3“+2x4=3
7%j一7x2+3a\+=6
命令如下:
b=[l,3,6Y;
[L,U]=lu(A);
x=U\(L\b)
A二[1,—-5,3,2;7,-7,3,1];%产生3x4阶系数矩阵
%对矩阵进行转置
%产生一个三角矩阵a和一个变换形式的下三叫矩阵L(交换行),使之满足A=LU
%L右乘b的结果再右乘U得到x的值
rank=2,tol=.
采用第二种格式分解,在MATLAB建立M文件如下%
A;b;
[L,U,P]=lu(A):
X]+心_兀3_X4=1
*2Xj一5x2+3x3+2x4=3
7xJ一7x2+3x3+x4=7
X=U\(L\P*b)
(3)求方程组
命令如下:
A=[l,1厂1厂1;2,-5,3,2;7厂7,3,1];%产生3x4阶矩阵
b二[1,3,7Y;
[L,U,P]=lu(A):
%对矩阵进行转置
%产生一个三角矩阵a和一个下三角阵L以
及一个置换矩阵P,使之满足PA=LU
x=U\(L\P*b)
%x的值
rank=2,tol=.
(Il)Cholesky分解
转置的乘积,
若A为对成正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其即:
A=Rf*R其中R为上三角矩阵。
方程A*X=b变成R‘*R*X=b所以X=R\(R,\b)
在MATLAB中建立M文件如下
%
x=R\®\b)
Errorusing==>chol
Matrixmustbesquare.
命令执行时,此格式将不出现错误信息。
当A为对称正定时,则
否则P为一个正整数。
如果X未满秩矩阵,则R为一个阶数为q=p-l的上三角阵,且满足R‘R=A(1:
q,l:
q)o
(3)QR分解
对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:
A=QR
方程A*X=b变形成QRX=b
所以X=R\(Q\b)
上例中[Q,R]=qr(A)%产生一个正交矩阵Q和一个上三角矩阵R,使之A=QR
X=R\(Q\B)%x的值
在MATLAB中建立M文件如下
A;b;
[Q,R]=qr(A):
X=R\(Q\b)
4"+2x2-x3=2
(5)求方程组
3X]-x2+2x3=10
11%!
+3x2=8
命令如下:
A=[4,2,-1;3,-1,2;11,3,0];%产生3x3阶的矩阵
b=[2,10,8]';
[Q,R]=qr(A);
%对矩阵进行转置
%产生一个正交矩阵Q和一个上=角矩阵
R,使之满足人弋只
x二R\(Q\b)
%x的值
+015*
RC0ND=.
除了用直接方法求解线性方程组的解之外,还可以用迭代法求解。
迭代法适合求解大型系数矩阵的方程组。
它主要包括Jacobi迭代法,Gauss-Serdel迭代法,超松驰迭代法和两步迭代法。
在此只讨论Jacobi与Gauss-Serdel迭代法。
1’Gauseidel迭代法
用迭代法求解下列线性方程组,迭代初值为0,迭代精度为10e-6o
函数文件:
function[y,n]二gauseidel(A,b,xO,eps)ifnargin==3
eps=;elseifnarg:
in<3
return
End
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\U;f=(D-L)\b;y=G*xO+f;
%y的值
n=l;
whilenorm(y-xO)>=epsxO=y;y=G*xO+f;
n=n+l;
End
%迭代次数
(6)求解方程组
xx+2x2+X3=1
‘3x)+6x2_£=5
5Xj+10x2+x3=3
在命令中调用该文件,
程序如下:
A=[l,2,l;3,6,-1;5,10,11;
b=[l,5,3]';
%调用gauseidel函数
%产生一个3*3阶系数矩阵
%对矩阵进行转置[x,n]=gauseidel(A,b,[0,0,0]\
0/0
0/0
0/0
1391
2fJacobi迭代法函数文件:
function[y,n]=jacobi(A,b,x0»eps)ifnargin=3
eps二;
elseifnargin<3errorreturn
end
D=diag(diag⑷);
L=-tril(A,-1);
U=-triu(A,1);
B=D\(L+U);
f=D\b;
y=B*xO+f;
%精确度为10e-6
牖误
%结束该函数的执行
%求A的对角矩阵
%求人的下三角阵
%求A的上三角阵
%y的值
n=l
%迭代次数
while
norm(y-xO)>=epsx0=y;y=B*x0+f;n=n+l;
end
用Jacobi迭代法求解下列线性方程组,迭代初值为0,迭代精度为10e-6o
3石-x2=6
(7)求解方程组
vxx+2x2一3x3=5
_比+5x2=7
在命令中调用该文件,程序如下:
A=[3,-l,0;l,2,-3;0,-1,5];%产生一个3*3阶系数矩阵A
b=[6,5,7]';%产生矩阵b
[x,n]=Jacobi(A,b,[0,0,0]1,%调用jacobi函数
f=n=
1
x=
NaN
NaN
NaN
n=
1709
五、总结
Matlab语言运算以矩阵运算为基础,可视化,程序设计有机的融合到一个简单易行的互换式工作环境中,有出色的数值计算功能和强大的图形处理功能,而且简单易学,代码短小高效。
线性代数是数学中的一个重要分支,很多理论问题和实际问题都需要借助于线性代数的理论工具来分析解决,而且随着计算机的普及,线性代数被广泛应用于科学,经济,工程和管理等各个领域,同时线性代数也成为高校理工科和经济管理类各专业的一门公共基础课。
线性代数课程是由方程Ax二b发展起来的,主要研究线性方程组和二次型,对线性方程组的研究引入了行列式,矩阵,向量。
这三块内容是研究线性方程组的三大工具。
学习线性代数有两大难点:
一是概念,理论抽象,二是计算量大。
不过利用Matlab语言,就可以轻松快捷的解决很多线性代数问题。
比如说求方阵的逆和行列式,线性方程组中论述的求方阵的逆运算和行列式比较复杂,而在Matlab中,方阵的逆运算只需用函数“inv”即可…
六、心得体会
通过写本次的论文,我受益匪浅,才发现原来论文的书写格式要求这么严格,以前也没怎么注意格式。
由于学的不精,在Matlab软件中编程时出现了好多好多问题,格式上的,大小写,还有软件中的一些特殊用法等等。
在多次的修改后才勉强完成这次论文。
在学习Matlab的时候,我感觉这个语言要比我们在大一时学的C语言更加方便,实用,虽然各有各的特点。
比如在求解不等式问题上,C语言需要运用if,else,for等多条语句才能完成不等式的求解,然Matlab则只需几个简单的语句就可运行出结果。
这样就可以是工作量大大减少。
在学完该课程后,我发现利用Matlab作为后继课程的解题工具,可以使我们从繁杂的计算中解放出来,同时将计算机与其他课程结合起来,大大提高了学习效率。
[参考文献]
[1]《高等代数》,北京大学数学系编,1978
[2]吉家峰《数学手册》,蒲俊,伊良忠编着,2002
[3]刘卫国主编《MATLAB程序设计与应用》第二版[M].北京:
高等教育出版社,
2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 MATLAB 线性方程组