列主元三角分解法在matlab中的实现摘要:介绍了Matlab语言并给出用Matlab语言实现线性方程组的列主元三角分解法,其有效性已在计算机实现中得到了验证。关键词:Matlab语言;高斯消去法;列主元三角分解法0前言Matlab是MatrixLaboratory(矩阵实验室)的缩写,它是由美国Mathwork公司于1967年推出的软件包,现已发展成为一种功能强大的计算机语言。它编程简单,使用方便,在Matlab环境下数组的操作与数的操作一样简单,进行数学运算可以像草稿纸一样随心所欲,使计算机兼备高级计算器的优点。Matlab语言具有强大的矩阵和向量的操作功能,是Fortran和C语言无法比拟的;Matlab语言的函数库可任意扩充;语句简单,内涵丰富;还具有二维和三维绘图功能且使用方便,特别适用于科学和工程计算。在科学和工程计算中,应用最广泛的是求解线性方程组的解,一般可用高斯消去法求解,如果系数矩阵不满足高斯消去法在计算机上可行的条件,那么消元过程中可能会出现零主元或小主元,消元或不可行或数值不稳定,解决办法就是对方程组进行行交换或列交换来消除零主元或小主元,这就是选主元的思想。1定义列主元三角分解:如果A为非奇异矩阵,则存在排列矩阵P,使PA=LU,其中L为单位下三角矩阵,U为上三角阵。列主元三角分角法是对直接三角分解法的一种改进,主要目的和列主元高斯消元法一样,就是避免小数作为分母项.2算法概述列主元三角分解法和普通三角分解法基本上类似,所不同的是在构造Gauss变换前,先在对应列中选择绝对值最大的元素(称为列主元),然后实施初等行交换将该元素调整到矩阵对角线上。例如第步变换叙述如下:选主元:确定使;行交换:将矩阵的第行和第行上的元素互换位置,即.实施Gauss变换:通过初行变换,将列主对角线以下的元素消为零.即3列主元三角分解在matlab中的实现例:对矩阵进行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:mifb