On Wed, Apr 23, 2014 at 7:21 AM, Aaron Meurer <asmeu...@gmail.com> wrote:
> On Tue, Apr 22, 2014 at 3:28 PM, Amit Saha <amitsaha...@gmail.com> wrote:
>> Hello all,
>>
>> In my early days of exploring SymPy, I found often  that one *could*
>> use strings as arguments to various SymPy's functions, instead of
>> passing Symbol objects. A case in point is the solve() function. For
>> example:
>>
>>>>> expr = input('Enter an expression: ')
>>
>> Enter an expression: x + 3*y - 6
>>>>> expr = sympify(expr)
>>>>> solve(expr, 'y')
>> # get the solution back.
>>
>> However, I have also learned along the way (from you all) that this is
>> not be relied upon. I shouldn't really use strings here.  So, I
>> thought that (something along these lines) is the more correct
>> approach:
>
> Yes. Here are some reasons why it is bad
> https://github.com/sympy/sympy/wiki/Idioms-and-Antipatterns#strings-as-input.
> Basically, using strings to do symbolic math is like going back to the
> stone age. You can't do any mathematical manipulation on the string,
> at least not without making things very complicated. Whenever I see
> code that does '(' + expression1 + ')' + '+' + '(' + expression2 + ')
> it makes me want to scream.

Thanks, Aaron.

I will take a look at that link. I am sure you have referred to it
earlier as well, but I will try to take a deeper look.

>
>>
>> # For example:
>> for s in expr.atoms(Symbol):
>> if s.name == 'y':
>>      solutions = solve(expr, s)
>
> Why do you need to do this? Just solve(expr, Symbol('y')).
>
> Or better yet, if you know the variable name ahead of time, just do y
> = Symbol('y') once and be done with it (even if you don't know the
> name, you can do that; the name of the Python variable does not have
> to match the name of the Symbol that it points to).

Looks like i had a confusion here, i thought the *same* symbol object
as in the sympified expression had to passed to solve(). That is,
since Symbol('y') creates a different object, it would not work. But
this works. This is certainly simpler than doing all the above. Is
this behavior always true or there are any gotchas?

Best,
Amit.


-- 
http://echorand.me

-- 
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 sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CANODV3n09ys0ZGnqnL0-devuOyNTvw1HJVLeYHRst%3DPJFyF5wg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to