fstab
fstab

Reputation: 5029

Sage newbie; introducing symbols (variables) inside vectors and matrices

I would like to have linear algebra operations to be evaluated with symbols instead of numerically. For example, having the following matrix:

A = matrix(QQ,[
    [ 2,  1,  2, -6],
    [-1,  2,  1,  7],
    [ 3, -1, -3, -1],
    [ 1,  5,  6,  0],
    [ 2,  2,  1,  1]
    ])

I would like to multiply for a vector with symbolic variables as follows:

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

Unfortunately building the xx vector is unsuccessful, producing this error message:

TypeError: Cannot evaluate symbolic expression to a numeric value.

This does not work, so how can I use symbols in Sage's linear algebra framework?

Upvotes: 1

Views: 1293

Answers (1)

Samuel Lelièvre
Samuel Lelièvre

Reputation: 3453

One solution would be to work with entries in a polynomial ring.

sage: R.<x1,x2,x3,x4> = PolynomialRing(QQ)
sage: R
Multivariate Polynomial Ring in x1, x2, x3, x4 over Rational Field

Then define your vector with coordinates in R.

sage: xx = vector(R,[x1,x2,x3,x4])
sage: A * xx

The result is another vector with entries in R.

Another solution is to work in the symbolic ring SR, as pointed out by @kcrisman on ask-sage.

Upvotes: 2

Related Questions