使用 Julia 反转符号矩阵

sts*_*sts 5 julia

我正在使用 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是一个例外。