Математический анализ в Maple 9


         

Вычисление производных явно заданных функций

Для вычисления производной в Maple предусмотрена процедура diff()5 параметрами которой являются: а) функция, от которой берут производную, и б) переменная, по которой эту производную следует брать. Результатом выполнения процедуры является выражение, задающее искомую производную. Кроме того, существует неактивная форма процедуры вычисления производной — Diff (). В отличие от активной формы (той, что начинается со строчной буквы), неактивная используется не для непосредственного вычисления производной, а для символьной записи самой операции. В дальнейшем выражение для производной может быть вычислено с помощью процедуры value(), если результат выполнения процедуры Diff () указать в качестве ее параметра.

Совет
Команда value() используется для вычисления значения не только упомянутой процедуры Diff (),но и других процедур в неактивной форме.

Кроме того, для вычисления производных в Maple может использоваться оператор D. Однако в отличие от процедуры diff(), которая вычисляет производную от символьного выражения, оператор D используется для вычисления производной от оператора. Например, производную от синуса можно вычислить следующим образом.

С помощью оператора D это делается несколько иначе.

Допустим и такой синтаксис вызова оператора D.

В последнем случае в первых скобках после оператора D указывается оператор (функция), на который действует D, а в следующих скобках — аргумент для полученного в результате оператора (в данном случае оператора D(sin)=cos).

На заметку
С точки зрения Maple функция и оператор — практически одно и то же. Под функцией будем, ради удобства, понимать результат действия оператора на аргумент. Иногда, если это не приводит к недоразумениям, функцией будем также называть и соответствующий оператор.

Далее имеет смысл остановиться более детально на решении конкретных задач.

Задача 2.1



Найти производную функции

В первую очередь определим саму функцию, от которой следует брать производную. Сделать это можно следующим образом.

Здесь у — функция (ее название), которой в качестве значения присваивается (:*) оператор. Оператор задается так: сначала указывается аргумент (или несколько аргументов), потом отображается стрелка (->), а после стрелки задается математическое выражение, определяющее действие оператора на аргумент. После того как функция задана, ее можно дифференцировать.

Если воспользоваться оператором D, то получим несколько иной результат.

Другими словами, результат такой операции — оператор. Приведенная выше запись значит, что аргументу х в результате действия на него оператора D(y) в соответствие ставится выражение, которое указано после стрелки.

Очень часто выражения, выводимые Maple в качестве результата выполнения той или иной операции, громоздки. Поэтому их приходится упрощать. В этом случае полезна процедура simplify(). В качестве ее аргумента указывается выражение, которое следует упрощать. В данном случае это переменная среды *. Переменная возвращает в качестве своего значения результат выполнения последней команды, причем не обязательно в текущем рабочем листе (в рассматриваемом случае переменная возвращает вычисленное выше выражение для производной).

Но даже после упрощения выражения его вид может не соответствовать представлениям пользователя о простоте и элегантности. На этот случай в Maple предусмотрен ряд полезных утилит, позволяющих привести выражения к приемлемому для пользователя виду. Среди них имеется такая процедура, как combine ().

В качестве первого параметра в ней использована уже упоминавшаяся переменная среды (%), а вторым параметром указана опция trig. Это инструкция для вычислительного ядра Maple использовать встроенные алгоритмы преобразования тригонометрических выражений: в частности, произведения тригонометрических функций заменяются, где это возможно, тригонометрическими функциями от суммы (разности) аргументов.

На заметку
Доступ к справочной информации о процедуре combine (), как и о прочих процедурах и командах, можно получить, разместив в рабочем листе курсор на вызове этой процедуры и нажав <F1>. Там можно найти полезную информацию об используемых при преобразовании выражений алгоритмах, а также об опциях, которые позволяют использовать те или иные алгоритмы.

Далее осталось только оформить результат (хотя это и не обязательно).

Выражение в левой части заключено в обратные кавычки. Все, что находится в этих кавычках, вычислительным ядром Maple не вычисляется и в области вывода отображается в "первозданном виде". Выше эта особенность была использована, чтобы вывести в области вывода символьное выражение для операции вычисления производной в левой части равенства.

На заметку
Можно для этих целей применять неактивную форму команды дифференцирования Diff {}. Однако в этом случае используется синтаксис как для частной производной, что математически не совсем корректно.

Следует иметь в виду, что для вычисления производной совсем не обязательно сначала описывать саму функцию. Можно поступить проще. Рассмотрим следующий пример (символ ^ означает возведение в степень).

Задача 2.2

Найти производную функции у(х) =х+х^х+х^(х^х).

В этом случае переменной у присвоим значение х+х^х+х^(х^х) (но теперь у — это уже не функция от х, а выражение!).

На заметку
Операция возведения в степень (^ или **) является бинарной. Это значит, что запись вида а^b^с некорректна. Следует использовать скобки: (а^b)^с.

При дифференцировании в качестве первого аргумента процедуры dif f () указывается выражение у (зависящее от х, но хочется еще раз подчеркнуть, это не функциональная зависимость). > diff(y,x);

В отличие от предыдущей задачи, зависимость выражения у от х явно не указывается (здесь как раз и проявляется то, что зависимость не является функциональной). В предыдущей задаче переменная у объявлялась как оператор, поэтому при ее вызове необходимо было указать, на какой аргумент она действует. В данном же случае у — это просто название выражения.

Однако самый незатейливый способ вычисления производной представлен ниже.

Задача 2.3

Найти производную функции у(х)=х^(1/х).

В качестве параметра процедуры diff () можно сразу указать дифференцируемое выражение.

Поскольку очевидно, что в полученном после дифференцирования выражении имеется возможность вынести за скобки общий множитель, воспользуемся следующей командой.

