# sym_rank


求符号矩阵的秩

函数库: TySymbolicMath

# 语法

sym_rank(A)

# 说明

sym_rank(A) 返回符号矩阵 的秩。示例

# 示例

计算矩阵的秩
using TySymbolicMath
@variables a b c d
A = [a b; c d]
sym_rank(A)
ans = 2
符号矩阵的秩是精确的

符号计算返回矩阵的精确秩,而数值计算可能会出现舍入误差。这种精确计算对于条件不完善的矩阵(如希尔伯特矩阵)非常有用。秩为 n 的希尔伯特矩阵的秩为 n。

用数字求出秩为 15 的希尔伯特矩阵的秩。然后使用 Num 将数字矩阵转换为符号矩阵,并求得符号秩。

using TySymbolicMath
using TyMath
H = hilb(15)
out1 = rank(H)
out2 = sym_rank(Num.(H))
out1 = 12

out1 = 15

符号计算返回的秩是正确结果,为 15。由于四舍五入的误差,数字计算返回的秩不正确,为 12。

sym_rank函数不能简化符号计算

考虑下面这个矩阵:

简化为 后,该矩阵的秩为 1。然而,返回的是错误的秩 2,因为它没有考虑到矩阵元素中出现的特殊函数所满足的相同性。演示一下这个错误的结果

using TySymbolicMath
using LinearAlgebra
@variables x
A = [1-sin(x) cos(x); cos(x) 1+sin(x)]
sym_rank(A)
ans = 2

秩会返回一个不正确的结果,因为中间步骤的输出没有被简化。虽然没有万无一失的解决方法,但可以通过使用数值替换来简化符号表达式。

用一个数值代替x,找到正确的秩

A = substitute.(A, (Dict(x => 1),))
rank(value.(A))
ans = 1

然而,即使在数值替换之后,由于四舍五入的错误,秩也会返回不正确的结果。

# 输入参数

A - 输入
符号数 | 符号数向量 | 符号数矩阵 | 符号变量 | 符号向量 | 符号矩阵

输入,指定为一个符号数、向量或矩阵,或者一个符号变量、向量或矩阵。

数据类型: Num

# 另请参阅

sym_rref