尽可能利用相应模块输出系数矩阵的三角分解式。
二、问题分析直接法就是经过有限步算术运算,可求得线性方程组精确解得方法(若计算过程中没有
舍入误差)。但是实际运算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解。我们经常采用的一些方法,如Gauss顺序消去法与Gauss列主元消去法、平方根法与改进平方根法、追赶法等等。
三、实验程序及注释
列主元Gauss消去法:fu
ctio
xdeti
dexGaussAb求线性方程的列主元Gauss消去法A为方程组的系数矩阵b为方程组的右端项x为方程组的解det为系数矩阵A的行列式的值i
dex为指标变量,i
dex0表示计算失败,i
dex1表示计算成功det为系数矩阵A的行列式的值
msizeA
ble
gthb当方程组行与列的维数不相等时,停止计算,并输出错误的信息if
m
errorA的行与列必须相等!retur
fe
d当方程组与右端项的维数不匹配时,停止计算,输出错误信息ifm
b
errorthecolum
sofAmustbeequalthele
gthofbretur
e
d开始计算,先赋初值i
dex1det1xzeros
1fork1
1选主元a_max0forik
ifabsAika_maxa_maxabsAikri
e
de
difa_max1e10
i
dex0retur
e
d交换两行ifrk
forjk
zAkjAkjArjArjz
e
dzbkbkbrbrzdetdete
d消元过程forik1
mAikAkkforjk1
AijAijmAkje
dbibimbke
ddetdetAkke
ddetdetA
回代过程ifabsA
1e10i
dex0retur
e
dfork
11forjk1
bkbkAkjxj
fe
dxkbkAkke
d改进平方根法:fu
ctio
LDi
dexLDL_DecomA求正定对称矩阵A的改进平方根分解,也称LDLT分解A为要分解的矩阵L为下三角阵D为对角阵i
dex为指标变量,i
dex0表示计算失败,i
dex1表示计算成功
le
gthALeye
Dzeros
dzeros1
Tzeros
i
dex1fork1
dkAkkforj1k1
dkdkLkjTkje
difabsdk1e10
i
dex0retur
e
dforik1
TikAikforj1k1
TikTikTijLkje
dLikTikdke
de
dDdiagd追赶法:fu
ctio
xfollowupAb采用追赶法求解系数矩阵:A常数向量:b线性方程组的解:x
ra
kAfori1
ifAii0disperror对角元素为0retur
e
de
d
fdo
es
1ao
es
11co
es
1fori1
1
ai1Ai1ici1Aii1di1Aiie
dd
1A
fori2
di1di1ai11di11ci11bi1bi1ai11di11bi11e
dx
1b
1d
1fori
111xi1bi1ci1xi11di1e
dr