Переменная среды %, указанная в качестве первого параметра процедуры collect!), определяет выражение, которое нужно преобразовать, а второй параметр указывает на то, что в выражении слагаемые следует группировать по степеням 1/х.

На заметку
Если при вызове процедуры collect() вторым параметром указать не 1/х, а х, результат не изменится. Причина в том, что 1/х — это х в степени -1.

Вычислительное ядро Maple достаточно эффективно работает не только с непрерывными функциями, но и с такими, которые имеют точки (или области) разрывов.

Задача 2.4

Найти производную функции

Определяем функцию у(х) следующим образом.

При этом целая часть числа х возвращается функцией Maple floor().

На заметку
В Maple есть функция trune(), действие которой во многом аналогично действию функции floor)). Однако функция trunc() выделяет целую часть аргумента "в направлении О", в то время как функция floor () выделяет ближайшее целое число, не превышающее данное, указанное как аргумент. Для положительных чисел действия обеих функций эквивалентны, а для отрицательных чисел результаты отличаются на единицу.

Дальше процедура вычисления производной уже знакома.

Последнее выражение содержит функцию floor(), у которой указано два аргумента. В этом случае первый аргумент определяет порядок производной, второй — непосредственно аргумент. Другими словами, floor(l,x) — это первая производная от функции floor(x), которая во всех точках равна нулю, кроме целочисленных значений аргумента — в этих точках производная не определена (поскольку floor(х) в этих точках имеет неустранимый разрыв).

Полученное выражение, при желании, можно упростить.

Чтобы представить себе, что же это за функция, построим ее график.

В качестве первого аргумента процедуры plot(), используемой для отображения двухмерных графиков, указывается выражение, график которого следует построить. В данном случае это выражение определяется значением переменной среды %. Второй аргумент является равенством, где указывается переменная, относительно которой следует строить график (левая часть равенства), а после знака равенства — диапазон ее изменения.

На заметку
Если диапазон изменения не указать, то по умолчанию график строится на интервале -10.. 10.

Следующие параметры являются необязательными. В приведенном примере это заголовок (опция title) и шрифт для этого заголовка (опция title-font). Значения этих опций указываются после знака равенства: заголовок (его значение) заключается в двойные кавычки, а шрифт — это список (в квадратных скобках через запятую указываются тип шрифта, его стиль и размер). Подробнее об опциях процедуры plot() можно узнать из приложения в конце книги. Там же имеется и информация о возможных значениях этих опций.

На заметку
Списком в Maple называется последовательность разделенных через запятую элементов (самого разного характера), заключенная в квадратные скобки. В списке имеет значение порядок следования элементов — при изменении очередности элементов по определению полагают, что список изменился. Последовательность Maple — это группа (в обычном, не математическом значении этого слова) выражений, разделенных запятыми. Пример последовательности: x,sin(t),5,3*6. Пример списка: [x,sin(t),5,3*6].
Если последовательность заключить в фигурные скобки, получится множество. От списка множество отличается тем, что не имеет значения ни порядок следования, ни количество совпадающих элементов.

Внимание!
Некоторые параметры графиков можно изменять уже после их отображения в области вывода непосредственно с помощью кнопок контекстной панели двухмерной графики vu команд раскрывающегося меню. Описание контекстной панели для двухмерных и трехмерных фафиков приведено в главе 1, а описание опций можно найти в приложении.
Следует также иметь в виду, что внешний вид фафиков, которые пользователь увидит на экране, если введет предложенные команды, может не соответствовать тому, что показано в книге. В этом случае желаемого результата можно добиться с помощью уже упомянутой контекстной панели или раскрывающегося меню. Как будет показано далее, внешний вид фафиков можно задавать непосредственно с помощью опций процедуры plot(). Однако на данном этапе это не является первостепенной задачей.

В следующем примере показано, как вычисляются производные от кусочно-гладких функций.

Задача 2.5

Найти производную и построить график функции и ее производной, если

Чтобы задать такую функцию, поступим следующим образом.

В качестве аргументов функции piecewise() указываются поочередно ш тервал (в виде неравенства) и значение функции на этом интервале. После, ний интервал не указывается — только значение функции.

Функцию f() определим как производную от функции у() (наличие скобе после названия свидетельствует о том, что соответствующие переменные объявляются как операторы и для них при вызове нужно указывать аргумент).

Если теперь указать аргумент, получим выражение для производной:

Графики функции у(х) и ее производной построим с помощью уже знаке мой процедуры plot(), только в этом случае первым аргументом указываете список из двух функций. Точно так же задаются значения опций — это списки, в которых первый элемент соответствует первой функции, а второй элемент - второй функции.

На заметку
Чтобы при вводе кода перейти на следующую строку, не "спровоцировав" при этом вычислительное ядро Maple на выполнение вводимой команды, следует нажать <Shift+Enter>.

Здесь использованы новые опции: color для определения цвета линий, style для определения стиля линий (первый график отображается точками, второй — непосредственно линией), symbol для определения символов отображения (квадрат) и опция отображения легенды legend. Значением последней являются надписи, отображаемые в нижней части графика у образцов линий, и они заключаются в двойные кавычки. Для опции symbol в качестве значения указано единственное значение, а не список. В этом случае значение применяется ко всем отображаемым функциям.

Задача 2.6

Найти производную и построить график функции и ее производной, если

Исходную функцию определяем следующим образом (процедура abs () возвращает в качестве значения модуль аргумента).

Однако производную определим не как функцию, а как выражение.

