From: Chris S. <san...@us...> - 2005-11-27 11:31:08
|
Update of /cvsroot/stack/stack-1-0/scripts/maxima In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8882/scripts/maxima Modified Files: stackfun.php stackmaxima.mac Log Message: Index: stackmaxima.mac =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/maxima/stackmaxima.mac,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** stackmaxima.mac 19 Nov 2005 16:37:08 -0000 1.51 --- stackmaxima.mac 27 Nov 2005 11:30:52 -0000 1.52 *************** *** 84,88 **** /* Makes a complex j if needed */ i:%i; ! make_complexJ(OPT_COMPLEXJ) := if OPT_COMPLEXJ=j then (j:%i,load("complexj.lisp")); /* Makes multiplication signs look correct */ --- 84,88 ---- /* Makes a complex j if needed */ i:%i; ! make_complexJ(OPT_COMPLEXJ) := if OPT_COMPLEXJ=j then (j:%i,load("complexj.lisp")); /* Makes multiplication signs look correct */ *************** *** 209,213 **** StackReturnOb(val,rawmk,ansnote,fb):=block([str], ! str:concat(" Valid = [ ",val," ], RawMark = [ ",rawmk," ], AnswerNote = [ ",ansnote," ], FeedBack= [ ",fb," ]"), return(str) ); --- 209,213 ---- StackReturnOb(val,rawmk,ansnote,fb):=block([str], ! str:concat(" Valid = [ ",val," ], RawMark = [ ",rawmk," ], AnswerNote = [ ",ansnote," ], FeedBack= [ ",fb," ]"), return(str) ); *************** *** 855,861 **** sExpr: SA, rawmk: 0, fb: "", ansnote: "", ret: StackReturnOb(val,rawmk,ansnote,fb), ! if factor( expand( sExpr ) ) = factor( expand( tExpr ) ) then ! block( ! [topOp, list], topOp: op( sExpr ), list: args( sExpr ), --- 855,860 ---- sExpr: SA, rawmk: 0, fb: "", ansnote: "", ret: StackReturnOb(val,rawmk,ansnote,fb), ! if Stack_Test(sExpr,tExpr) then ! block([topOp, list], topOp: op( sExpr ), list: args( sExpr ), *************** *** 870,874 **** oldsimp:simp, simp:true, ! val: "true", tExprPartFrac:ev(partfrac(tExpr,wrt),simp), sExprexpand:expand(sExpr), --- 869,873 ---- oldsimp:simp, simp:true, ! val:"true", tExprPartFrac:ev(partfrac(tExpr,wrt),simp), sExprexpand:expand(sExpr), *************** *** 884,891 **** simp:oldsimp ), ! if topOp = "+" or topOp = "-" then block([tExprPartFrac,oldsimp,val], oldsimp:simp, simp:true, ! val: "true", tExprPartFrac:ev(partfrac(tExpr,wrt),simp), if tExprPartFrac=expand(sExpr) or tExprPartFrac=sExpr then --- 883,890 ---- simp:oldsimp ), ! if topOp = "+" or topOp = "-" then block([tExprPartFrac,oldsimp], oldsimp:simp, simp:true, ! val:"true", tExprPartFrac:ev(partfrac(tExpr,wrt),simp), if tExprPartFrac=expand(sExpr) or tExprPartFrac=sExpr then *************** *** 919,928 **** ) else ! block( ! [sDeg,tDeg], ! sDeg: deg(denom(factor(sExpr))), ! tDeg: deg(denom(factor(tExpr))), ! sNDeg: deg(num(factor(sExpr))), ! tNDeg: deg(num(factor(tExpr))), if tDeg # sDeg then block( --- 918,926 ---- ) else ! block([sDeg,tDeg], ! sDeg: degree(denom(factor(sExpr)),wrt), ! tDeg: degree(denom(factor(tExpr)),wrt), ! sNDeg: degree(num(factor(sExpr)),wrt), ! tNDeg: degree(num(factor(tExpr)),wrt), if tDeg # sDeg then block( *************** *** 937,946 **** else block( ! if sDeg = 2 then ! ret: quadTest(sExpr,tExpr,wrt) ! else if sDeg = 3 then ! ret: tripTest(sExpr,tExpr,wrt) ! else ! ret: singTest(sExpr,tExpr) ) ) --- 935,943 ---- else block( ! val: "true", ! rawmk: string(0), ! ansnote: "ATPartFrac_ret_expression", ! fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")), ! ret: StackReturnOb(val,rawmk,ansnote,fb) ) ) *************** *** 1054,1106 **** /*****************************************************************/ /* Partial Fractions answer Test functions */ ! /* Author: LastRenshai */ /*****************************************************************/ /* *******Functions Used******** */ - /* deg(Expr) */ /* isDenomSame(sExpr, tExpr) */ /* isNumSame(sExpr, tExpr) */ /* isPartFrac(sExpr, tExpr, wrt) */ - /* quadTest(sExpr, tExpr, wrt) */ /* sameVars(expr1, expr2) */ - /* singTest(sExpr, tExpr) */ - /* tripTest(sExpr, tExpr, wrt) */ /* ***************************** */ - - /* ******************Degree Of Polynomial Test************************* */ - /* Assumes expression isn't already expanded and contains a val of x */ - /* requires : expression with variable such as x */ - /* returns : degree of highest power of var */ - /* ******************************************************************** */ - deg(expr):= - if atom(expr) then 1 - else - block( - - expr2: expand(expr), - topOp: op(expr2), - - if topOp = "^" then - part(args(expr2),2) - else if topOp = "*" then - block( - secPart: part(args(expr2),2), - if atom(secPart) then - 1 - else - deg(part(args(expr2),2)) - ) - - else - block( - firstArg: part(expr2,1), - if atom(firstArg) then - 1 - else - deg(part(args(expr2),1)) - ) - ); - - /* ************Denominator Same Test*************************** */ --- 1051,1063 ---- /*****************************************************************/ /* Partial Fractions answer Test functions */ ! /* Author: LastRenshai, Modified by Chris Sangwin */ /*****************************************************************/ /* *******Functions Used******** */ /* isDenomSame(sExpr, tExpr) */ /* isNumSame(sExpr, tExpr) */ /* isPartFrac(sExpr, tExpr, wrt) */ /* sameVars(expr1, expr2) */ /* ***************************** */ /* ************Denominator Same Test*************************** */ *************** *** 1162,1213 **** ); - /* **********************QUAD TEST***************************** */ - /* Use: Degree of Expression is 2, expressions not equivalent */ - /* Requires: SExpr - Students Expression */ - /* TExpr - Teachers Expression */ - /* wrt - Variable part frac occurs */ - /* Returns: StackReturnOb */ - /* CASE 1: different Numerators - factored sExpr */ - /* CASE 2: diff denominators - sDenom and tDenom */ - /* CASE 3: Other wise - Factored sExpr */ - /* ************************************************************ */ - - quadTest(sExpr, tExpr, wrt):= - - block( [val, rawmk, ansnote, fb], - tPExpr: partFrac(tExpr, wrt), - tExprL: part(tPExpr,1), - tExprR: part(tPExpr,2), - sExprL: part(sExpr,1), - sExprR: part(sExpr,2), - - if (isNumSame(sExprL, tExprL) = false and isNumSame(sExprL, tExprR) = false) - or (isNumSame(sExprR, tExprL) = false and isNumSame(sExprR, tExprR) = false) then - block( - val: "true", - rawmk: string(0), - ansnote: "ATPartFrac_ret_expression", - fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")) - ) - else if (isDenomSame(sExprL, tExprL) = false and isDenomSame(sExprL, tExprR) = false) - or (isDenomSame(sExprR, tExprL) = false and isDenomSame(sExprR, tExprR) = false) then - block( - val: "true", - rawmk: string(0), - ansnote: "ATPartFrac_denom_ret", - fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")) - ) - else - block( - val:"true", - rawmk: string(0), - ansnote: "ATPartFrac_ret_expression", - fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")) - ), - ret: StackReturnOb(val, rawmk,ansnote,fb), - return(ret) - ); - - /* ***************Variables used the Same********************** */ --- 1119,1122 ---- *************** *** 1225,1310 **** ); - - /* ****************1st Degree Partial Fraction***************** */ - /* Use: Degree of Expression is 1, expressions not equivalent */ - /* Requires: SExpr - Students Expression */ - /* TExpr - Teachers Expression */ - /* Returns: StackReturnOb */ - /* CASE 1: different Numerators - factored sExpr */ - /* CASE 2: diff denominators - sDenom and tDenom */ - /* CASE 3: Other wise - Factored sExpr */ - /* ************************************************************ */ - - singTest(sExpr, tExpr):= - ( [val, rawmk, ansnote, fb], - tE: factor(tExpr), - sE: factor(sExpr), - if (isDenomSame(sE,tE) = false) then - block( - val:"true", - rawmk: string(0), - ansnote: "ATPartFrac_denom_ret", - fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(sE),"\$"), StackDISP(denom(tE),"\$")) - ) - else - block( - val:"true", - rawmk: string(0), - ansnote: "ATPartFrac_ret_expression", - fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(sE,"\$")) - ), - ret: StackReturnOb(val, rawmk, ansnote, fb), - return(ret) - ); - - /* ****************3rd Degree Partial Fraction***************** */ - /* Use: Degree of Expression is 3, expressions not equivalent */ - /* Requires: SExpr - Students Expression */ - /* TExpr - Teachers Expression */ - /* wrt - Variable part frac occurs */ - /* Returns: StackReturnOb */ - /* CASE 1: different Numerators - factored sExpr */ - /* CASE 2: diff denominators - sDenom and tDenom */ - /* CASE 3: Other wise - Factored sExpr */ - /* ************************************************************ */ - - tripTest(sExpr, tExpr, wrt):= - ( [val, rawmk, ansnote, fb], - tPExpr: partFrac(tExpr,wrt), - s1: part(sExpr,1), - s2: part(sExpr,2), - s3: part(sExpr,3), - t1: part(tPExpr,1), - t2: part(tPExpr,2), - t3: part(tPExpr,3), - - if (isNumSame(s1,t1) =false and isNumSame(s1,t2) = false and isNumSame(s1,t3) = false) - OR (isNumSame(s2,t1) =false and isNumSame(s2,t2) = false and isNumSame(s2,t3) = false) - OR (isNumSame(s3,t1) =false and isNumSame(s3,t2) = false and isNumSame(s3,t3) = false) then - block( - val:"true", - rawmk: string(0), - ansnote: "ATPartFrac_ret_expression", - fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$")) - ) - else if (isDenomSame(s1,t1) = false and isDenomSame(s1,t2) = false and isDenomSame(s1, t3) = false) - OR (isDenomSame(s2,t1) = false and isDenomSame(s2,t2) = false and isDenomSame(s2, t3) = false) - OR (isDenomSame(s3,t1) = false and isDenomSame(s3,t2) = false and isDenomSame(s3, t3) = false) then - block( - val: "true", - rawmk: string(0), - ansnote: "ATPartFrac_denom_ret", - fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")) - ) - else - block( - val: "true", - rawmk: string(0), - ansnote: "ATPartFrac_ret_expression", - fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$")) - ), - ret: StackReturnOb(val, rawmk, ansnote, fb), - return(ret) - ); /*********************/ --- 1134,1137 ---- Index: stackfun.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/maxima/stackfun.php,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** stackfun.php 9 Nov 2005 13:53:08 -0000 1.5 --- stackfun.php 27 Nov 2005 11:30:52 -0000 1.6 *************** *** 158,161 **** --- 158,217 ---- $stack_cmd['plot']['use'] = 's'; + /**********************************************/ + /* From the Maxima Powers package */ + /**********************************************/ + + $stack_cmd['variablep']['doc'] = 'variablep(e) evaluates to true if and only if e is a non-constant symbol + or a subscripted symbol. Because symbolp(pi) evaluates to true, we need to check whether cd mae is constant.'; + $stack_cmd['variablep']['syntax'] = 'variablep(e)'; + $stack_cmd['variablep']['type'] = 'powers'; + $stack_cmd['variablep']['use'] = 't'; + + $stack_cmd['polynomialp']['doc'] = 'Return true iff and only if e is a polynomial in the variables v.'; + $stack_cmd['polynomialp']['syntax'] = 'polynomialp(e,[v])'; + $stack_cmd['polynomialp']['type'] = 'powers'; + $stack_cmd['polynomialp']['use'] = 't'; + + $stack_cmd['degree']['doc'] = 'Return the degree of the symbol x in the polynomial p. When + x is a list, degree(p, [x1,x2,...,xn]) returns + degree(p,x1) + degree(lcoeff(p, x1),[x2,...xn]). + Finally, degree(p,[]) returns 0.'; + $stack_cmd['degree']['syntax'] = 'degree(p,x)'; + $stack_cmd['degree']['type'] = 'powers'; + $stack_cmd['degree']['use'] = 't'; + + $stack_cmd['lcoeff']['doc'] = 'Return the leadning coefficient, ie coefficient of the term of the polynomial e that contains the highest power of x (or v)'; + $stack_cmd['lcoeff']['syntax'] = 'lcoeff(e,[v])'; + $stack_cmd['lcoeff']['type'] = 'powers'; + $stack_cmd['lcoeff']['use'] = 't'; + + $stack_cmd['tcoeff']['doc'] = 'Return the coefficient of the term of the polynomial e that contains the lowest power of x (or v)'; + $stack_cmd['tcoeff']['syntax'] = 'tcoeff(e,[v])'; + $stack_cmd['tcoeff']['type'] = 'powers'; + $stack_cmd['tcoeff']['use'] = 't'; + + $stack_cmd['allcoeffs']['doc'] = 'If e is a sum of powers of x, return a list of the coefficients of powers of x. When e isn\'t a sum of powers, return false. '; + $stack_cmd['allcoeffs']['syntax'] = 'allcoeffs(e,x)'; + $stack_cmd['allcoeffs']['type'] = 'powers'; + $stack_cmd['allcoeffs']['use'] = 't'; + + $stack_cmd['total_degree']['doc'] = 'Return the total degree of the polynomial. '; + $stack_cmd['total_degree']['syntax'] = 'total_degree(p,[v])'; + $stack_cmd['total_degree']['type'] = 'powers'; + $stack_cmd['total_degree']['use'] = 't'; + + $stack_cmd['ordinal_string']['doc'] = 'ordinal_string(i) returns the ordinal name of the integer i. eg, ordinal_string(i)="second".'; + $stack_cmd['ordinal_string']['syntax'] = 'ordinal_string(i)'; + $stack_cmd['ordinal_string']['type'] = 'powers'; + $stack_cmd['ordinal_string']['use'] = 't'; + + + $stack_cmd['']['doc'] = ''; + $stack_cmd['']['syntax'] = ''; + $stack_cmd['']['type'] = ''; + $stack_cmd['']['use'] = ''; + + + //$stack_cmd['']['doc'] = ''; //$stack_cmd['']['syntax'] = ''; |