MATLAB中null函数用法

目录

语法

说明

示例

矩阵的零空间

指定零空间的容差

欠定方程组的通解


        null函数的功能是计算矩阵的零空间(null space)或核(kernel)。

语法

Z = null(A)
Z = null(A,tol)
Z = null(A,"rational")

说明

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

        Z = null(A,tol) 也指定容差。小于 tol 的 A 的奇异值被视为零,这会影响 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 的零空间的标准正交基。确认(在舍入误差内)。

x1 = null(A)
x1 = 3×2

    0.8165   -0.0000
   -0.4082   -0.7071
   -0.4082    0.7071

norm(A*x1)
ans = 4.2999e-16

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

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

    -1    -1
     1     0
     0     1

norm(A*x2)
ans = 0

        x1 和 x2 相似,但归一化不同。尽管 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 希尔伯特矩阵。此矩阵为满秩矩阵,但有一些小的奇异值。

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 形式,其中:

  • N 是 A 的零空间。

  • 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 = 2.8908e-14

算法

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

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

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值