Видим, что производная не определена в точках х=-1 и х=1 (undefined — значит неопределенный). Ниже строится график исходной функции и ее производной. Следует обратить внимание на то, что оператор у() указывается вместе с аргументом (т.е. у(х)), в то время как для производной указана только переменная f. Ситуация такая же, как и в одном из предыдущих примеров, — первая зависимость от х является функциональной (у() — оператор), вторая — нет (f — это выражение).

Опция linestyle определяет стиль линий: первый график отображается сплошной линией (SOLID), второй — штрихпунктирной (DASHDOT).

Вычисление производных функций, заданных параметрически

При вычислении производных функций, заданных параметрически, по сравнению с явно заданными функциями, принципиально ничего не меняется. Однако сама процедура вычисления производных (особенно высших порядков) становится несколько сложнее.

Рассмотрим пример.

Задача 2.7

Найти производную функции, заданной параметрически: x(t) = acos(t) и y(t) = bsin(t).

Переменной х присвоим значение.

Так же поступим и с переменной у.

Теперь х и у являются выражениями, которые зависят от переменной-параметра t; по этому параметру их можно дифференцировать. Поэтому остается только воспользоваться приведенной выше формулой для производной функции, заданной в параметрическом виде.

Построим график функции и ее производной с помощью процедуры plot(). При построении графика только одной функции, заданной в параметрическом виде, первым параметром процедуры указывается список, элементами которого являются выражения, определяющие зависимость х и у от переменной-параметра, а также диапазон изменения параметра. Если нужно построить графики сразу нескольких параметрически заданных функций, то в качестве первого аргумента процедуры plot() указывается список, элементами которого являются списки, составленные по описанному выше принципу: в каждом списке три элемента, первые два задают параметрические зависимости, а третий определяет диапазон изменения параметра.

Внимание!
Именно наличие третьего параметра в списке при отображении заданной в параметриче-V ском виде функции является индикатором того, что строится график параметрической функции, а не графики двух разных функций.

Поскольку в исходных параметрических зависимостях х и у зависят от параметров а и b, при построении графиков эти зависимости следует поделить на соответствующие коэффициенты.

Следует обратить внимание на то, что при определении заголовка использовался символ перехода на новую строку (\n). Данный символ рекомендуется использовать при длинных заголовках, чтобы при отображении графика такой заголовок был виден целиком.

Процесс вычисления параметрической производной можно существенно автоматизировать. Подобный подход продемонстрирован в следующем примере.

Задача 2.8

Найти производную функции, заданной параметрически:

Для решения поставленной задачи опишем специальную процедуру.

Название parametricdiff новой процедуры, заключенное в обратные кавычки, определяется пользователем (его можно изменить по своему усмотрению). В данном случае кавычки не имеют значения, все и так будет работать, однако разработчики Maple рекомендуют придерживаться определенных правил (к ним относится и использование при описании процедур обратных кавычек), которые впоследствии помогут избежать многих неприятностей.

После названия процедуры и оператора присваивания (:=) следует стандартное слово рrос() с указанием в скобках параметров процедуры: в данном случае их три — х, у и t. После этого идет команда, выполняемая процедурой (этой командой вычисляется параметрическая производная), а затем в конце указана стандартная конструкция end proc, после которой стоит двоеточие. Если закончить описание процедуры точкой с запятой, в области вывода будет сгенерирован код процедуры.

Далее определяем х и у как функции переменной-параметра.

На заметку
Тот факт, что переменные х и у использовались в описании процедуры, не мешает описывать их как функции параметра. Дело в том, что Maple предусмотрительно различает переменные, используемые при описании процедур, и переменные, используемые непосредственно в главном документе. Даже если они имеют одинаковые названия! Исключением являются переменные, описанные в процедуре в разделе global (об этом речь пойдет несколько позже). Это так называемые глобальные переменные, и они доступны даже вне тела процедуры.

Теперь используем новую процедуру для вычисления производной.

Но в данном случае упростить результат все же придется.

Очевидно, что последняя операция не всегда является необходимой — упрощение выражений зависит от многих факторов, в том числе и от предпочтений пользователя.


Производные от неявно заданных функций

Очень часто приходится вычислять производные функций, которые заданы в неявном виде. Задаются такие функции, как правило, с помощью уравнений, в которые входит как переменная (или переменные — для функции нескольких переменных), так и сама функция. Принцип вычисления производной в этом случае достаточно прост — производная вычисляется от всего уравнения (его правой и левой части). При этом только следует иметь в виду, что одна из переменных в уравнении является функцией остальных.

Для вычисления производных от неявно заданных функций в 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), которая используется для преобразования графических структур при отображении их в новых системах координат.


Производные высших порядков

Достаточно просто вычисляются и производные высших порядков. Для этого используется все та же процедура diff(). Синтаксис вызова этой процедуры для вычисления производных высших порядков описывается ниже в примерах.

Задача 2.12

Найти у"(х) и у"(х), если y(x) = f(x2).

Для отыскания второй производной можно дважды вызвать процедуру diff (), как показано ниже.

В области вывода оператор D(f) означает производную от функции f() по аргументу, а число в скобках вверху у оператора D определяет порядок такой производной.

Другой подход состоит в том, чтобы использовать оператор формирования последовательности ($) у переменной дифференцирования при вызове процедуры diff ().

На заметку
Таким образом, если после переменной дифференцирования указать оператор $ и целое неотрицательное число, то это число будет определять порядок производной. Подобный подход весьма удобен в тех случаях, когда порядок производной достаточно велик. Поскольку результатом выполнения операции х$3 является последовательность х, х, х, то допустимо вместо $3, например, сразу писать х,х,х — результат от этого не изменится.

Задача 2.13

Найти 100-ю производную функции y(x) = xsh(x).

Опишем дифференцируемую функцию.

После этого ее можно продифференцировать нужное количество раз.

