You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SageMath求解x=Ax时符号向量等式返回False 如何获取对应方程向量

问题原因

SageMath 中对向量使用==运算符时,默认执行布尔全等判定:会直接校验两个向量的每个分量是否恒等,不会生成逐元素相等的符号方程组。你的场景中x和A*x显然不是对任意x_1,x_2,x_3都相等,因此直接返回布尔值False。

解决方法

你可以通过以下两种方式得到逐坐标相等的符号方程组:

  1. 手动遍历分量生成等式
A = matrix(QQ, [[0, 4, 4], 
                [1, 2, 2],
                [1, 2, 0]])  
x = vector([var("x_1"), var("x_2"), var("x_3")])
# 逐分量生成相等关系
eqs = [x[i] == (A*x)[i] for i in range(A.nrows())]
print(eqs)

输出结果:

[x_1 == 4*x_2 + 4*x_3, x_2 == x_1 + 2*x_2 + 2*x_3, x_3 == x_1 + 2*x_2]
  1. 调用内置equations()方法
    先计算A*x - x得到差向量,再调用equations()方法,会自动将每个分量设为等于0,等价于你需要的x == A*x方程组:
eqs = (A*x - x).equations()

得到的结果和手动生成的完全一致。

如果你后续需要求解该方程组,直接将等式列表传入solve方法即可:

solve(eqs, [x_1, x_2, x_3])

此外这个方程组本质是求矩阵A特征值为1的特征向量,你也可以直接用A.eigenvectors()方法直接获取对应特征空间的解。

内容的提问来源于stack exchange,提问作者tbrugere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:36:03