# sym_rank
求符号矩阵的秩
函数库: TySymbolicMath
# 语法
# 说明
# 示例
计算矩阵的秩
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函数不能简化符号计算
考虑下面这个矩阵:
将
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