Ситуация несколько усложняется, если функция задана в параметрическом f виде. Как поступать в этих случаях, показано в следующем примере.

Задача 2.14

Найти y(x), если x(t) = 2t-t2 и y(i) = 3t-t3.

Вначале определим параметрические зависимости для х и у (т.е. объявим эти переменные как функции одного параметра).

Теперь определим процедуру paramdiff() (точнее, оператор, т.е. в качестве результата процедурой возвращается действие), параметрами которой являются две функции (у() и х()). Действие данного оператора на аргумент состоит в вычислении параметрической производной от функции, указанной первым параметром оператора, по второй. Переменной-параметром при этом является аргумент, на который действует оператор paramdiff(). Описание процедуры заканчивается точкой с запятой, поэтому в области вывода можно увидеть сгенерированный для процедуры программный код.

На заметку
Чтобы этот код не отображался, в конце процедуры достаточно поставить двоеточие.

В процедуре описана локальная переменная t, которая доступна только внутри тела процедуры. Далее следует команда, определяющая работу процедуры paramdiff (). Согласно этой команде, переменной t в соответствие ставится (->) параметрическая производная от у по х (diff (y(t),t)/diff (x(t),t)), а сама переменная t при этом является параметром.

Теперь можно вычислить первую производную.

На заметку
То, что в предыдущей команде при вызове paramdiff () в качестве аргумента указана переменная t, которая формально идентична локальной переменной в описании этой процедуры, — простое совпадение. Можно было бы указать и иной параметр, например р или v.

После упрощения получим следующее.

Вторую производную (не используя полученного выше выражения для первой производной) можно вычислить, дважды вызвав процедуру paramdiff ().

Третью производную вычислим "традиционным" способом.

Здесь переменная среды % ссылается на результат выполнения предыдущего действия, т.е. на параметрическую зависимость для второй производной от у по х.

Теперь полученное выражение упрощаем.

Хотелось бы еще раз обратить внимание на принципиальный момент в определении использованной выше процедуры: данная процедура, по сути, является оператором (ее результат — это не число или выражение, а действие!), зависящим от двух параметров-функций. Действие оператора на аргумент состоит в вычислении параметрической производной от первой функции по второй функции, а аргумент, на который действует оператор, является при этом переменной-параметром.


Вычисление пределов

Для вычисления пределов используют процедуру limit(). В качестве аргументов указывают выражение и то значение, к которому стремится переменная. Данная процедура имеет также и неактивную форму (та же процедура, но пишется с прописной литеры — Limit()). Ниже приведены примеры использования этой процедуры.

Задача 2.15

Определить значение выражения

Выражение с неактивной формой процедуры в левой части команды необходимо для символьного представления предела.

Задача 2.16

Определить значение выражения

В данном случае сначала следует наложить ограничение на переменную е. Иначе вычислительное ядро Maple попытается найти предел для произвольного значения этого параметра. Поскольку значение предела существенно зависит от знака е, получить общую зависимость Maple не сможет.

Стоит также обратить внимание на то, как в качестве значения переменной указана бесконечность (в Maple infinity — это стандартное обозначение для бесконечности).

Задача 2.17

Определить значение выражения

Ничего принципиально нового в этом примере нет. Однако он наглядно демонстрирует возможности Maple. Дело в том, что если вычислять такой предел без использования Maple, придется проделать достаточно нетривиальные преобразования (или использовать асимптотические разложения). В Maple ничего этого делать не нужно — вся "кухня" скрыта от пользователя (хотя это и не всегда хорошо!). Практически сразу получаем следующий результат.

Как и ранее, в левой части равенства неактивная форма процедуры Limit () используется для символьного отображения предела, в то время как процедура limit () в правой части равенства необходима непосредственно для его вычисления.


Экстремум функции

Исследование функции на экстремум подразумевает, как известно, нахождение производной и определение точек, в которых эта производная равна нулю. Далее, по знаку второй производной в найденных точках, определяется тип экстремума — максимум или минимум (если вторая производная меньше нуля — максимум, если больше нуля — минимум).

Задача 2.18

Исследовать на экстремум функцию у(х) = хm(1-х)n.

Сначала определим саму функцию.

Затем найдем ее производную.

Последняя как несложно проверить, равна следующему.

Выражение можно было бы упростить, но для решения поставленной задачи это не представляется необходимым. Далее определяем точки, в которых производная равна нулю. Воспользуемся процедурой solve(), в качестве параметров которой указываем решаемое уравнение и переменную, относительно которой это уравнение следует решить.

В данном случае экстремум предполагается только в одной точке — в ней производная равна нулю. Это легко проверить. Поступим следующим образом.

Выше переменной х присвоено значение, при котором производная функции должна равняться нулю. Переменная m возвращает значение производной в точке х, а этой переменной только что было присвоено значение.

Полученное выражение достаточно громоздко, однако вводить в заблуждение это не должно. После упрощения получаем, как и ожидалось, нуль.

Для определения типа экстремума нужно определить значение второй производной в этой точке. Вторая производная равна:

В этом случае вместо переменной х использована новая переменная t. Объясняется это довольно просто — переменной х было присвоено значение, после чего она, так сказать, стала числом. По числу дифференцировать нельзя. Поэтому существовало две альтернативы: либо "восстановить" переменную х с помощью команды х: = 'х', либо использовать новую переменную, что и было сделано.

Поскольку интерес представляет значение второй производной в конкретной точке, следует выполнить команду присвоения (после этой команды t автоматически будет определять нужную точку).

Переменная среды %% возвращает результат выполнения предпоследней команды, т.е. значение второй производной, но уже в нужной точке (по-скольку предьщущей командой параметру t было присвоено соответствующее Значение).

