如何将变量定义为sage中的矩阵?

时间:2016-05-18 14:55:52

标签: matrix functional-programming sage

我想定义一个处理矩阵的函数,例如..

如果我有一个矩阵的特征多项式与我,我想检查凯利汉密尔顿定理..什么可以做得更好?

var('x')
f(x)=2x^2+x+3 # this the characteristic polynomial of $A$ (say)
print f(A)# this is what I want as an answer..

在上面,如果我想用矩阵替换我的x,我必须做什么?

因此,最终目标是找到一个可以取矩阵的多项式 提前谢谢......

1 个答案:

答案 0 :(得分:1)

令人惊讶的是,尽管已经提到six years ago,但显然这并没有经常出现,所以我们还没有解决它。

sage: M = matrix([[1,2],[3,4]])
sage: g(x) = x^2-5*x-2
sage: g(M)
TypeError: no canonical coercion from Full MatrixSpace of 2 by 2 dense matrices over Integer Ring to Callable function ring with argument x

(至少做一些关于此事的是Trac 15487。)

但是,请尝试using this trick。问题仅在于符号表达式,而不是多项式。

sage: M = matrix([[1,2],[3,4]])
sage: f = M.charpoly()
sage: f.subs(x=M)
[0 0] 
[0 0] 

编辑:一般来说,尝试一下like this

M = matrix([[1,2],[3,4]])
R.<t> = PolynomialRing(SR)
f = t^2+t+1
f(M)