免费LU分解计算器

[
]

结果

选择矩阵大小,输入数值,然后点击计算。

介绍

矩阵分解是线性代数的基石,它使得大规模方程组的复杂运算得以简化。使用最广泛的分解之一是LU分解,它将给定的方阵AA表示为下三角矩阵LL和上三角矩阵UU的乘积。这个免费的在线LU分解计算器——也称为LU因子分解计算器或矩阵分解计算器——能够快速执行分解,处理标准情形和行置换情形。对于需要解线性方程组、计算行列式或求逆矩阵的学生和专业人士来说,它是一个不可或缺的工具。

什么是LU分解?

LU分解将一个方阵AA写为

A=LU,A = L U,

其中

  • LL是一个下三角矩阵(主对角线以上的元素都为零),且
  • UU是一个上三角矩阵(主对角线以下的元素都为零)。

三角矩阵特别友好,因为它们的行列式就是对角线上元素的乘积,且解三角方程组只需要前代或回代。将矩阵分解为两个三角块大大降低了许多线性代数任务的计算成本。该方法由波兰数学家Tadeusz Banachiewicz于1938年首次提出,至今仍是数值计算的核心算法。

每个矩阵都有LU分解吗?

并非所有方阵都允许标准LU分解。一个必要条件是所有顺序主子式(左上角子矩阵的行列式)都不为零。如果某个主子式为零,分解就可能失败。

考虑2×22 \times 2的例子

A=(0111).A = \begin{pmatrix} 0 & 1 \\ 1 & 1 \end{pmatrix}.

如果我们尝试把AA写为A=LUA = L U,其中LL是下三角矩阵、UU是上三角矩阵,方程会产生矛盾:(1,1)(1,1)元素要求ℓ11=0\ell_{11}=0或u11=0u_{11}=0,但其余元素要求它们都不为零。因此,标准LU分解对于这类矩阵不成立。

不过,这一障碍可以通过行置换来克服。通过重新排列行(即交换第一行和第二行),矩阵变为

(1101),\begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix},

这已经是上三角矩阵,其LU分解显而易见。一般情况下,对于任意方阵AA,存在一个置换矩阵PP,使得乘积PAPA有LU分解。这就是所谓的PA LU分解或带部分主元法的LU分解:

PA=LU,P A = L U,

其中PP是置换矩阵(通过对单位矩阵进行相同的行交换得到),LL是下三角矩阵,UU是上三角矩阵。LU分解计算器会自动检测何时需要置换,并输出相应的因子,因此你总能得到有效的分解。

如何手动计算LU分解

最常用的算法是杜利特尔分解,它将LL的对角线元素设为1(单位下三角)。这一约定消除了分解的歧义,对于给定的置换产生唯一的对(L,U)(L,U)。

通用公式(杜利特尔法)

设A=[aij]A = [a_{ij}]是一个n×nn \times n矩阵。L=[ℓij]L = [\ell_{ij}](其中ℓii=1\ell_{ii}=1)和U=[uij]U = [u_{ij}]的元素系统地从左上角向下确定。

  1. UU的第一行和LL的第一列:
    对于j=1,…,nj = 1, \dots, n:
    u1j=a1j,ℓj1=aj1u11(j>1).u_{1j} = a_{1j}, \qquad \ell_{j1} = \frac{a_{j1}}{u_{11}} \quad (j > 1).

  2. 剩余的行和列: 对于每个k=2,…,nk = 2, \dots, n:

    • 对于j=k,…,nj = k, \dots, n:
      ukj=akj−∑s=1k−1ℓksusj.u_{kj} = a_{kj} - \sum_{s=1}^{k-1} \ell_{ks} u_{sj}.
    • 对于i=k+1,…,ni = k+1, \dots, n:
      ℓik=1ukk(aik−∑s=1k−1ℓisusk).\ell_{ik} = \frac{1}{u_{kk}} \left( a_{ik} - \sum_{s=1}^{k-1} \ell_{is} u_{sk} \right).

该过程假设所有主元元素ukku_{kk}非零;如果遇到零主元,就需要进行行置换。

2×2例子

对于2×22 \times 2矩阵

A=(a11a12a21a22),A = \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix},

杜利特尔法给出

L=(10ℓ211),U=(u11u120u22),L = \begin{pmatrix} 1 & 0 \\ \ell_{21} & 1 \end{pmatrix}, \qquad U = \begin{pmatrix} u_{11} & u_{12} \\ 0 & u_{22} \end{pmatrix},

其中

u11=a11,u12=a12,ℓ21=a21u11,u22=a22−ℓ21u12.u_{11}=a_{11},\quad u_{12}=a_{12},\quad \ell_{21}= \frac{a_{21}}{u_{11}},\quad u_{22}=a_{22} - \ell_{21} u_{12}.

这个小例子说明了模式:一旦知道了UU的第一行和LL的第一列,其余元素就可以通过减去已计算项的乘积得到。

3×3示例

对于3×33 \times 3矩阵,公式生成