После упрощения получаем следующее.

Для определения типа экстремума важен знак полученного выражения. Определяется этот знак с помощью процедуры sign().

Поскольку выражение отрицательно, приходим к выводу, что найденная точка является точкой максимума.

Процедуру исследования функции на экстремум можно практически полностью переложить на плечи Maple.

Задача 2.19

Найти экстремумы функций.

Сразу определим процедуру, которая и возьмет на себя основную работу по исследованию функции на экстремум. Комментарии к процедуре размещены ниже.

Параметром процедуры является функция (f), исследуемая на экстремум. После зарезервированного слова local перечисляются локальные переменные (они доступны и используются только внутри процедуры): х — чтобы задать аргумент функции f; s — для записи значения исследуемой на экстремум точки; переменные А и В нужны при работе со второй производной в точке предполагаемого экстремума; ListOf Points — список точек предполагаемого экстремума; и, наконец, ResultList — список результатов исследования по каждой точке.

В первую очередь в процедуре определяются точки предполагаемого экстремума. Для этого находятся точки, в которых производная равна нулю (solve(diff (f (x),x)=0,x); здесь результатом операции является последовательность решений), а результат этого вычисления, заключенный в квадратные скобки (это уже список), присваивается в качестве значения переменной ListOf Points. Таким образом, все точки, исследуемые на экстремум, являются элементами списка ListOf Points.

На следующем шаге инициализируется переменная ResultList (в качестве начального значения ей присваивается пустой список). Далее идет один большой оператор цикла (начинается с for ... do и заканчивается end do). В рамках этого оператора перебираются все значения s из списка ListOfPoints (for s in ListOfPoints), т.е. с помощью переменной s пересматриваются точки, в которых производная функции равна нулю. Для каждой из этих точек сначала вычисляется вторая производная (в виде общей зависимости от х), затем переменной х присваивается значение исследуемой на экстремум точки, переменной А — значение второй производной в этой точке, а переменной В присваивается это же значение, но в формате числа с плавающей точкой — для этого используется процедура evalf(), которая преобразует указанное в качестве ее аргумента выражение в формат числа с плавающей точкой. Переменная В будет использоваться в условных операторах (if) при проверке знака второй производной в данной точке.

На заметку
Дело в том, что Maple пытается получить решение уравнения, в котором производная приравнена к нулю, в аналитическом виде. Но если такое аналитическое выражение в дальнейшем нужно исследовать на предмет того, больше оно нуля или нет, исследование это будет проводиться согласно правилам преобразования алгебраических выражений, т.е. тоже аналитически. Может оказаться, что Maple будет не в состоянии преобразовать выражение настолько, чтобы стало очевидно, больше оно нуля или нет. Кроме того, на такие преобразования может уйти много времени. Поэтому и используется переменная В; при сравнении чисел в форме с плавающей точкой используются другие алгоритмы, которые работают быстрее.

Далее следует структура из вложенных условных операторов (структура if ... fi).

На заметку
Вместо структуры окончания условного оператора if можно использовать конструкцию end if. Так, безусловно, длиннее, зато понятнее!

Если вторая производная в точке меньше нуля (В<0), в список результатов вводится запись с указанием точки и того, что это точка максимума, а в случае В>0 — что это точка минимума. Если же В=0, вносится запись о том, что необходимо дополнительное исследование. (В этих случаях необходимо осуществлять поиск производных более высоких порядков.) Объединение строк при этом выполняется с помощью процедуры cat(). Данная процедура используется для объединения строк и названий и формирует результат в виде строки (названия), в которой объединены все ее аргументы в порядке следования. Например, рассмотрим команду cat ("в точке х=", convert (x, string ),"-максимум "). Первый и третий аргументы процедуры cat() заключены в двойные кавычки и являются строками. Они будут объединены в таком виде, как есть. Интерес представляет второй аргумент процедуры cat() — процедура convert(), которая используется для преобразования типов. Первый ее аргумент (х) является числовым (или символьным) значением точки, исследуемой на экстремум. Это значение преобразуется в строчной формат, о чем свидетельствует опция string. Поэтому в результате объединения получаем строку вида "в точке х=значение — максимум". Такие строки и составляют список ResultList, т.е. являются элементами этого списка.

После условных операторов, но перед окончанием оператора цикла (напоминаем, заканчивается конструкцией end do) размещается команда "восстановления" переменной х (х: = 'х'); иначе на следующем этапе нельзя было бы вычислить производную второго порядка по х. Наконец, последней командой в теле процедуры выводится список с результатами исследования.

Теперь с помощью описанной процедуры можем исследовать на экстремум следующие функции:



Внимание!
Как можно видеть, сообщение о том, что в точке х=2 необходимо дополнительное исследование, выведено дважды. Причина в том, что при вычислении производной и определении точек, где она равна нулю, корень х=2 имеет двойную кратность, поэтому процедура solve () в последовательности решений этот корень выводит дважды; отсюда и два сообщения. Во избежание этого следовало бы определить переменную ListOf Points не как список, а как множество. Тогда два одинаковых решения будут интерпретироваться как один элемент множества.

Не составляет большого труда написать процедуру, которая при исследовании функции на экстремум будет вычислять, если это необходимо, и производные более высоких порядков, чем второй. Принципиально нового ничего в этом нет, поэтому читатель при желании может сделать это самостоятельно.


Частные производные

Для вычисления частных производных применяется процедура diff (). В случае функции нескольких переменных через запятую указываются те из них, по которым берется производная (при этом допускается использование оператора $).

На заметку
Частной производной от функции нескольких переменных называется производная по одной из этих переменных при фиксированных прочих.

