检查答案是否来自特定表格
Check if answer is from specific form
我想检查一些最大值输入是否具有特定形式。例如,我想检查答案是否为 A*%e^(B*t)
形式,其中 A 和 B 是特定实数。
如果X同学给出的答案是3*%e^(5*t)
,那么就是这种形式。如果学生 Y 给出的答案是 sin(t)
,或者可能是 y=3*%e^(5*t)
,那么我可以给这个学生作为反馈,告诉他他的答案还不是正确的形式。
我想知道maxima中是否存在这样的东西
Maxima 有几个对表达式(而非字符串)进行操作的模式匹配函数。我觉得defmatch
在这里比较合适,例如:
(%i8) matchdeclare ([A, B], constantp);
(%o8) done
(%i9) defmatch (match_aexpbt, A*exp(B*t), t);
(%o9) match_aexpbt
(%i10) match_aexpbt (5*exp(3*u), u);
(%o10) [A = 5, B = 3, t = u]
(%i11) match_aexpbt (sqrt(2)*exp(%pi*z), z);
(%o11) [A = sqrt(2), B = %pi, t = z]
(%i12) match_aexpbt (y = 5*exp(3*u), u);
(%o12) false
(%i13) match_aexpbt (5*sin(2*u), u);
(%o13) false
(%i14) match_aexpbt ((1 + %i)*exp(exp(%pi)*v), v);
%pi
(%o14) [A = %i + 1, B = %e , t = v]
在这种情况下,我定义了 match_aexpbt
,它匹配看起来像 A*exp(B*t)
的表达式,其中 A
和 B
是常量,而 t
是提供的变量。
请参阅 defmatch
和 matchdeclare
以及 defrule
、tellsimp
和 tellsimpafter
的文档。模式匹配函数有点特殊,但实际上非常有用——我已经用过很多次了。
如果您有兴趣检查学生的答案,可以使用基于 Maxima 的项目。看看 related projects webpage and see in particular STACK.
我想检查一些最大值输入是否具有特定形式。例如,我想检查答案是否为 A*%e^(B*t)
形式,其中 A 和 B 是特定实数。
如果X同学给出的答案是3*%e^(5*t)
,那么就是这种形式。如果学生 Y 给出的答案是 sin(t)
,或者可能是 y=3*%e^(5*t)
,那么我可以给这个学生作为反馈,告诉他他的答案还不是正确的形式。
我想知道maxima中是否存在这样的东西
Maxima 有几个对表达式(而非字符串)进行操作的模式匹配函数。我觉得defmatch
在这里比较合适,例如:
(%i8) matchdeclare ([A, B], constantp);
(%o8) done
(%i9) defmatch (match_aexpbt, A*exp(B*t), t);
(%o9) match_aexpbt
(%i10) match_aexpbt (5*exp(3*u), u);
(%o10) [A = 5, B = 3, t = u]
(%i11) match_aexpbt (sqrt(2)*exp(%pi*z), z);
(%o11) [A = sqrt(2), B = %pi, t = z]
(%i12) match_aexpbt (y = 5*exp(3*u), u);
(%o12) false
(%i13) match_aexpbt (5*sin(2*u), u);
(%o13) false
(%i14) match_aexpbt ((1 + %i)*exp(exp(%pi)*v), v);
%pi
(%o14) [A = %i + 1, B = %e , t = v]
在这种情况下,我定义了 match_aexpbt
,它匹配看起来像 A*exp(B*t)
的表达式,其中 A
和 B
是常量,而 t
是提供的变量。
请参阅 defmatch
和 matchdeclare
以及 defrule
、tellsimp
和 tellsimpafter
的文档。模式匹配函数有点特殊,但实际上非常有用——我已经用过很多次了。
如果您有兴趣检查学生的答案,可以使用基于 Maxima 的项目。看看 related projects webpage and see in particular STACK.