On 12/1/2010 12:11 PM, Stavros Macrakis wrote:
> ....
>
> So ... what exactly do you mean by "giving the same answer" in the
> absence of simplification?
>
>
there are a few things going on here.
1. It seems that you are assuming that students who are having some
difficulty with simple algebra or
even arithmetic would be able to type syntactically correct expressions
into a computer algebra system.
Judging from my experience, students who were trying to do calculus
problems couldn't type
syntactically correct strings, most of the time. Perhaps they are OK
typing 1/3+1/2 for
simple arithmetic, but parentheses?. Basically, the educational
experience is transformed: from students
who cannot do arithmetic, to students who cannot type arithmetic answers
into a computer.
At least that would be my concern.
2. There are other ways of doing what you want, I think. Here's a
suggestion.
You seem to want to allow some transformations sometimes, but not others.
e.g.
x+y = y+x only if you are allowing the simplification of "sorting".
but if the question involves (say) asking students to sort an expression by
variable names, you would not allow that simplification. Maybe a better
answer
would be allowing
1+1/2+1/3+1/4 in some circumstances, but requiring 25/12 in another
case, and
2+1/12 in another.
so what you are doing is setting up transformations t1,t2,t3, .... such
that
the "test" is
tn( sa) === ta where sa is student answer and ta is teacher answer and
=== means exact syntactic "tree" equality.
or in some cases you can't use ===. e.g.
"give an example of a quadratic polynomial"
And you obviously need to observe some properties e.g.
"what is 12 divided by 3?" You cannot allow the answer 12/3.
At least, probably not..
So you need to set up those transformations and those property tests.
How do you encode the student answers that might be, say 12/3 or x-x
without
simplifying them away?
Maybe define a new function in Maxima which never touches its argument
by simplification.
e.g.
sa(x-x) returns sa(x-x).
If you want to test properties of the argument of x-x, you can and
should use LISP functions
that neither require simplified inputs nor necessarily return simplified
outputs. These are
different from anything in Maxima, and there is no reason to expect that
using Maxima
with simp:false will provide you with the right tools.
You may want 25/12, but is that (times 25 (quotient 1 12)) or (times
25 (expt 12 -1)) or (quotient 25 12) or (+ 2 (quotient 1 12) or .....
Maxima is not going to help, unless you use it to make a canonical
version of all of these, namely ((rat simp) 25 12)