MATLAB函数及应用
上QQ阅读APP看书,第一时间看更新

31.lu函数

使用高斯消去法的变体计算LU分解。计算精确解取决于原始矩阵cond(A)的条件数的值。如果矩阵具有较大的条件数(接近奇异矩阵),则计算的分解可能不准确。

LU分解是使用inv得到逆矩阵和使用det得到行列式的关键步骤。同时,它还是使用运算符“\”和“/”求线性方程解或矩阵除法的基础。这意味着lu的这些数值限制也会存在于依赖它的这些函数中。在MATLAB中,利用lu函数实现LU分解。函数的语法格式为:

[L,U]=lu(A):将满矩阵或稀疏矩阵A分解为一个上三角矩阵U和一个经过置换的下三角矩阵L,使得A=L∗U。

[L,U,P]=lu(A):还返回一个置换矩阵P,并满足A=P'∗L∗U。在此语法中,L是单位下三角矩阵,U是上三角矩阵。

[L,U,P]=lu(A,outputForm):以outputForm指定的格式返回P。将outputForm指定为'vector'会将P返回为一个置换向量,并满足A(P,:)=L∗U。

[L,U,P,Q]=lu(S):将稀疏矩阵S分解为一个单位下三角矩阵L、一个上三角矩阵U、一个行置换矩阵P以及一个列置换矩阵Q,并满足P∗S∗Q=L∗U。

[L,U,P,Q,D]=lu(S):还返回一个对角缩放矩阵D,并满足P∗(D\S)∗Q=L∗U。行缩放通常会使分解更为稀疏和稳定。

[____]=lu(S,thresh):可结合上述任意输出参数组合指定lu使用的主元消去策略的阈值。根据指定的输出参数的数量,对thresh输入的要求及其默认值会有所不同:

· 当输出为3个或少于3个时,thresh必须是标量,默认值为1.0。

· 当输出为4个或多于4个时,thresh可以是标量或二元素向量。默认值为[0.1 0.001]。如果将thresh指定为标量,则仅替换向量中的第一个值。

[____]=lu(____,outputForm):以outputForm指定的格式返回P和Q。将outputForm指定为'vector'以将P和Q返回为置换向量。

【例1-32】用LU分解对线性方程组求解。

此外,也可以用lu函数对稀疏矩阵进行LU分解。

【例1-33】将在使用和不使用列置换的情况下计算稀疏矩阵的LU分解的结果进行比较。

运行程序,效果如图1-13及图1-14所示。

图1-13 稀疏矩阵的L、U因子

图1-14 稀疏矩阵分解后的L、U因子