u11=a11,u12=a12,u13=a13,ℓ21=a21u11,ℓ31=a31u11,u22=a22−ℓ21u12,u23=a23−ℓ21u13,ℓ32=1u22(a32−ℓ31u12),u33=a33−ℓ31u13−ℓ32u23.\begin{aligned} u_{11}&=a_{11}, & u_{12}&=a_{12}, & u_{13}&=a_{13},\\ \ell_{21}&=\dfrac{a_{21}}{u_{11}}, & \ell_{31}&=\dfrac{a_{31}}{u_{11}},\\ u_{22}&=a_{22}-\ell_{21}u_{12}, & u_{23}&=a_{23}-\ell_{21}u_{13},\\ \ell_{32}&=\dfrac{1}{u_{22}}\bigl(a_{32}-\ell_{31}u_{12}\bigr),\\ u_{33}&=a_{33}-\ell_{31}u_{13}-\ell_{32}u_{23}. \end{aligned}

依次求解这些方程即可得到LL和UU。

使用LU分解计算器

在线LU分解计算器让你免于手动执行这些算术步骤。使用方法如下:

  1. 从下拉菜单中选择矩阵维度(例如2×22 \times 2、3×33 \times 3,最大10×1010 \times 10)。
  2. 将矩阵的每个元素输入到相应的输入字段中。
  3. 点击计算按钮。
    • 如果标准LU分解存在,工具将显示LL和UU。
    • 如果矩阵需要行置换,计算器将显示置换矩阵PP以及PA=LUPA = LU的因子。你也可以在重新计算前手动交换行。

计算器在内部使用杜利特尔法,并在遇到零主元时采用部分主元法,以确保数值稳定性。

LU分解的主要应用

计算行列式

因为三角矩阵的行列式等于其对角线元素的乘积,LU分解使得行列式的计算变得简单。如果A=LUA = LU(采用杜利特尔约定),那么

det⁡(L)=1,det⁡(A)=det⁡(L)det⁡(U)=∏i=1nuii.\det(L) = 1, \qquad \det(A) = \det(L)\det(U) = \prod_{i=1}^{n} u_{ii}.

当使用部分主元法时(PA=LUPA = LU),我们有

det⁡(P)det⁡(A)=det⁡(L)det⁡(U)⟹det⁡(A)=det⁡(P)det⁡(L)det⁡(U),\det(P)\det(A) = \det(L)\det(U) \quad\Longrightarrow\quad \det(A) = \det(P)\det(L)\det(U),

其中det⁡(P)=±1\det(P) = \pm 1(取决于行交换的奇偶性),且单位下三角矩阵LL的det⁡(L)=1\det(L)=1。

求解线性方程组

给定系统Ax=bA\mathbf{x} = \mathbf{b},将AA分解为A=LUA = LU(或PA=LUPA = LU)。然后求解两个三角系统:

  1. 前代:Ly=bL\mathbf{y} = \mathbf{b}(如果应用了置换,则为Ly=PbL\mathbf{y} = P\mathbf{b})。
  2. 回代:Ux=yU\mathbf{x} = \mathbf{y}。

由于LL和UU是三角矩阵,每次求解只需要O(n2)O(n^2)次运算,这使得该方法对于多次求解不同右端项的情形比高斯消元更快。

计算矩阵的逆

如果A=LUA = LU,则逆可以表示为

A−1=U−1L−1.A^{-1} = U^{-1} L^{-1}.

求逆三角矩阵是直接的(再次利用零元素),因此LU分解在需要时提供了一条求逆的高效途径。

结论

LU分解是线性代数中一个多功能的工具,能够快速计算行列式、解线性方程组和矩阵求逆。无论你是正在学习下三角上三角矩阵分解,还是实际应用杜利特尔分解,这个免费的LU分解计算器都能即时提供准确结果,让你免于繁琐的手工运算。

常见问题

1. LU分解和PA = LU分解有什么区别?

标准LU分解(A = LU)可能对于含有零主元的矩阵失败。PA = LU(部分主元法)引入一个置换矩阵P,对A的行重新排序,使得分解始终存在。计算器在需要时自动使用P,所以你总是能得到有效的分解。

2. 如何使用LU分解计算矩阵的行列式?

如果你有A = LU(杜利特尔法),那么det(A) = det(L) * det(U) = 1 *(U的对角线元素的乘积)。如果涉及行交换(P),则将乘积乘以det(P) = ±1,取决于行置换的次数。

3. LU分解可以用于非方阵吗?

不可以,标准LU分解要求A是方阵。对于矩形矩阵,其他分解如QR或SVD更合适。

4. LU分解中的杜利特尔法是什么?

杜利特尔法将下三角矩阵L的对角线元素设为1(单位下三角)。然后按列系统地求解L和U的其余元素。这是计算器使用的默认方法。

使用方法

  1. 选择矩阵大小(2x2、3x3或4x4)。
  2. 在输入网格中输入矩阵条目。
  3. 点击计算,即可看到L和U三角矩阵以及(如已应用选主元)置换矩阵。