Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

cond

逆运算的条件数

说明

示例

C = cond(A) 返回 2-范数逆运算的条件数,等于 A 的最大奇异值与最小奇异值之比。

示例

C = cond(A,p) 返回 p-范数条件数,其中 p 可以是 12Inf'fro'

示例

全部折叠

计算矩阵的条件数并检查逆运算的敏感度。

创建一个 2×2 矩阵。

A = [4.1 2.8;
     9.7 6.6];

计算 A 的 2-范数条件数。

C = cond(A)
C = 1.6230e+03

由于 A 的条件数远大于 1,因此矩阵对逆运算非常敏感。计算 A 的逆矩阵,对 A 的第二行进行小小的改动,然后再次进行逆运算。

invA = inv(A)
invA = 2×2

  -66.0000   28.0000
   97.0000  -41.0000

A2 = [4.1    2.8; 
      9.671  6.608]
A2 = 2×2

    4.1000    2.8000
    9.6710    6.6080

invA2 = inv(A2)
invA2 = 2×2

  472.0000 -200.0000
 -690.7857  292.8571

结果表明,对 A 进行的小小改动可能完全改变逆运算的结果。

计算矩阵的 1-范数条件数。

创建一个 3×3 矩阵。

A = [1 0 -2;
     3 4  6;
    -1 5  7];

计算 A 的 1-范数条件数。m×n 矩阵的 1-范数条件数的值为

κ1(A)=||A||1||A-1||1

其中 1-范数是矩阵的最大绝对列之和,由以下公式计算得出:

||A||1=max1jni=1m|aij|.

C = cond(A,1)
C = 18.0000

对于此矩阵,条件数不是太大,因此矩阵对逆运算不是特别敏感。

输入参数

全部折叠

输入矩阵。A 可以是方阵或矩形矩阵。

数据类型: single | double
复数支持:

范数类型,指定为下表中显示的值之一。对于除 2 以外的 p 值,cond 使用 norm(A,p) * norm(inv(A),p) 计算条件数。有关这些范数类型的详细信息,请参阅 norm 页面。

p 的值

范数类型

1

1-范数条件数

2

2-范数条件数

Inf

无穷范数条件数

'fro'

Frobenius 范数条件数

示例: cond(A,1) 计算 1-范数条件数。

输出参数

全部折叠

条件数,以标量形式返回。接近 1 的 C 值表示良态矩阵,大的 C 值表示病态矩阵。奇异矩阵的条件数为 Inf

详细信息

全部折叠

逆运算的条件数

矩阵和计算任务的条件数用于衡量解算过程中答案对输入数据变化和舍入误差的敏感程度。

矩阵的逆运算的条件数用于测量线性方程组的解对数据错误的敏感程度。它指示矩阵求逆结果和线性方程解的精度。例如,一个矩阵的 2-范数条件数是

κ(A)=AA1.

在这种情况下,大的条件数表示系数矩阵 A 中的小小变化会导致线性方程 Ax = bxA = b 的输出 b 发生较大变化。极端情况是 A 因过于病态而成为奇异矩阵(无限条件数),此时它没有逆矩阵,而线性方程没有唯一解。

提示

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

算法

cond 的算法分为三部分:

  • 如果 p = 2,则 cond 使用由 svd 提供的奇异值分解来计算最大奇异值和最小奇异值之比。

  • 如果 p = 1Inf'fro',则 cond 使用输入矩阵及其逆矩阵的适当范数通过 norm(A,p) * norm(inv(A),p) 计算条件数。

  • 如果输入矩阵是稀疏矩阵,cond 将忽略任何指定的 p 值并调用 condest

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

在 R2006a 之前推出