On 09/02/2020 18:52, Barış Bulut wrote:
x,y = symbols('x,y')
y = x**3
y.subs(x,5)
125
x = 5
y.subs(x,x)
x**3
y.subs(x,10)
x**3
y.subs(x,3)
x**3
x = 3
y.subs(x,125)
x**125
y.subs(x,10)
x**10
Hi Barış,
It isn't a bug!
Unfortunately as soon as you execute x=5 you destroy the symbol in x,
replacing it by 5 .
That means that y.subs(x,10) becomes
(x**3).subs(5,3)
No replacements are possible, so this return x**3
Then you set x to 3 so that y.subs(x,125) becomes
(x**3).subs(3,125) which yields
x**125
etc.
The correct code would be
x=symbols('x')
y=x**3
y.subs(x,5)
y.subs(x,10)
etc.
Notice that y never needed to be a variable, because you never used it -
y got overwritten just as x did.
If you want to store an expression like x**3 in a python variable, I
find it useful to use a longer name that wouldn't normally be used in a
mathematical expression. If you set up a variable as a symbol, then it
is best not to assign to it later until perhaps you understand what is
going on.
Cheers,
David
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/dbb49c43-d06d-b8bc-3a5d-02ae04c89167%40dbailey.co.uk.