Sage新手;在向量和矩阵中引入符号(变量)
我想要在进行线性代数运算时使用符号,而不是用数字来计算。比如说,有一个这样的矩阵:
A = matrix(QQ,[
[ 2, 1, 2, -6],
[-1, 2, 1, 7],
[ 3, -1, -3, -1],
[ 1, 5, 6, 0],
[ 2, 2, 1, 1]
])
我想用一个包含符号变量的向量来进行乘法运算,像这样:
t = 'real'
var('x1')
assume(x1, t)
var('x2')
assume(x2, t)
var('x3')
assume(x3, t)
var('x4')
assume(x4, t)
xx = vector(QQ, [x1, x2, x3, x4])
A * xx.transpose()
但是,构建这个xx
向量时失败了,出现了这个错误信息:
TypeError: Cannot evaluate symbolic expression to a numeric value.
这行不通,那我该如何在Sage的线性代数框架中使用符号呢?
1 个回答
2
一种解决方案是使用多项式环中的项。
sage: R.<x1,x2,x3,x4> = PolynomialRing(QQ)
sage: R
Multivariate Polynomial Ring in x1, x2, x3, x4 over Rational Field
然后用坐标在 R
中定义你的向量。
sage: xx = vector(R,[x1,x2,x3,x4])
sage: A * xx
结果会是另一个在 R
中的向量。
另一种解决方案是使用符号环 SR
,正如 @kcrisman 在 ask-sage 上提到的。