您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 列主元三角分解法在matlab中的实现
列主元三角分解法在matlab中的实现摘要:介绍了Matlab语言并给出用Matlab语言实现线性方程组的列主元三角分解法,其有效性已在计算机实现中得到了验证。关键词:Matlab语言;高斯消去法;列主元三角分解法0前言Matlab是MatrixLaboratory(矩阵实验室)的缩写,它是由美国Mathwork公司于1967年推出的软件包,现已发展成为一种功能强大的计算机语言。它编程简单,使用方便,在Matlab环境下数组的操作与数的操作一样简单,进行数学运算可以像草稿纸一样随心所欲,使计算机兼备高级计算器的优点。Matlab语言具有强大的矩阵和向量的操作功能,是Fortran和C语言无法比拟的;Matlab语言的函数库可任意扩充;语句简单,内涵丰富;还具有二维和三维绘图功能且使用方便,特别适用于科学和工程计算。在科学和工程计算中,应用最广泛的是求解线性方程组的解,一般可用高斯消去法求解,如果系数矩阵不满足高斯消去法在计算机上可行的条件,那么消元过程中可能会出现零主元或小主元,消元或不可行或数值不稳定,解决办法就是对方程组进行行交换或列交换来消除零主元或小主元,这就是选主元的思想。1定义列主元三角分解:如果A为非奇异矩阵,则存在排列矩阵P,使PA=LU,其中L为单位下三角矩阵,U为上三角阵。列主元三角分角法是对直接三角分解法的一种改进,主要目的和列主元高斯消元法一样,就是避免小数作为分母项.2算法概述列主元三角分解法和普通三角分解法基本上类似,所不同的是在构造Gauss变换前,先在对应列中选择绝对值最大的元素(称为列主元),然后实施初等行交换将该元素调整到矩阵对角线上。例如第)1,,2,1(nk步变换叙述如下:选主元:确定p使1)1(maxkiknikkpkaa;行交换:将矩阵的第k行和第p行上的元素互换位置,即.实施Gauss变换:通过初行变换,将列主对角线以下的元素消为零.即3列主元三角分解在matlab中的实现例:对矩阵513252321A进行LPU分解其程序如下:function[l,u,p]=mylu(A)[m,n]=size(A);ifm~=nerror('矩阵不是方阵')returnendifdet(A)==0error('矩阵不能被三角分解')endu=A;p=eye(m);l=eye(m);fori=1:mforj=i:mt(j)=u(j,i);fork=1:i-1t(j)=t(j)-u(j,k)*u(k,i);endenda=i;b=abs(t(i));forj=i+1:mifbabs(t(j))b=abs(t(j));a=j;endendifa~=iforj=1:mc=u(i,j);u(i,j)=u(a,j);u(a,j)=c;endforj=1:mc=p(i,j);p(i,j)=p(a,j);p(a,j)=c;endc=t(a);t(a)=t(i);t(i)=c;endu(i,i)=t(i);forj=i+1:mu(j,i)=t(j)/t(i);endforj=i+1:mfork=1:i-1u(i,j)=u(i,j)-u(i,k)*u(k,j);endendendl=tril(u,-1)+eye(m);u=triu(u,0);控制命令为:A=[123;252;315];[l,u,p]=mylu(A)结果为:l=1.0000000.66671.000000.33330.38461.0000u=3.00001.00005.000004.3333-1.3333001.8462p=0010101004小结在数值计算中,列主元三角分解法是求解线性方程组一个很重要的方法,而用MATLAB可以简单便捷的实现该算法,从而轻松得到线性方程组的解。参考文献:[1]蒲俊等,吉家锋,伊良忠.MATLAB6.0数学手册[M].上海:浦东电子出版社,2002.35-40.[2]萧树铁.数学实验[M].北京:高等教育出版社,1999.130-139.[3]李庆扬,王能超,易大义.数值分析(第7、8章)[M].武汉:华中理工大学出版社,1987.[4]李丽,王振领.MATLAB工程计算及应用[M].北京:人民邮电出版社,2001.169-172.
本文标题:列主元三角分解法在matlab中的实现
链接地址:https://www.777doc.com/doc-5279285 .html