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