Очень часто приходится вычислять производные функций, которые заданы в неявном виде. Задаются такие функции, как правило, с помощью уравнений, в которые входит как переменная (или переменные — для функции нескольких переменных), так и сама функция. Принцип вычисления производной в этом случае достаточно прост — производная вычисляется от всего уравнения (его правой и левой части). При этом только следует иметь в виду, что одна из переменных в уравнении является функцией остальных.
Для вычисления производных от неявно заданных функций в Maple предлагается процедура implicitdiff(). Способы ее вызова рассмотрим на примерах, которые приведены ниже.
Задача 2.9
Найти производную функции у(х), заданной неявно: х2 +2ху -у=2х .
Сначала построим график функции, от которой следует искать производную. Процедура implicitplot() позволяет строить графики функций, заданных в неявном виде. Однако доступной процедура становится только после подключения пакета plots с помощью команды with().
Внимание!
В пакете plots имеется процедура changecoords (), название которой совпадает с названием стандартной процедуры changecoords (), доступной и без подключения пакета. Выше можно видеть сообщение о том, что в результате подключения пакета эта процедура была переопределена.
Первым аргументом процедуры является уравнение, задающее функцию, после чего следует диапазон изменения переменных х и у. Остальные опции уже использовались ранее и читателю знакомы, кроме опции thickness, которая определяет толщину линии (значение — целое число; в предыдущих версиях Maple — в диапазоне от 0 до 3, а в Maple 9 — от 0 до 15).
Для вычисления производной воспользуемся, как уже отмечалось, процедурой implicitdiff(), первым параметром которой является выражение, неявно задающее функцию, вторым — функция, от которой нужно искать производную, и, наконец, третьим параметром — переменная, по которой вычисляется производная.
Левая часть равенства нужна исключительно для "художественного" оформления результата.
Разумеется, неплохо было бы построить график найденной выше производной. Для обозначения этой производной введем переменную z, в качестве значения которой присвоим выражение, вычисленное на предыдущем этапе, и представим это в виде равенства.
Процедура rhs() в качестве своего значения возвращает правую часть равенства (то, что находится после знака равенства), указанного ее параметром. В данном случае rhs(%) возвращает значение производной. Чтобы получить зависимость производной (т.е. z) от переменной х, в исходном уравнении для функции следует исключить у (т.е. выразить через r). Для этого следует последнее уравнение решить относительно у и присвоить полученное в качестве решения значение переменной у (выразив тем самым у через z).
Выше использована процедура solve(). Первым параметром этой процедуры является решаемое уравнение, вторым — переменная, относительно которой уравнение решается. Для ссылки на уравнение использована переменная среды %.
Внимание!
Процедура solve () позволяет решить уравнение, указанное первым параметром, относительно второго параметра. Однако в качестве значения решение этому второму параметру не присваивается! Поэтому в приведенной выше команде переменной у присваивается (:=) в качестве значения решение уравнения относительно переменной у (solve(*,y)). Если этого не сделать, то после выполнения процедуры solve(%,y) значение переменной у не изменится.
Кроме того, не следует забывать о том, что если решений уравнения несколько, результатом выполнения процедуры solve () является последовательность этих решений
Если теперь вызвать процедуру implicitplot(), указав пергым параметром все то же уравнение, то оно будет задавать зависимость z от х: дело в том, что хотя формально в уравнении присутствует у, вычислительным ядром Maple в уравнении эта переменная заменяется ее значением, выраженным через г и х.
Опция labels используется для определения надписей по осям координат, а специфичная для процедуры implicitplot() опция grid задает число базовых точек по осям абсцисс и ординат, на основе которых строится график (по умолчанию значение опции равно [25,25]). С директивой перехода на новую строку (\п) в названии рисунка читатель уже знаком.
Задача 2.10
Чему равно значение у при х = 2 и у = 4 и при х =2 и у = 0 , если (эллипс)?
Для начала задаем уравнение F, определяющее функцию.
Выражение Fx определяет производную. Записывается оно с помощью процедуры implicitdiff (), первым параметром которой указывается дифференцируемое выражение (F), затем следует переменная, которую при дифференцировании следует считать функцией, и, наконец, переменная, по которой вычисляется производная.
Переменным х и у присваиваем следующие значения.
Если теперь вызвать Fx, то в этом выражении х и у будут заменены значениями, присвоенными этим переменным выше. В этом случае получим значение производной в соответствующей точке. Однако вызвать Fx можно и с помощью переменной среды %%%, которая возвращает значение предпредпоследней операции.
Чтобы вычислить производную в другой точке, переменной у следует присвоить новое значение (переменная х значения в новой точке не меняет).
Однако результат несколько неожиданный.
Дело в том, что производной в этой точке не существует (точнее, она равна бесконечности, поскольку в выражении для производной у находится в знаменателе, и поэтому точка у=0 является особой).
Часто уравнение, которое задает неявно функцию, имеет достаточно специфичный вид — например, может быть записано в полярных координатах.
Задача 2.11
Чему равна производная у'(х), если функция задана уравнением r = aф (спираль Архимеда).
График для спирали Архимеда строится с помощью процедуры plot(), только в данном случае следует указать, что строится он в полярной системе координат (для этого используется опция coords, значение которой устанавливается равным polar). Отображаемая на графике зависимость также записывается в полярной системе координат (задается зависимость расстояния от угла r((ф)).
Далее переменной Eq в качестве значения присвоим уравнение спирали Архимеда.
Теперь от полярной системы координат переходим к декартовой.
После этого можем вычислить производную (переменная Deriv).
Параметром процедуры implicitdiff () является уравнение Eq, которое, как известно, записано, в полярной системе координат. Однако поскольку на предыдущем этапе переменным гиф были присвоены значения, выражающие их через декартовы координаты, при вычислении производной уравнение будет представлено именно в декартовых координатах, в чем несложно убедиться.
Теперь снова перейдем к полярной системе координат. Для этого, фактически, следует отменить результат выполнения команд (1) и (2)
Внимание!
Текст после знака # трактуется ядром Maple как комментарий и при выполнении команд игнорируется.
Сделать это можно, присвоив переменным г и ф в качестве значений "самих себя".
На заметку
Одинарные кавычки используются для формирования названий. Если переменной не присвоено значение, то по умолчанию ее значением является ее же название. Поэтому выше для "восстановления'' переменных им в качестве значения присваиваются собственные названия.
Теперь можно переходить к полярным координатам.
В этом случае производная равна следующему.
После упрощения получаем следующее.
Для дальнейших преобразований вычислительному ядру Maple следует сообщить, что не может быть отрицательным (процедура assume! ))
Внимание!
Для того чтобы на переменную наложить какие-то ограничения, как было показано выше, используется процедура assume (). Например, можно определить переменную а как такую, что больше 1: assume(a>l). Однако если относительно некоторой переменной процедура assume)) применяется несколько раз, "силу" будет иметь только последняя из этих процедур. Например, если применялась вначале команда assume (а>1), а затем assume (а<2), то переменная а будет интерпретироваться как такая, что меньше 2. Чтобы определить переменную со значением в диапазоне от 1 до 2, следует воспользоваться командой assume (а>1,а<2).
На заметку
По умолчанию переменные, на которые наложены ограничения, отображаются в рабочих листах со знаком тильды ("). Этот режим можно отключить. Для этого, например, в Maple 7 в меню Options (Сервис) следует выбрать подменю Assumed Variables (Ограничения на переменные), содержащее три команды. Если выбрать Л/о Annotation (Не выделять), то такие переменные никаким специальным образом в рабочем документе выделяться не будут. При выборе команды Trailing Tildes (Замыкающие тильды) переменные будут отображаться с тильдами (этот режим, как отмечалось, используется по умолчанию). Можно выбрать команду Phrase (Фраза), и тогда переменная, на которую наложено ограничение, будет отображаться с фразой with assumption on (с предположением относительно). В Maple 9 можно сделать то же самое, выполнив команду File (<t>av\n)<>Preferences (Настройки) и щелкнув на корешке вкладки I/O Display (Отображение данных ввода-вывода), в результате чего будут доступны соответствующие команды. Речь об этом уже велась в главе 1.
Далее воспользуемся уравнением кривой.
Тогда в предположении неотрицательного угла и параметра а находим, наконец, производную.
Это выражение можно преобразовать — например, перейти от использования синусов и косинусов к тангенсам. Для этого понадобится процедура выполнения замены subs ():
Равенство (sin(phi)=tan(phi)*cos(phi)) в первом параметре процедуры указывает на то, что синус следует представить как произведение тангенса на косинус, а второй параметр (переменная среды %) определяет выражение, в котором следует осуществить эту замену.
Полученное выражение следует сократить на косинус. Для этого воспользуемся процедурой упрощения дробей normal ().
Использование процедуры simplify!) в последнем случае вместо процедуры normal() нецелесообразно, поскольку с точки зрения базовых алгоритмов Maple упрощение состоит в переходе от тангенса к синусу и косинусу — в результате придем к тому выражению, с которого начинали.
На заметку
Выше замена переменных в уравнении осуществлялась, что называется, вручную. Однако в Maple имеется процедура changecoords () — та самая, что переопределяется при подключении пакета plots. С ее помощью в выражениях можно переходить от декартовых координат к новым переменным. Например, чтобы записать выражение Тху в полярных координатах, можно ввести команду changecoords(2*x*y, [х,у],polar, [r,phi]). Эту процедуру не следует путать с процедурой plots[changecoords ]() (это ссылка на процедуру changecoords () из пакета plots), которая используется для преобразования графических структур при отображении их в новых системах координат.