Ask Your Question
2

Converting strings into expressions

asked 2018-02-15 20:02:49 +0100

trenzafeeds gravatar image

updated 2018-02-21 14:25:09 +0100

Hey everyone, This is probably pretty straightforward, but I couldn't find any straightforward answers with google searching. I'm looking for a function that works in the same way as python's str() and float() functions, but turns variables (especially strings) into sage's different classes of variables, like expressions. For example, if I have string variable: expression = "x1^2*x2*x3*4" and x1, x2, and x3 are already declared as variables, how can I turn that variable into a sage expression so it will work with things like the coefficient() function? Thanks!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2018-02-15 23:29:36 +0100

slelievre gravatar image

updated 2018-02-15 23:32:42 +0100

To convert a string expression to any parent X in Sage, you could do X(expression).

Thus, to convert the expression to Sage's symbolic ring, use SR(expression).

Here is how it would work with your example.

sage: x1, x2, x3 = SR.var('x1 x2 x3')
sage: expression = "x1^2*x2*x3*4" 
sage: ex = SR(expression)
sage: ex
4*x1^2*x2*x3

If you prefer to work with a polynomial ring:

sage: P.<x1, x2, x3> = QQ[]
sage: f = P(expression)
sage: f
4*x1^2*x2*x3
edit flag offensive delete link more

Comments

Thank you! This worked perfect for me

trenzafeeds gravatar imagetrenzafeeds ( 2018-02-20 21:40:46 +0100 )edit

is it possible to convert a string of inequality to a sage expression?

nimaous gravatar imagenimaous ( 2018-11-02 16:19:54 +0100 )edit

@nimaous: good question. I suggest asking a new question for that.

slelievre gravatar imageslelievre ( 2018-11-03 00:55:16 +0100 )edit

Well, but this does no work for the following case. I want to define an equation from a string, by changing the value of gammaWStr='9.81' by a string that is a number.

gammaW - gammaWStr == 0

If I follow the suggested construction like

exprString = 'gammaW - ' + gammaWStr + ' == 0'
eq0 = SR(exprString)

I get the Error Message

TypeError: Malformed expression: gammaW - 9.81 == !!!  0

In other words, and referring to the first question, How about an expression like expression = "x1^2*x2*x3*4==0"?

loSuarezB gravatar imageloSuarezB ( 2018-11-20 17:18:50 +0100 )edit

Thanks for reporting. This is now tracked at Sage Trac ticket 26727: Make SR('x == 0') work.

slelievre gravatar imageslelievre ( 2018-11-20 19:03:54 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2018-02-15 20:02:49 +0100

Seen: 3,702 times

Last updated: Nov 20 '18