通过MCP连接 →

输入计算

方阵 A 为 n×n,向量 b 长度为 n。取值范围 2 到 10。
每行一组数据,数字之间用空格或逗号分隔。
长度为 n 的数列,数字之间用空格或逗号分隔。

数学公式

Show calculation steps (1)
  1. Determinant from LU Pivots

    Determinant from LU Pivots: N元线性方程组求解器(LU分解法)

    After Gaussian elimination with partial pivoting, det(A) equals the product of the U diagonal pivots, with sign flipped once per row swap.

广告

结果

解向量 x
x1 = 2, x2 = 3, x3 = -1
方程组规模 (n) 3
矩阵 A 的行列式 -1
算法 带部分主元选取的 LU 分解法

这个计算器能做什么

本工具用于求解含 n 个方程、n 个未知数的线性方程组,可简记为 \(\mathbf{A}\cdot\mathbf{x} = \mathbf{b}\),其中 A 是 n\(\times\)n 的系数矩阵,x 是未知数向量,b 是常数向量。计算结果会同时给出唯一解向量 x 以及矩阵 A 的行列式。该算法属于纯粹的线性代数运算,在任何地区都通用——不涉及国别或单位差异,每个输入值都只是一个实数。

矩阵-向量方程 A x = b,包含一个方形系数矩阵、一个未知向量和一个右端向量
n 个线性方程组成的方程组,简记为 A·x = b。

使用方法

先设定 n(方程与未知数的个数)。然后逐行输入系数矩阵 A,每行一组数字,数字之间用空格或逗号分隔;接着把常数向量 b 输入为一个长度为 n 的数列。选择显示精度后即可求解。负数、小数等各类形式的数值都可以输入。只要矩阵 A 的行数和列数都等于 n、并且 b 的长度与之匹配,就能得到解;否则工具会提示维数不匹配。

算法原理

求解器采用带部分主元选取的高斯消元法,这在数学上等价于 LU 分解 \(\mathbf{P}\mathbf{A} = \mathbf{L}\mathbf{U}\)。对每一列,算法都会挑选当前可用元素中绝对值最大的作为主元,以保证运算的数值稳定性,随后消去主元下方的各项,最后从最后一个未知数开始向上进行回代求解。求解过程可写成:

$$\begin{gathered} \mathbf{A}\,\mathbf{x} = \mathbf{b}, \qquad \mathbf{A} = \mathbf{L}\mathbf{U} \\[1.5em] \text{solve}\quad \left\{ \begin{aligned} \mathbf{L}\mathbf{y} &= \mathbf{b} \quad(\text{forward}) \\ \mathbf{U}\mathbf{x} &= \mathbf{y} \quad(\text{back substitution}) \end{aligned} \right. \end{gathered}$$

行列式则由上三角矩阵对角线元素之积给出:

$$\det(\mathbf{A}) = (-1)^{s}\prod_{k=1}^{n} u_{kk}$$

如果某个主元实际上为零,则行列式为零,矩阵奇异,方程组没有唯一解——此时工具会给出提示,而不会执行除以零的运算。

方形矩阵 A 被分解为下三角矩阵 L 和上三角矩阵 U
LU 分解将 A 分解为下三角矩阵 L 和上三角矩阵 U。

实例演算

以方程组 \(2x + y - z = 8\)、\(-3x - y + 2z = -11\)、\(-2x + y + 2z = -3\) 为例。此时 \(\mathbf{A} = [[2,1,-1],[-3,-1,2],[-2,1,2]]\),\(\mathbf{b} = [8,-11,-3]\)。经过消元可得 \(x = 2\),\(y = 3\),\(z = -1\)。代入第一个方程验证:

$$2(2) + 3 - (-1) = 4 + 3 + 1 = 8$$

结果正确。

常见问题

如果行列式为零会怎样?说明矩阵是奇异的,即方程之间相互依赖或彼此矛盾,没有唯一解,此时计算器会提示矩阵奇异。

为什么要用部分主元选取?选取绝对值最大的主元可以避免舍入误差被放大,即使对于条件较差的矩阵,也能得到精确的结果。

解可以是非整数吗?可以。解是用浮点数计算的,可能是小数;显示精度的设置决定了结果保留多少位有效数字。

最后更新: