# rcond


条件数倒数

函数库: TyMath

# 语法

C = rcond(A)

# 说明

C = rcond(A) 返回 A 的 1-范数 条件数倒数估计值。如果 A 的条件设置良好,rcond(A) 接近 1.0。如果 A 是病态的,rcond(A) 接近 0.0。示例

# 示例

条件设置错误的矩阵的敏感度

检查条件设置错误的矩阵的敏感度。

条件设置错误的典型对称正定矩阵是 Hilbert 矩阵。Hilbert 矩阵的元素数是

创建一个 10x10 Hilbert 矩阵。

using TyMath
A = hilb(10)

求解该矩阵的条件数倒数。

C = rcond(A)
C = 2.828508837674532e-14

条件数倒数很小,因此 A 的条件设置错误。

A 的条件对类似线性方程组的解有影响。要了解这一点,请将 与扰动方程组 的解进行比较。

创建一个由 1 组成的向量并求解

b = ones(10,1)
x = A\b

现在将 b 改变 0.01 并求解扰动方程组。

b1 = b .+ 0.01
x1 = A\b1

比较这两个解 x 和 x1 。

norm(x-x1)
ans = 112505.69039700813

因为 A 的条件设置错误,所以 b 的细微变化会使 x = A\b 的解出现较大变化(1e5 的量级)。该方程组对扰动敏感。

求解单位矩阵的条件

了解为何条件数倒数是一个比行列式更精确的奇异值度量。

创建一个 5x5 单位矩阵的倍数。

using TyMath
using TyBase
A = eye(5) .* 0.01

该矩阵是满秩的且具有五个相等奇异值,可以通过计算 svd(A) 来确认这一点。

计算 A 的行列式。

det(A)
ans = 1.0000000000000002e-10

尽管该矩阵的行列式接近零,但实际上 A 的条件设置非常良好且接近奇异矩阵。

计算 A 的条件数倒数。

rcond(A)
ans = 1.0

该矩阵的条件数倒数为 1,因此条件设置非常良好。使用 rcond(A) 或 cond(A) 而非 det(A) 确认矩阵的奇异性。

# 输入参数

A - 输入矩阵
数值方阵

输入矩阵,指定为数值方阵。

数据类型: Integer | AbstractFloat

# 输出参数

C - 条件数倒数
标量

条件数倒数,以标量形式返回。C 与 A 具有相同的数据类型。

条件数倒数是一个标度不变的度量,用于衡量给定矩阵与奇异矩阵集的接近程度。

  • 如果 C 接近 0.0,则该矩阵接近奇异且条件设置错误;

  • 如果 C 接近 1.0,则该矩阵的条件设置良好。

# 提示

与条件数 cond 相比,rcond 作为估计矩阵条件的方法更有效,但不太稳定。

# 另请参阅

cond | norm | rank | svd