Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

null

矩阵的零空间

说明

示例

Z = null(A) 返回 A 的零空间的标准正交基。

示例

Z = null(A,tol) 也指定容差。小于 tolA 的奇异值被视为零,这会影响 Z 中的列数。

示例

Z = null(A,"rational") 返回 A 的零空间的有理基,它通常不是正交基。如果 A 是具有小整数元素的小矩阵,则 Z 的元素是小整数的比率。此方法在数值上不如 null(A) 准确。

示例

全部折叠

使用 null 函数计算矩阵的零空间的标准正交基和有理基向量。矩阵的零空间包含满足 Ax=0 的向量 x

创建一个由 1 组成的 3×3 矩阵。此矩阵秩亏,其中两个奇异值等于零。

A = ones(3)
A = 3×3

     1     1     1
     1     1     1
     1     1     1

计算 A 的零空间的标准正交基。确认 Ax1=0(在舍入误差内)。

x1 = null(A)
x1 = 3×2

   -0.5774   -0.5774
   -0.2113    0.7887
    0.7887   -0.2113

norm(A*x1)
ans = 9.6148e-17

现在计算零空间的有理基。确认 Ax2=0

x2 = null(A,"rational")
x2 = 3×2

    -1    -1
     1     0
     0     1

norm(A*x2)
ans = 0

x1x2 相似,但归一化不同。尽管 x1'*x1 是单位矩阵,但 x2'*x2 不是。

x1'*x1
ans = 2×2

    1.0000   -0.0000
   -0.0000    1.0000

x2'*x2
ans = 2×2

     2     1
     1     2

正交性通常对数值计算的准确度至关重要。因此,"rational" 选项应仅用于处理全部由整数组成的小型矩阵,此时更适和使用容易阅读的数字组成较为合适。

当矩阵具有较小的奇异值时,通过指定容差可更改将哪些奇异值视为零。

创建一个 7×7 Hilbert 矩阵。此矩阵为满秩矩阵,但有一些小的奇异值。

H = hilb(7)
H = 7×7

    1.0000    0.5000    0.3333    0.2500    0.2000    0.1667    0.1429
    0.5000    0.3333    0.2500    0.2000    0.1667    0.1429    0.1250
    0.3333    0.2500    0.2000    0.1667    0.1429    0.1250    0.1111
    0.2500    0.2000    0.1667    0.1429    0.1250    0.1111    0.1000
    0.2000    0.1667    0.1429    0.1250    0.1111    0.1000    0.0909
    0.1667    0.1429    0.1250    0.1111    0.1000    0.0909    0.0833
    0.1429    0.1250    0.1111    0.1000    0.0909    0.0833    0.0769

s = svd(H)
s = 7×1

    1.6609
    0.2719
    0.0213
    0.0010
    0.0000
    0.0000
    0.0000

计算 H 的零空间。由于 H 为满秩矩阵,Z 为空。

Z = null(H)
Z =

  7x0 empty double matrix

现在,再次计算零空间,但指定容差为 1e-4。此容差使 null 将三个奇异值视为零,因此零空间不再为空。

Ztol = null(H,1e-4)
Ztol = 7×3

    0.0160   -0.0025    0.0002
   -0.2279    0.0618   -0.0098
    0.6288   -0.3487    0.0952
   -0.2004    0.6447   -0.3713
   -0.4970   -0.1744    0.6825
   -0.1849   -0.5436   -0.5910
    0.4808    0.3647    0.1944

验证 H*Ztol 与指定的容差相比具有可忽略元素。

norm(H*Ztol)
ans = 2.9386e-05

求某欠定方程组的一个特定解,然后获得所有解的通用形式。

欠定线性方程组 Ax=b 包含的未知数比方程多。欠定方程组可以有无限多个解或没有解。当方程组有无限多个解时,它们都位于一条直线上。该线上的各点均通过零空间向量的线性组合获得。

创建一个 2×4 系数矩阵并使用反斜杠求解方程 Ax0=b,其中 b 是由 1 组成的向量。用反斜杠计算问题的最小二乘解。

A = [1 8 15 67; 7 14 16 3]
A = 2×4

     1     8    15    67
     7    14    16     3

b = ones(2,1);
x0 = A\b
x0 = 4×1

         0
         0
    0.0623
    0.0010

欠定方程组的完全通解具有 x=x0+Ny 形式,其中:

  • NA 的零空间。

  • y 是合适长度的任何向量。

  • x0 是用反斜杠计算的解。

计算 A 的零空间,然后使用结果来构造方程组的另一个解。检查新解是否在舍入误差内满足 Ax=b

N = null(A)
N = 4×2

   -0.2977   -0.8970
   -0.6397    0.4397
    0.7044    0.0157
   -0.0769   -0.0426

x = x0 + N*[1; -2]
x = 4×1

    1.4963
   -1.5192
    0.7354
    0.0093

norm(A*x-b)
ans = 1.8510e-14

输入参数

全部折叠

输入矩阵。

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

奇异值容差,指定为实数标量。小于容差的 A 的奇异值被视为零,这会影响 null 返回的零空间向量的数目。默认容差是 max(size(A)) * eps(norm(A))

输出参数

全部折叠

零空间基向量,以矩阵的列形式返回。Z 满足属性:

  • A*Z 含有可忽略元素。

  • size(Z,2)A 的空值的估计值。

如果 rank(A)(或 rank(A,tol))等于 size(A,2),则 Z 为空。

算法

null(A) 计算矩阵 A 的奇异值分解,使得 A = U*S*V'V 中对应于在容差范围内为零的奇异值的列构成零空间的一组标准正交基向量。

零空间 null(A,"rational") 的有理基是从通过 rref 计算得到的 A 的简化行阶梯形矩阵形式获得的。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | |