Hello,

I am making a Django App that is using Sympy.

Basically users need to be able to do calculations. I don't know how to 
give them access to shell type commands and it doesn't seem safe to do so.

So I've made a sort of markup language that I parse.

INTEGRATE( x ^ 2 + 2, x ) for example will be parsed. An Expression Tree is 
made where the node is basically just filled with the Sympy results.

I do NOT currently make an Expression Tree for what is inside a function 
such as INTEGRATE.

As I build out more and more Algebra, PreCalc, Calc 1 2 3, etc, type 
questions, I start finding edge cases.


   - This needs to be intuitive to use, or I don't think people will use it
   - There are many interesting curveballs that can be thrown, and I 
   somehow need to handle them
   - Maybe my whole approach is wrong to begin with


Currently the system can easily handle many things, including Double 
Definite Integrals as long as the bounds are like infinity, 0, 5, 2PI.

But once I have a bound such as SQRT(x + 2) things go bonkers. Sin Cos etc 
seem solid though.

Another problem is the system can properly solve things like Integrals that 
take and send e / EXP etc.

However when checking the student answer, it will mark the answer as 
incorrect when it is correct.

Finally, another I ran in to last night, is trying to get students to 
change LN(7/5) to LN(7) - LN(5). I don't yet have a good way to see if 
their answer is equal to the correct answer.

Then even things like "Change to a+bi form: (2+3i)(7-2i)", well in this 
case the student can literally copy the question mathy text, paste it in as 
the answer, and get it correct!

Background out of the way - Direct Questions - Please explain like I'm 5, 
I'm ME/AE not CS

1) What considerations do I need to make with Sympify and Eval?

    sympy.integrate( sympify( {user_input_string} ), {variable} )

The incoming string is manipulated to clean user mathy input. For example 
"the text" would be turned into "the*text". I know Eval in general is a 
security issue.

2) Good/safe way to create instances of Django models incorporating a sort 
of Sympy Shell in browser? I doubt it but worth asking just in case.

3) Good intuitive way to handle my SQRT problem? I've read real=True 
positive=True type arguments can help.

I don't know of a good way to get a user to straight up make a 
sympy.sqrt(), put in all needed arguments, etc, in a intuitive way.

4) Know what might be the issue with answers never coming out as correct 
when they involve things like (E - 1) * exp(-1) etc?

Thanks for any help!

Keith

-- 
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/be0da322-a3be-4d53-895b-f9a0fdbe02b4%40googlegroups.com.

Reply via email to