При вычислении частных производных допускается также использование оператора D. После оператора в квадратных скобках указывают индекс, соответствующий номеру аргумента функции, по которому вычисляется производная. Например, для функции трех переменных u(x,y,z) производная может быть вычислена с помощью команды D[2,3](u)(x,y,z).

Задача 2.20

Найти частные производные первого и второго порядков от функции и(х,у) = х'+у*-4х2у2.

Определим функцию двух аргументов (аргументы указываются через запятую и заключаются в скобки).

Используя для записи результата процедуру дифференцирования в неактивной форме (Diff ()), вычислим частную производную по х.

Прочие производные вычисляются аналогично.

Стоит обратить внимание на то, что при вычислении частных производных можно использовать оператор $.

Однако если производных много и они достаточно высокого порядка, запись отдельной команды для каждой такой производной становится утомительным занятием. Иногда в таких случаях полезно определять специальные процедуры, как в следующем примере.

Задача 2.21

Найти частные производные первого и второго порядков от функции и (х,у) = х".

Как и раньше, определяем функцию.

Однако чтобы не вводить для вычисления производных пять отдельных команд, определим всего одну процедуру, которая будет вычислять все производные вплоть до второго порядка от функции двух неизвестных.

Функция и является параметром процедуры. Первый цикл с оператором do используется для вычисления производных первого порядка. Условие s in x,y указывает на то, что переменная s пробегает значения элементов из последовательности х;у, по которым и берется производная. Так же организован и второй цикл, в котором вычисляются вторые производные, однако он содержит еще один вложенный цикл. В процедуре использована также процедура print(), которая выводит на экран выражение, указанное ее параметром (выражение предварительно вычисляется).

Чтобы отобразить все частные производные функции и, достаточно указать эту функцию в качестве параметра процедуры AllDeriv().

В частности, можно проверить, что смешанные производные не зависят от порядка дифференцирования.

Совет
Как можно видеть, выводимые на экран выражения для частных производных допус-некоторое упрощение. Чтобы это выполнялось автоматически, соответствующую команду (например, simplify()) можно разместить прямо в теле процедуры.


Дифференцирование неявно заданных функций нескольких переменных

При дифференцировании неявно заданных функций нескольких переменных, как и в случае функции одной переменной, используется процедура implicitdiff(). В данном случае несколько изменяется способ ее вызова, а именно увеличивается число параметров.

Определим уравнение Eq, посредством которого неявно задается функция z(x,y).

Переменную S представим как последовательность списков. Каждый список состоит из двух элементов, по которым следует брать производные.

Теперь запрограммируем вычисление производных второго порядка. Для этого введем переменную s, которая будет принимать значения элементов последовательности S, т.е. переменная s является списком (состоящим из двух элементов).

В рамках оператора цикла в левой части равенства вызывается неактивная форма процедуры Diff() для вывода на экран непосредственно символа вычисления производной, а в правой части — процедура implicitdiff (), посредством которой данная производная и вычисляется. В качестве аргументов последней указано определяющее функцию уравнение (Eq), функция, от которой вычисляется производная (z), и две переменные, по которым берут производную (s[l) — первый элемент списка s, a s[2] — второй элемент списка s).

В этом случае задаем два уравнения Eql и Eq2, из которых определяются функции у(х) и z(x).

Параметрами процедуры implicitdiff () являются множество с элементами-уравнениями, определяющими функции ({Eql,Eq2}), множество с элементами-функциями ({y,z}), функция, от которой берется производная (z), и, наконец, переменная, по которой берется производная (х).

Производная второго порядка вычисляется так же, как и производная первого порядка, только переменная дифференцирования указывается дважды.

В последнем выражении представим полиномы в виде произведения с помощью процедуры factor().

В результате вычислительному ядру Maple удалось сгруппировать знаменатель полученного выражения. При желании это выражение можно разложить на сумму дробей.

В полученных выражениях для производных функции г по переменной х присутствует, помимо х, еще и у. С другой стороны, функция г неявно определяется как функция только одной переменной. Проблема снимается, если вспомнить, что уравнением Eq2 переменная у определяется (неявно) как функция переменной х.


Замена переменных

Очень часто в выражениях, содержащих производные, приходится переходить к новым переменным.

Внимание!
Если необходимо выполнить замену переменных в дифференциальном выражении, I в Maple в пакете PDEtools есть процедура dchange(). Первым параметром этой процедуры указывают равенство (или множество, состоящее из равенств), определяющее переход от старых переменных к новым, а вторым параметром — выражение, в котором следует выполнить эту замену. Кроме того, может использоваться ряд опций, информация о которых есть в справочной системе Maple. Ниже приведен пример использования процедуры dchange().

Сначала подключаем пакет.

Новая переменная вводится согласно соотношению х =ехр(/)

После упрощения получаем следующее

Замену переменных можно выполнить и в том случае, если переменных несколько. Рассмотрим выражение

В этом выражении перейдем к новым переменным и и v согласно соотношениям х = uv и у = (и1 -v2)/2 , и после упрощения получим следующее.

Процедура dchange() полезна во многих случаях. Однако желательно уметь обходиться и без нее. Рассмотрим, как без специальных команд приведения выражений к новым переменным выполнить подобные замены.

Задача 2.24

Преобразовать к полярным координатам уравнение у'(х) =x+y/x-y

Опишем процедуру, посредством которой в дальнейшем будет осуществляться переход к новым координатам. Параметрами процедуры будут новая переменная t, новая функция u(t) и две функции f и g, посредством которых выполняется переход от старых переменной и функции к новым.

Тело процедуры состоит из одного выражения, определяющего производную от старой функции по старой переменной в терминах новой функции и новой переменной.

Определим функции перехода от декартовой системы координат к полярной.

