Проверьте, если ответ от конкретной формы, например, формы A*%e^ ​​(B*t)

Я хочу проверить, имеет ли какой-либо максимальный ввод определенную форму. Например, я хочу проверить, имеет ли ответ форму A*%e^(B*t) где A и B являются конкретными действительными числами.

Если ученик Х дает ответ 3*%e^(5*t)тогда это имеет такую ​​форму. Если ученик Y дает ответ sin(t), или, может быть y=3*%e^(5*t) тогда я могу дать этому студенту обратную связь, что его ответ еще не имеет правильной формы.

Мне было интересно, существует ли что-то подобное в максимумах.

1 ответ

Решение

В 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. Взгляните на веб-страницу "Связанные проекты" ( http://maxima.sourceforge.net/relatedprojects.html) и посмотрите, в частности, STACK ( http://stack.bham.ac.uk/).

Другие вопросы по тегам