assignment vs. subs()
What am I missing? I can assign "t=H" but subs(t=H) errors out.
reset('t')
I4=4*identity_matrix(5)
t=3
var('t')
t2 = t^2 #random formula example
t=I4
display(t2,t^2)
a1=t2.subs(t=I4)
What am I missing? I can assign "t=H" but subs(t=H) errors out.
reset('t')
I4=4*identity_matrix(5)
t=3
var('t')
t2 = t^2 #random formula example
t=I4
display(t2,t^2)
a1=t2.subs(t=I4)
There is no implementation for substituting a matrix into a symbolic expression, because the operation is not well-defined in general. (For example, what should happen when you substitute a matrix into exp(-1/t)
?)
Of course it is well-defined for polynomials. This substitution is implemented, but only for polynomials as members of a polynomial ring (rather than symbolic expressions), so you have to do a conversion:
sage: t2.polynomial(QQ).subs(t=I4)
[16 0 0 0 0]
[ 0 16 0 0 0]
[ 0 0 16 0 0]
[ 0 0 0 16 0]
[ 0 0 0 0 16]
It is easier (in life in general) to avoid symbolic expressions altogether, and to define t
as a generator of a polynomial ring (instead of a symbolic variable), so that substitutions into polynomials in t
work immediately:
sage: t = polygen(QQ, name='t')
sage: t^2
t^2
sage: (t^2).subs(t=I4)
[16 0 0 0 0]
[ 0 16 0 0 0]
[ 0 0 16 0 0]
[ 0 0 0 16 0]
[ 0 0 0 0 16]
Okay, but I am doing things that I don't know will fit in QQ. For instance:
gp_tmp=logM(identity_matrix(dimM)-H)
gp_tmp.jordan_form(transformation=True)
Where H is lower triangular singular; (i.e.) the creation matrix. Substituting H for t in a variety of formulas; in particular "Scheffer sequence" generating functions.
Please start posting anonymously - your entry will be published after you log in or create a new account.
Asked: 2020-11-11 16:49:34 +0100
Seen: 388 times
Last updated: Nov 11 '20
Substitution using Dictionary with Matrix as Value
Evaluating a symbolic expression for a Graph
subs() function gives KeyError when keyword is a list member
How can I get back an expression for free variables in solve function.
Sage subs() function include product condition
Direct substitution vs "subs" method
subs: why it accepts one form but not the other?
The assignment
t=I4
overwrites the variablet
so that it no longer refers to a symbolic variable but rather to the concrete matrixI4
, hencet^2
does give the squared matrix (and no symbolic variables are used in this computation).