Теперь запишем декартовы координаты через полярные (это понадобится в дальнейшем).

Новая процедура позволяет выразить производную в полярных координатах.

Исходное уравнение будет записано следующим образом.

Поскольку предварительно декартовы координаты были выражены через полярные, правая часть равенства будет представлена тоже в полярной системе координат.

В полученном уравнении выделим производную. Для этого решим уравнение относительно этой производной.

Таким образом, можем записать окончательный результат.

В последней команде левая часть уравнения нужна для формального отображения символа производной. Однако следует иметь в виду, что вычислительным ядром Maple левая часть уравнения как производная не интерпретируется. Чтобы равенство можно было в дальнейшем трактовать как дифференциальное уравнение, следует воспользоваться процедурой Diff().

Задача 2.25

Перейти к новым переменным и , v, w в уравнении

В отличие от предьщущего случая, здесь выражение содержит частные производные, а функции (старая и новая) являются функциями двух переменных.

Определим уравнение, которое следует преобразовать.

Теперь у процедуры три параметра-функции, определяющие правила перехода от старых переменных и функции к новым.

В соответствии с правилами перехода к новым переменным, определяем юцедуру, аргументами которой выступают законы перехода F, G и Н к новым параметрам u, v и w.

Уравнения Eql i1 E(J2 связывают старые производные с новыми. Система этих уравнений решает относительно производных от функции z (команда solve()). мее задаем закон61 перехода от старых переменных и функции к новым.

Переменной S присваиваем в качестве значения результат выполнения процедуры преобразования производных. > S:=VarChange(F,G,H,u,v,w);

После этого в уравнении Eq производные от z по х и у, а также сами пере-Гменные и функцию следует выразить через новые параметры. Выполняется такая замена с помощью процедуры subs().

На заметку
Ссылки rhs (S [ 1 ]) и rhs (S [ 2 ]) возвращают выражения для частных производных функции z — это правые части первого и второго равенств, являющихся элементами множества S.

Полученное таким образом уравнение умножим на знаменатель правой части (знаменатель возвращается процедурой denom{)).

После упрощения имеем следующее.

Это уравнение, в частности, можно сократить на экспоненту.

Если уравнение сократить еще на один общий множитель, получим окончательный ответ.

Разумеется, сокращение совсем не обязательно было выполнять "в два этапа", но так нагляднее.


Экстремум функции нескольких переменных

Исследование функции нескольких переменных на экстремум отличается от того, что выполняется в случае функции одной переменной. Однако "базовый" принцип все тот же — сначала следует найти точки, в которых производные равны нулю.

На заметку
В случае функции двух переменных/*, у) исследование на экстремум заключается в следующем: сначала находятся точки, в которых производная данной функции равна нулю, а затем составляется матрица размером 2x2 с элементами Ао, которые равны второй производной по i-му и j-му аргументам в точке, где равна нулю производная.

Экстремум имеет место, если определитель матрицы больше нуля. Если диагональные элементы матрицы при этом больше нуля, значит, исследуемая точка — точка минимума. Если диагональные элементы меньше нуля — это точка максимума.

Задача 2.26

Исследовать на экстремум функцию z = х* +у* -х2 -2ху -у2.

Задаем функцию z, зависящую от двух переменных х и у.

На следующем этапе нужно решить систему двух уравнений, в которых ча-1 стные производные от функции z первого порядка приравнены к нулю. Но сначала эту систему (назовем ее SysEq) следует описать.

Теперь решаем систему.

В полученном множестве представлено три решения (каждое из которых L также является множеством): первые два действительные, а третье, представленное посредством функции RootOf(), комплексное. Последнее в данном случае интереса не представляет, поэтому его не рассматриваем.

Приведенная ниже процедура вычисляет производную в точке с координатами х и у порядка п по первому аргументу и порядка m по второму аргументу.



Совет
Эту же процедуру можно было определить иначе: F:=(x,у,n,m)->D[n.m] (z) (x,у).

Матрица А — это матрица вторых производных исследуемой на экстремум функции в первой точке предполагаемого экстремума, в то время как матрица В — во второй точке.

Чтобы выяснить, являются ли исследуемые точки экстремальными, нужно вычислить детерминанты определенных выше матриц. В пакете linalg для этих целей предусмотрена процедура det(), которую можно вызвать следующим образом.

Поскольку детерминант меньше нуля, то в первой точке экстремума нет. Ниже показано, как вызвать все ту же процедуру, но с несколько иным синтаксисом (сначала подключается пакет).

Здесь детерминант больше нуля. Следовательно, вторая точка является точкой экстремума.

Внимание!
В Maple 9 процедуры пакета linalg распределены по пакетам LinearAlgebra и VectorCal-culus. Однако на пакет linalg можно по-прежнему ссылаться, что и было сделано выше.

Необходимо определить знак первого диагонального элемента матрицы (знак другого диагонального элемента будет таким же).

Поскольку этот элемент больше нуля, приходим к выводу, что точка (х=1, у=1) является точкой минимума.

На заметку
Ссылка на элемент матрицы в выполняется в виде В[ i, j ], где i и j — индексы вызываемого элемента.

Задача 2.27

Найти экстремальное значение неявно заданной функции z от переменных х

И у, если хг+у2 +z* -2x -2y-4z-l0 = 0.

В данном случае имеем дело с неявно заданной функцией. Вначале запишем уравнение.

После этого достаточно просто вычислить частные производные от z по х и у.

На первое выражение можно сослаться посредством переменной среды %%, второе — переменной *. Приравниваем их к нулю, заключаем в фигурные и, указав в качестве параметра процедуры solve(), решаем такую систему относительно переменных х и у.

Частные производные одновременно равны нулю только в одной точке Цшеется в виду точка на множестве х и у).

Вычисляем производные второго порядка и присваиваем их в качестве ачений переменным All, A12 и А22 (числа в названиях переменных соответ-вуют номерам аргументов, по которым вычисляются производные). All:=implicitdiff(Eq,z,x$2);

Теперь переменным х и у присваиваем соответствующие значения.

Далее следует выяснить, чему равно значение функции при данных значениях переменных.

При этом выражения для определенных ранее переменных существенно упрощаются.

Детерминант определим следующим образом (переменная Determ).



Внимание!
В данном случае никаких матриц мы не вводили. Но если бы ввели, то элементы матрицы вторых производных определялись через переменные All, A12 и А22, а детерминант (определитель) матрицы был именно таким, как значение переменной Determ.

Осталось проверить значение переменной Determ в каждой из двух точек (по z).

Детерминант больше нуля, а переменная АН отрицательна (это был бы диагональный элемент матрицы).

Вывод: исследуемая точка (x=l,y=-l,z=6) — точка максимума. В другой точке имеем следующее.

В данном случае получили, что и детерминант, и All — больше нуля. Сле-|довательно, точка (x=l,y=-l,z=-2) — точка минимума. 

Задача 2.28

Найти точки условного экстремума функции и = хг +/, если х/а+у/Ь = 1.

Это задача на условный экстремум, и решать ее будем методом неопределенных множителей Лагранжа.

Вводим функцию z, которая, помимо х и у, зависит еще и от параметра А.

Инициализируем переменную-множество EqSeq для записи в нее в последующем уравнений, определяющих точки возможного экстремума.

На следующем этапе заполняем это множество уравнениями. Каждое такое уравнение — приравненная к нулю производная по одной из переменных х, у или по параметру к. Весь процесс автоматизирован посредством использования оператора цикла for.

В рамках этого оператора при помощи переменной t перебираются все параметры, по которым берется производная, сама производная приравнивается к нулю, а уравнение записывается с помощью оператора объединения множеств union в переменную EqSeq.

В результате получаем следующую систему уравнений (она записана в переменной EqSeq в виде множества уравнений).

Теперь эту систему решаем.

Параметру к присваиваем найденное выше значение.



На заметку
Ссылка rhs(op(l)[3]) выполнена на правую часть равенства, которое является третьим [элементом множества, полученного на предыдущем этапе при решении системы уравнений. От сеанса к сеансу вычислительное ядро Maple может выводить элементы множества в разной последовательности. Другими словами, уравнение для X не обяза-ргельно будет третьим элементом множества. Поэтому индекс (в данном случае 3) следует указывать только после решения системы уравнений, когда в области вывода отображен результат.

Далее определяем второй дифференциал.

Ниже показано, как с помощью процедуры ор() можно "извлечь" накла-лваемое на переменные условие (оно необходимо для установления взаимо-зи между дифференциалами переменных х и у).

На заметку
умеется, можно было просто задать данное условие в явном виде. Но, как поется в песне, "нормальные герои всегда идут в обход".

Определяем операнды исходной функции г.

Из этой последовательности интерес представляет уравнение, накладывающее ограничение на переменные. С точностью до коэффициента оно будет таким:

Снова разбиваем уравнение на операнды.

Теперь само уравнение используем для того, чтобы связать между собой дифференциалы dx и dy.

Дифференциал dy выражаем через dx.

Полный дифференциал тогда равен следующему.

Группируем слагаемые при dx, в результате чего получим:

Определяем знак этого выражения.

Таким образом, приходим к выводу, что функция имеет условный минимум.


Заключительные замечания

Рассмотренные в этой главе задачи достаточно просты, и их решение не вызывает принципиальных сложностей. Решения основываются на использовании базовых, наиболее общих процедур Maple и демонстрируют принципы организации Maple и схемы реализации соответствующих алгоритмов. Нет ничего страшного, если математическая постановка той или иной задачи бы-не совсем понятна. Главное, чтобы читатель уяснил для себя, что и как де-ияают команды Maple. Это будет важно в дальнейшем.


Контрольные вопросы

Какие из приведенных команд корректны? Каков результат их выполнения? a)diff(x*2,x); б)D(cos)(x); в)diff(x,l); г)D(l); Переменная у описана как y:=t*sin(x). Чему равен результат выполнения следующих команд? a)diff(y,x); 6)diff(y,x$3); в)diff(yft); г)diff(diff(y,x),t); Переменная у описана следующим образом: y:=t->t*sin(x). Чему равен результат выполнения следующих команд? a)diff(y(z),x); 6)diff(y(x),x); в)D(y)(z); г)diff(diff(y(z),z),z); Переменная F описана как F:=x+y. Каков результат выполнения следующих команд? а) implicitdiff(F,y,x); б) implicitdiff(F,x,y); в)diff(F,x); г)diff(F,x); Если имеет место u:=x*2*sin(y), то что получится в результате выполнения представленных ниже команд? a)diff(u,x,y); 6)diff(u,x,y$2); в)diff(u,y,x,y); г)diff(u,x$3,y$5); Если олисать переменную и как u:=(x,y)->x*y*z, то каков будет результат выполнения следующих команд? a)diff(u(t,s),z,s); 6)D[l,2](u)(x,y); в)diff(D[l,l](u)(y,z),z); Пусть имеет место следующее (в порядке очередности выполнения): u:=(x,y)->x*sin(y), z:=x*y, t:=zA2. Что получится, если выполнить команду: a)diff(u{z,y),x); 6)D[l,2](u)(x,t); в) implicitdiff(u(x,y)=0,y,x); г)implicitdiff(y*diff(D[l](u)(t,x),x),y,x);