![]() |
Проект |
Я полагаю, что искушенные пользователи Maple имеют представление о разнице между выражением и функцией, но на всякий случай считаю нужным обсудить это здесь.
Большинство процедур Maple использует и выдает в качестве значений не функции (отображения, зависимости между переменными, как бы эти переменные не назывались), а выражения (содержащие переменные с вполне определенными именами).
Функции, в действительности, используются в Maple редко. К сожалению, в help'е пакета авторы, с присущей школьникам (и алгебраистам) беззаботностью, часто называют выражения функциями, что затрудняет понимание. Вслед за ними эту путаницу допускает и автор книги [3] (см. примеры).
Эту разницу, при необходимости, можно уяснить, разобрав предлагаемые здесь вопросы и ответы на них.
Q. Maple-функция piecewise создает выражение или функцию?
A. Выражение типа piecewise.
Q. x(t) – это функция или выражение?
A. Это выражение, значение которого является значением функции x при значении аргумента, равного t. Однако, это значение может быть функцией какого-то другого аргумента.
Q. Что в Maple подвергается интегрированию и интегральным преобразованиям Лапласа, Фурье и т.д.?
A. Нет, не функции, а выражения, содержащие некоторую переменную, по которой и совершается интегрирование.
Q. Если x – функция одного аргумента, то int(x(s), s = 0..t) представляет собой выражение или функцию?
A. Выражение, содержащее переменную t. Если мы хотели получить
функцию, нам следовало написать
func := t -> int(x(s), s = 0..t);
Q. Как получить значение функции x в точке 1/2?
A. x(1/2);
Q. Как подставить значение t = 1/2 в выражение x?
A. subs(t = 1/2, x)
Q. x(t) и x(s) – это одно и то же или нет?
A. Нет, это разные выражения. Однако, они равны, если переменным t
и s было присвоено одно и то же значение.
А функция одна и та же в любом случае!
Q. Что будет выведено на экран в результате выполнения следующих двух последовательностей команд? Они довольно часто встречаются в практике программирования итерационных процессов.
Для выражений: | Для функций: |
f := t: f_old := f: f := t^2: f - f_old; |
f := t -> t: f_old := f: f := t -> t^2: f(t) - f_old(t); |
A. В версии Maple V R4 в первом случае получается ,
а во втором – 0. Что наводит на очень глубокие мысли о возможных источниках ошибок.
У Вас другая, более совершенная версия? – Тогда проверьте сами.
Q. Пусть X – выражение и
x := t -> X:
Если в выражение x(t) подставить s вместо t:
subs(t=s, x(t)):
то получится ли то же, что и x(s)?
А что получится, если в x(t) подставить t вместо s:
subs(s=t, x(t)):?
A. Это для вашего самостоятельного размышления. Главное, чтобы был понят вопрос!