这个计算器能做什么
本工具用于求解含 n 个方程、n 个未知数的线性方程组,可简记为 \(\mathbf{A}\cdot\mathbf{x} = \mathbf{b}\),其中 A 是 n\(\times\)n 的系数矩阵,x 是未知数向量,b 是常数向量。计算结果会同时给出唯一解向量 x 以及矩阵 A 的行列式。该算法属于纯粹的线性代数运算,在任何地区都通用——不涉及国别或单位差异,每个输入值都只是一个实数。
使用方法
先设定 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}$$如果某个主元实际上为零,则行列式为零,矩阵奇异,方程组没有唯一解——此时工具会给出提示,而不会执行除以零的运算。
实例演算
以方程组 \(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$$结果正确。
常见问题
如果行列式为零会怎样?说明矩阵是奇异的,即方程之间相互依赖或彼此矛盾,没有唯一解,此时计算器会提示矩阵奇异。
为什么要用部分主元选取?选取绝对值最大的主元可以避免舍入误差被放大,即使对于条件较差的矩阵,也能得到精确的结果。
解可以是非整数吗?可以。解是用浮点数计算的,可能是小数;显示精度的设置决定了结果保留多少位有效数字。