# 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)
```

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)
```

2

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.

Asked: **
2020-11-11 09:49:34 -0600
**

Seen: **53 times**

Last updated: **Nov 11**

subs() function gives KeyError when keyword is a list member

Evaluating a symbolic expression for a Graph

How can I get back an expression for free variables in solve function.

Direct substitution vs "subs" method

subs: for function and its derivative

Substitution using Dictionary with Matrix as Value

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.

The assignment

`t=I4`

overwrites the variable`t`

so that it no longer refers to a symbolic variable but rather to the concrete matrix`I4`

, hence`t^2`

does give the squared matrix (and no symbolic variables are used in this computation).