[LON-CAPA-users] Simplifying polynomial expressions

Peter Riegler p.riegler at ostfalia.de
Tue Nov 6 12:19:18 EST 2012


We usually do this kind of problems by parsing the expression with 
maxima's op command. The idea is, once you have a parsing tree, you can 
ask questions like these: Is there only one plus in the expression and 
is it the highest level operation? Is the depth of the parsing tree not 
larger than we want it to be?

However, all this might not work for rather simple (i.e. purely 
algebraic) expressions like
3a + 2b - 4a + 6b
as maxima might internally simplify that before parsing the expression.

I hope this helps.

Peter


On 06.11.2012 13:10, Michael Dugdale wrote:
> A thought (probably not a good one) -- couldn't you do a check of the
> response string with perl to count the number of occurrences of the
> variable?  Count that each variable appears no more than once before
> sending it to maxima?
>
>
>
> Sent from my mobile phone, so please forgive any spehling errers.
>
> On 2012-11-05, at 23:12, "Seema Ali" <sali at vsb.bc.ca
> <mailto:sali at vsb.bc.ca>> wrote:
>
>> I'd like to create dynamic polynomial questions that require students
>> to simplify them. I was wondering how to do I check to see if the
>> students actually entered a simplified version of the expression, but
>> keep it still free enough to allow the order of terms to be different.
>>
>> For example:
>> 1. 3a + 2b - 4a + 6b
>> Students could enter: -a + 8*b, or 8*b - a, or -1*a + 8*b, or 8*b +
>> -a, etc for it to be correct.
>> I'm concerned that a student could also enter equivalent unsimplified
>> responses like:
>> 3*a + 2*b - 4*a + 6*b or -a + 2b + 6b and still have it marked correctly.
>>
>> I'd like to create a variety of short answer polynomial questions, but
>> I'm not sure how much work it will be.
>>
>> The code below contains an example with a,b,c variables. It creates
>> polynomials and it marks it correct if the answer entered is
>> equivalent to the question, not necessarily the simplified form.
>>
>> Any insight on this will be appreciated.
>>
>> <problem>
>> <script type="loncapa/perl">$coeff_a1 = &random(-1,1,2)*&random(2,10,1);
>> $coeff_a2 = &random(-1,1,2)*&random(2,10,1);
>> $coeff_b1 = &random(-1,1,2)*&random(2,10,1);
>> $coeff_b2 = &random(-1,1,2)*&random(2,10,1);
>> $coeff_c1 = &random(-1,1,2)*&random(2,10,1);
>> $coeff_c2 = &random(-1,1,2)*&random(2,10,1);
>>
>> $answer = &cas('maxima', "$coeff_a1*a + $coeff_b1*b + $coeff_c1*c +
>> $coeff_a2*a + $coeff_b2*b + $coeff_c2*c");
>>
>> $answershow = &xmlparse($answer);</script><startouttext />Simplify.
>> <m eval='on'>
>> \[\Large
>>    $coeff_a1 a + $coeff_b1 b + $coeff_c1 c + $coeff_a2 a + $coeff_b2 b
>> + $coeff_c2 c
>> \]
>> </m>
>>
>> $answershow
>> <br />
>> Answer:<endouttext />
>> <mathresponse cas="maxima" answerdisplay="$answer" args="$answer">
>>     <answer>f(x) := RESPONSE[1];
>> g(x) := LONCAPALIST[1];
>> is(trigsimp(f(x)-g(x))=0);</answer>
>>     <textline readonly="no" />
>>     <hintgroup showoncorrect="no">
>>         <startouttext />
>>
>>         <endouttext />
>>     </hintgroup>
>> </mathresponse>
>> </problem>
>>
>>
>>
>> Thanks.
>> <ATT00001..c>
>
>
> _______________________________________________
> LON-CAPA-users mailing list
> LON-CAPA-users at mail.lon-capa.org
> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>

-- 
Peter Riegler
Ostfalia Hochschule für angewandte Wissenschaften
Hochschule Braunschweig/Wolfenbüttel
Salzdahlumer Str. 46/48
38302 Wolfenbüttel

Fakultät Informatik
Fon: ++49 5331 939 31540
http://public.rz.fh-wolfenbuettel.de/~riegler

Zentrum für erfolgreiches Lehren und Lernen
Fon: ++49 5331 939 17200
http://www.ostfalia.de/zell



More information about the LON-CAPA-users mailing list