我正在使用 Symbolics.jl 包并尝试反转矩阵。但是,输出给出“true”而不是 1。代码如下:
using Symbolics
@variables x
mat=[x 0 0
0 x 0
0 0 x]
Run Code Online (Sandbox Code Playgroud)
我得到的结果是
inv(mat)= [true / x 0 0
0 true / x 0
0 0 true / x]
Run Code Online (Sandbox Code Playgroud)
有想过为什么会发生这种情况吗?
小智 6
首先,这并没有错,因为 inv(mat) * mat仍然会给你单位矩阵。问题在于Num( 表示 的Symbolic.jl变量的数据类型是对角矩阵 中的单位矩阵 ,true其对角线为 。这可以通过查看 来检查
Matrix{Num}(I, 3, 3)。
通过求解系统来计算逆矩阵AX = I,并true在创建稠密单位矩阵时创建 。
这是由于 的定义I,即const I = UniformScaling(true)。我的猜测(如果我错了请纠正我)是这是为了最大程度的兼容性。通常,这会被转换为整数类型的 1,但这Num是一个例外。