Частные производные
Для вычисления частных производных применяется процедура diff (). В случае функции нескольких переменных через запятую указываются те из них, по которым берется производная (при этом допускается использование оператора $).
На заметку
Частной производной от функции нескольких переменных называется производная по одной из этих переменных при фиксированных прочих.
При вычислении частных производных допускается также использование оператора D. После оператора в квадратных скобках указывают индекс, соответствующий номеру аргумента функции, по которому вычисляется производная. Например, для функции трех переменных u(x,y,z) производная может быть вычислена с помощью команды D[2,3](u)(x,y,z).
Дифференцирование неявно заданных функций нескольких переменных
При дифференцировании неявно заданных функций нескольких переменных, как и в случае функции одной переменной, используется процедура implicitdiff(). В данном случае несколько изменяется способ ее вызова, а именно увеличивается число параметров.
Определим уравнение Eq, посредством которого неявно задается функция z(x,y).
Экстремум функции
Исследование функции на экстремум подразумевает, как известно, нахождение производной и определение точек, в которых эта производная равна нулю. Далее, по знаку второй производной в найденных точках, определяется тип экстремума — максимум или минимум (если вторая производная меньше нуля — максимум, если больше нуля — минимум).
Экстремум функции нескольких переменных
Исследование функции нескольких переменных на экстремум отличается от того, что выполняется в случае функции одной переменной. Однако "базовый" принцип все тот же — сначала следует найти точки, в которых производные равны нулю.
На заметку
В случае функции двух переменных/*, у) исследование на экстремум заключается в следующем: сначала находятся точки, в которых производная данной функции равна нулю, а затем составляется матрица размером 2x2 с элементами Ао, которые равны второй производной по i-му и j-му аргументам в точке, где равна нулю производная.
Экстремум имеет место, если определитель матрицы больше нуля. Если диагональные элементы матрицы при этом больше нуля, значит, исследуемая точка — точка минимума. Если диагональные элементы меньше нуля — это точка максимума.
Вычисление производных
Вычисление производных явно заданных функций Вычисление производных функций, заданных параметрически Производные от неявно заданных функций Производные высших порядков Вычисление пределов Экстремум функции Частные производные Дифференцирование неявно заданных функций нескольких переменных Замена переменных Экстремум функции нескольких переменных Заключительные замечания Контрольные вопросы
Контрольные вопросы
Какие из приведенных команд корректны? Каков результат их выполнения? 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);
На заметку
С точки зрения Maple функция и оператор — практически одно и то же. Под функцией будем, ради удобства, понимать результат действия оператора на аргумент. Иногда, если это не приводит к недоразумениям, функцией будем также называть и соответствующий оператор.
Далее имеет смысл остановиться более детально на решении конкретных задач.
На заметку
Доступ к справочной информации о процедуре combine (), как и о прочих процедурах и командах, можно получить, разместив в рабочем листе курсор на вызове этой процедуры и нажав <F1>. Там можно найти полезную информацию об используемых при преобразовании выражений алгоритмах, а также об опциях, которые позволяют использовать те или иные алгоритмы.
Далее осталось только оформить результат (хотя это и не обязательно).
На заметку
Можно для этих целей применять неактивную форму команды дифференцирования Diff {}. Однако в этом случае используется синтаксис как для частной производной, что математически не совсем корректно.
Следует иметь в виду, что для вычисления производной совсем не обязательно сначала описывать саму функцию. Можно поступить проще. Рассмотрим следующий пример (символ ^ означает возведение в степень).
На заметку
Если при вызове процедуры collect() вторым параметром указать не 1/х, а х, результат не изменится. Причина в том, что 1/х — это х в степени -1.
Вычислительное ядро Maple достаточно эффективно работает не только с непрерывными функциями, но и с такими, которые имеют точки (или области) разрывов.
На заметку
В Maple есть функция trune(), действие которой во многом аналогично действию функции floor)). Однако функция trunc() выделяет целую часть аргумента "в направлении О", в то время как функция floor () выделяет ближайшее целое число, не превышающее данное, указанное как аргумент. Для положительных чисел действия обеих функций эквивалентны, а для отрицательных чисел результаты отличаются на единицу.
Дальше процедура вычисления производной уже знакома.
На заметку
Если диапазон изменения не указать, то по умолчанию график строится на интервале -10.. 10.
Следующие параметры являются необязательными. В приведенном примере это заголовок (опция title) и шрифт для этого заголовка (опция title-font). Значения этих опций указываются после знака равенства: заголовок (его значение) заключается в двойные кавычки, а шрифт — это список (в квадратных скобках через запятую указываются тип шрифта, его стиль и размер). Подробнее об опциях процедуры plot() можно узнать из приложения в конце книги. Там же имеется и информация о возможных значениях этих опций.
На заметку
Списком в Maple называется последовательность разделенных через запятую элементов (самого разного характера), заключенная в квадратные скобки. В списке имеет значение порядок следования элементов — при изменении очередности элементов по определению полагают, что список изменился. Последовательность Maple — это группа (в обычном, не математическом значении этого слова) выражений, разделенных запятыми. Пример последовательности: x,sin(t),5,3*6. Пример списка: [x,sin(t),5,3*6].
Если последовательность заключить в фигурные скобки, получится множество. От списка множество отличается тем, что не имеет значения ни порядок следования, ни количество совпадающих элементов.
На заметку
Чтобы при вводе кода перейти на следующую строку, не "спровоцировав" при этом вычислительное ядро Maple на выполнение вводимой команды, следует нажать <Shift+Enter>.
На заметку
Ссылка на элемент матрицы в выполняется в виде В[ i, j ], где i и j — индексы вызываемого элемента.
На заметку
Ссылка rhs(op(l)[3]) выполнена на правую часть равенства, которое является третьим [элементом множества, полученного на предыдущем этапе при решении системы уравнений. От сеанса к сеансу вычислительное ядро Maple может выводить элементы множества в разной последовательности. Другими словами, уравнение для X не обяза-ргельно будет третьим элементом множества. Поэтому индекс (в данном случае 3) следует указывать только после решения системы уравнений, когда в области вывода отображен результат.
Далее определяем второй дифференциал.
На заметку
умеется, можно было просто задать данное условие в явном виде. Но, как поется в песне, "нормальные герои всегда идут в обход".
Определяем операнды исходной функции г.
На заметку
Тот факт, что переменные х и у использовались в описании процедуры, не мешает описывать их как функции параметра. Дело в том, что Maple предусмотрительно различает переменные, используемые при описании процедур, и переменные, используемые непосредственно в главном документе. Даже если они имеют одинаковые названия! Исключением являются переменные, описанные в процедуре в разделе global (об этом речь пойдет несколько позже). Это так называемые глобальные переменные, и они доступны даже вне тела процедуры.
Теперь используем новую процедуру для вычисления производной.
На заметку
Одинарные кавычки используются для формирования названий. Если переменной не присвоено значение, то по умолчанию ее значением является ее же название. Поэтому выше для "восстановления'' переменных им в качестве значения присваиваются собственные названия.
Теперь можно переходить к полярным координатам.
На заметку
По умолчанию переменные, на которые наложены ограничения, отображаются в рабочих листах со знаком тильды ("). Этот режим можно отключить. Для этого, например, в Maple 7 в меню Options (Сервис) следует выбрать подменю Assumed Variables (Ограничения на переменные), содержащее три команды. Если выбрать Л/о Annotation (Не выделять), то такие переменные никаким специальным образом в рабочем документе выделяться не будут. При выборе команды Trailing Tildes (Замыкающие тильды) переменные будут отображаться с тильдами (этот режим, как отмечалось, используется по умолчанию). Можно выбрать команду Phrase (Фраза), и тогда переменная, на которую наложено ограничение, будет отображаться с фразой with assumption on (с предположением относительно). В Maple 9 можно сделать то же самое, выполнив команду File (<t>av\n)<>Preferences (Настройки) и щелкнув на корешке вкладки I/O Display (Отображение данных ввода-вывода), в результате чего будут доступны соответствующие команды. Речь об этом уже велась в главе 1.
Далее воспользуемся уравнением кривой.
На заметку
Таким образом, если после переменной дифференцирования указать оператор $ и целое неотрицательное число, то это число будет определять порядок производной. Подобный подход весьма удобен в тех случаях, когда порядок производной достаточно велик. Поскольку результатом выполнения операции х$3 является последовательность х, х, х, то допустимо вместо $3, например, сразу писать х,х,х — результат от этого не изменится.
Задача 2.13
Найти 100-ю производную функции y(x) = xsh(x).
Опишем дифференцируемую функцию.
На заметку
Чтобы этот код не отображался, в конце процедуры достаточно поставить двоеточие.
В процедуре описана локальная переменная t, которая доступна только внутри тела процедуры. Далее следует команда, определяющая работу процедуры paramdiff (). Согласно этой команде, переменной t в соответствие ставится (->) параметрическая производная от у по х (diff (y(t),t)/diff (x(t),t)), а сама переменная t при этом является параметром.
Теперь можно вычислить первую производную.
На заметку
То, что в предыдущей команде при вызове paramdiff () в качестве аргумента указана переменная t, которая формально идентична локальной переменной в описании этой процедуры, — простое совпадение. Можно было бы указать и иной параметр, например р или v.
После упрощения получим следующее.
На заметку
Дело в том, что Maple пытается получить решение уравнения, в котором производная приравнена к нулю, в аналитическом виде. Но если такое аналитическое выражение в дальнейшем нужно исследовать на предмет того, больше оно нуля или нет, исследование это будет проводиться согласно правилам преобразования алгебраических выражений, т.е. тоже аналитически. Может оказаться, что Maple будет не в состоянии преобразовать выражение настолько, чтобы стало очевидно, больше оно нуля или нет. Кроме того, на такие преобразования может уйти много времени. Поэтому и используется переменная В; при сравнении чисел в форме с плавающей точкой используются другие алгоритмы, которые работают быстрее.
Далее следует структура из вложенных условных операторов (структура if ... fi).
На заметку
Вместо структуры окончания условного оператора if можно использовать конструкцию end if. Так, безусловно, длиннее, зато понятнее!
Если вторая производная в точке меньше нуля (В<0), в список результатов вводится запись с указанием точки и того, что это точка максимума, а в случае В>0 — что это точка минимума. Если же В=0, вносится запись о том, что необходимо дополнительное исследование. (В этих случаях необходимо осуществлять поиск производных более высоких порядков.) Объединение строк при этом выполняется с помощью процедуры cat(). Данная процедура используется для объединения строк и названий и формирует результат в виде строки (названия), в которой объединены все ее аргументы в порядке следования. Например, рассмотрим команду cat ("в точке х=", convert (x, string ),"-максимум "). Первый и третий аргументы процедуры cat() заключены в двойные кавычки и являются строками. Они будут объединены в таком виде, как есть. Интерес представляет второй аргумент процедуры cat() — процедура convert(), которая используется для преобразования типов. Первый ее аргумент (х) является числовым (или символьным) значением точки, исследуемой на экстремум. Это значение преобразуется в строчной формат, о чем свидетельствует опция string. Поэтому в результате объединения получаем строку вида "в точке х=значение — максимум". Такие строки и составляют список ResultList, т.е. являются элементами этого списка.
После условных операторов, но перед окончанием оператора цикла (напоминаем, заканчивается конструкцией end do) размещается команда "восстановления" переменной х (х: = 'х'); иначе на следующем этапе нельзя было бы вычислить производную второго порядка по х. Наконец, последней командой в теле процедуры выводится список с результатами исследования.
Теперь с помощью описанной процедуры можем исследовать на экстремум следующие функции:
На заметку
Ссылки rhs (S [ 1 ]) и rhs (S [ 2 ]) возвращают выражения для частных производных функции z — это правые части первого и второго равенств, являющихся элементами множества S.
Некоторые параметры графиков можно изменять
Некоторые параметры графиков можно изменять уже после их отображения в области вывода непосредственно с помощью кнопок контекстной панели двухмерной графики vu команд раскрывающегося меню. Описание контекстной панели для двухмерных и трехмерных фафиков приведено в главе 1, а описание опций можно найти в приложении.
Следует также иметь в виду, что внешний вид фафиков, которые пользователь увидит на экране, если введет предложенные команды, может не соответствовать тому, что показано в книге. В этом случае желаемого результата можно добиться с помощью уже упомянутой контекстной панели или раскрывающегося меню. Как будет показано далее, внешний вид фафиков можно задавать непосредственно с помощью опций процедуры plot(). Однако на данном этапе это не является первостепенной задачей.
В следующем примере показано, как вычисляются производные от кусочно-гладких функций.
процедуры пакета linalg распределены
В Maple 9 процедуры пакета linalg распределены по пакетам LinearAlgebra и VectorCal-culus. Однако на пакет linalg можно по-прежнему ссылаться, что и было сделано выше.
Необходимо определить знак первого диагонального элемента матрицы (знак другого диагонального элемента будет таким же).
В данном случае никаких матриц
В данном случае никаких матриц мы не вводили. Но если бы ввели, то элементы матрицы вторых производных определялись через переменные All, A12 и А22, а детерминант (определитель) матрицы был именно таким, как значение переменной Determ.
Осталось проверить значение переменной Determ в каждой из двух точек (по z).
в списке при отображении заданной
Именно наличие третьего параметра в списке при отображении заданной в параметриче-V ском виде функции является индикатором того, что строится график параметрической функции, а не графики двух разных функций.
Поскольку в исходных параметрических зависимостях х и у зависят от параметров а и b, при построении графиков эти зависимости следует поделить на соответствующие коэффициенты.
В пакете plots имеется процедура
В пакете plots имеется процедура changecoords (), название которой совпадает с названием стандартной процедуры changecoords (), доступной и без подключения пакета. Выше можно видеть сообщение о том, что в результате подключения пакета эта процедура была переопределена.
Первым аргументом процедуры является уравнение, задающее функцию, после чего следует диапазон изменения переменных х и у. Остальные опции уже использовались ранее и читателю знакомы, кроме опции thickness, которая определяет толщину линии (значение — целое число; в предыдущих версиях Maple — в диапазоне от 0 до 3, а в Maple 9 — от 0 до 15).
позволяет решить уравнение, указанное первым
Процедура solve () позволяет решить уравнение, указанное первым параметром, относительно второго параметра. Однако в качестве значения решение этому второму параметру не присваивается! Поэтому в приведенной выше команде переменной у присваивается (:=) в качестве значения решение уравнения относительно переменной у (solve(*,y)). Если этого не сделать, то после выполнения процедуры solve(%,y) значение переменной у не изменится.
Кроме того, не следует забывать о том, что если решений уравнения несколько, результатом выполнения процедуры solve () является последовательность этих решений
Если теперь вызвать процедуру implicitplot(), указав пергым параметром все то же уравнение, то оно будет задавать зависимость z от х: дело в том, что хотя формально в уравнении присутствует у, вычислительным ядром Maple в уравнении эта переменная заменяется ее значением, выраженным через г и х.
трактуется ядром Maple как комментарий
Текст после знака # трактуется ядром Maple как комментарий и при выполнении команд игнорируется.
Сделать это можно, присвоив переменным г и ф в качестве значений "самих себя".
Для того чтобы на переменную
Для того чтобы на переменную наложить какие-то ограничения, как было показано выше, используется процедура assume (). Например, можно определить переменную а как такую, что больше 1: assume(a>l). Однако если относительно некоторой переменной процедура assume)) применяется несколько раз, "силу" будет иметь только последняя из этих процедур. Например, если применялась вначале команда assume (а>1), а затем assume (а<2), то переменная а будет интерпретироваться как такая, что меньше 2. Чтобы определить переменную со значением в диапазоне от 1 до 2, следует воспользоваться командой assume (а>1,а<2).
необходимо дополнительное исследование, выведено
Как можно видеть, сообщение о том, что в точке х= 2 необходимо дополнительное исследование, выведено дважды. Причина в том, что при вычислении производной и определении точек, где она равна нулю, корень х=2 имеет двойную кратность, поэтому процедура solve () в последовательности решений этот корень выводит дважды; отсюда и два сообщения. Во избежание этого следовало бы определить переменную ListOf Points не как список, а как множество. Тогда два одинаковых решения будут интерпретироваться как один элемент множества.
Если необходимо выполнить замену переменных
Если необходимо выполнить замену переменных в дифференциальном выражении, I в Maple в пакете PDEtools есть процедура dchange(). Первым параметром этой процедуры указывают равенство (или множество, состоящее из равенств), определяющее переход от старых переменных к новым, а вторым параметром — выражение, в котором следует выполнить эту замену. Кроме того, может использоваться ряд опций, информация о которых есть в справочной системе Maple. Ниже приведен пример использования процедуры dchange().
Сначала подключаем пакет.
Производные от неявно заданных функций
Очень часто приходится вычислять производные функций, которые заданы в неявном виде. Задаются такие функции, как правило, с помощью уравнений, в которые входит как переменная (или переменные — для функции нескольких переменных), так и сама функция. Принцип вычисления производной в этом случае достаточно прост — производная вычисляется от всего уравнения (его правой и левой части). При этом только следует иметь в виду, что одна из переменных в уравнении является функцией остальных.
Для вычисления производных от неявно заданных функций в Maple предлагается процедура implicitdiff(). Способы ее вызова рассмотрим на примерах, которые приведены ниже.
Производные высших порядков
Достаточно просто вычисляются и производные высших порядков. Для этого используется все та же процедура diff(). Синтаксис вызова этой процедуры для вычисления производных высших порядков описывается ниже в примерах.
Задача 2.12
Найти у"(х) и у"(х), если y(x) = f(x2).
Для отыскания второй производной можно дважды вызвать процедуру diff (), как показано ниже.
Решение задачи
С помощью оператора D это делается несколько иначе.
и такой синтаксис вызова оператора
Допустим и такой синтаксис вызова оператора D.
в первых скобках после оператора
В последнем случае в первых скобках после оператора D указывается оператор (функция), на который действует D, а в следующих скобках — аргумент для полученного в результате оператора (в данном случае оператора D(sin)=cos).
Оператор задается так: сначала указывается
Здесь у — функция (ее название), которой в качестве значения присваивается (:*) оператор. Оператор задается так: сначала указывается аргумент (или несколько аргументов), потом отображается стрелка (->), а после стрелки задается математическое выражение, определяющее действие оператора на аргумент. После того как функция задана, ее можно дифференцировать.
Если воспользоваться оператором D, то
Если воспользоваться оператором D, то получим несколько иной результат.
Другими словами, результат такой операции
Другими словами, результат такой операции — оператор. Приведенная выше запись значит, что аргументу х в результате действия на него оператора D(y) в соответствие ставится выражение, которое указано после стрелки.
Очень часто выражения, выводимые Maple в качестве результата выполнения той или иной операции, громоздки. Поэтому их приходится упрощать. В этом случае полезна процедура simplify(). В качестве ее аргумента указывается выражение, которое следует упрощать. В данном случае это переменная среды *. Переменная возвращает в качестве своего значения результат выполнения последней команды, причем не обязательно в текущем рабочем листе (в рассматриваемом случае переменная возвращает вычисленное выше выражение для производной).
Но даже после упрощения выражения
Но даже после упрощения выражения его вид может не соответствовать представлениям пользователя о простоте и элегантности. На этот случай в Maple предусмотрен ряд полезных утилит, позволяющих привести выражения к приемлемому для пользователя виду. Среди них имеется такая процедура, как combine ().
в ней использована уже упоминавшаяся
В качестве первого параметра в ней использована уже упоминавшаяся переменная среды (%), а вторым параметром указана опция trig. Это инструкция для вычислительного ядра Maple использовать встроенные алгоритмы преобразования тригонометрических выражений: в частности, произведения тригонометрических функций заменяются, где это возможно, тригонометрическими функциями от суммы (разности) аргументов.
в обратные кавычки. Все, что
Выражение в левой части заключено в обратные кавычки. Все, что находится в этих кавычках, вычислительным ядром Maple не вычисляется и в области вывода отображается в "первозданном виде". Выше эта особенность была использована, чтобы вывести в области вывода символьное выражение для операции вычисления производной в левой части равенства.
является бинарной. Это значит, что
На заметку
Операция возведения в степень (^ или **) является бинарной. Это значит, что запись вида а^b^с некорректна. Следует использовать скобки: (а^b)^с.
При дифференцировании в качестве первого аргумента процедуры dif f () указывается выражение у (зависящее от х, но хочется еще раз подчеркнуть, это не функциональная зависимость). > diff(y,x);
В отличие от предыдущей задачи,
В отличие от предыдущей задачи, зависимость выражения у от х явно не указывается (здесь как раз и проявляется то, что зависимость не является функциональной). В предыдущей задаче переменная у объявлялась как оператор, поэтому при ее вызове необходимо было указать, на какой аргумент она действует. В данном же случае у — это просто название выражения.
Однако самый незатейливый способ вычисления производной представлен ниже.
в полученном после дифференцирования выражении
Поскольку очевидно, что в полученном после дифференцирования выражении имеется возможность вынести за скобки общий множитель, воспользуемся следующей командой.
в качестве первого параметра процедуры
Переменная среды %, указанная в качестве первого параметра процедуры collect!), определяет выражение, которое нужно преобразовать, а второй параметр указывает на то, что в выражении слагаемые следует группировать по степеням 1/х.
При этом целая часть числа
При этом целая часть числа х возвращается функцией Maple floor().
у которой указано два аргумента.
Последнее выражение содержит функцию floor(), у которой указано два аргумента. В этом случае первый аргумент определяет порядок производной, второй — непосредственно аргумент. Другими словами, floor(l,x) — это первая производная от функции floor(x), которая во всех точках равна нулю, кроме целочисленных значений аргумента — в этих точках производная не определена (поскольку floor(х) в этих точках имеет неустранимый разрыв).
Полученное выражение, при желании, можно упростить.
Чтобы представить себе, что же
Чтобы представить себе, что же это за функция, построим ее график.
В качестве первого аргумента процедуры
В качестве первого аргумента процедуры plot(), используемой для отображения двухмерных графиков, указывается выражение, график которого следует построить. В данном случае это выражение определяется значением переменной среды %. Второй аргумент является равенством, где указывается переменная, относительно которой следует строить график (левая часть равенства), а после знака равенства — диапазон ее изменения.
и значение функции на этом
В качестве аргументов функции piecewise() указываются поочередно ш тервал (в виде неравенства) и значение функции на этом интервале. После, ний интервал не указывается — только значение функции.
Функцию f() определим как производную от функции у() (наличие скобе после названия свидетельствует о том, что соответствующие переменные объявляются как операторы и для них при вызове нужно указывать аргумент).
Если теперь указать аргумент, получим
Если теперь указать аргумент, получим выражение для производной:
с помощью уже знаке мой
Графики функции у(х) и ее производной построим с помощью уже знаке мой процедуры plot(), только в этом случае первым аргументом указываете список из двух функций. Точно так же задаются значения опций — это списки, в которых первый элемент соответствует первой функции, а второй элемент - второй функции.
Здесь использованы новые опции: color
Здесь использованы новые опции: color для определения цвета линий, style для определения стиля линий (первый график отображается точками, второй — непосредственно линией), symbol для определения символов отображения (квадрат) и опция отображения легенды legend. Значением последней являются надписи, отображаемые в нижней части графика у образцов линий, и они заключаются в двойные кавычки. Для опции symbol в качестве значения указано единственное значение, а не список. В этом случае значение применяется ко всем отображаемым функциям.
Исходную функцию определяем следующим образом
Исходную функцию определяем следующим образом (процедура abs () возвращает в качестве значения модуль аргумента).
Однако производную определим не как
Однако производную определим не как функцию, а как выражение.
Ниже строится график исходной функции
Видим, что производная не определена в точках х=-1 и х=1 (undefined — значит неопределенный). Ниже строится график исходной функции и ее производной. Следует обратить внимание на то, что оператор у() указывается вместе с аргументом (т.е. у(х)), в то время как для производной указана только переменная f. Ситуация такая же, как и в одном из предыдущих примеров, — первая зависимость от х является функциональной (у() — оператор), вторая — нет (f — это выражение).
Опция linestyle определяет стиль линий:
Опция linestyle определяет стиль линий: первый график отображается сплошной линией (SOLID), второй — штрихпунктирной (DASHDOT).
На следующем этапе нужно решить
На следующем этапе нужно решить систему двух уравнений, в которых ча-1 стные производные от функции z первого порядка приравнены к нулю. Но сначала эту систему (назовем ее SysEq) следует описать.
Теперь решаем
Теперь решаем систему.
В полученном множестве представлено три
В полученном множестве представлено три решения (каждое из которых L также является множеством): первые два действительные, а третье, представленное посредством функции RootOf(), комплексное. Последнее в данном случае интереса не представляет, поэтому его не рассматриваем.
Приведенная ниже процедура вычисляет производную в точке с координатами х и у порядка п по первому аргументу и порядка m по второму аргументу.
Решение задачи
Чтобы выяснить, являются ли исследуемые
Чтобы выяснить, являются ли исследуемые точки экстремальными, нужно вычислить детерминанты определенных выше матриц. В пакете linalg для этих целей предусмотрена процедура det(), которую можно вызвать следующим образом.
Поскольку детерминант меньше нуля, то
Поскольку детерминант меньше нуля, то в первой точке экстремума нет. Ниже показано, как вызвать все ту же процедуру, но с несколько иным синтаксисом (сначала подключается пакет).
Здесь детерминант больше нуля. Следовательно,
Здесь детерминант больше нуля. Следовательно, вторая точка является точкой экстремума.
Поскольку этот элемент больше нуля,
Поскольку этот элемент больше нуля, приходим к выводу, что точка (х=1, у=1) является точкой минимума.
После этого достаточно просто вычислить
После этого достаточно просто вычислить частные производные от z по х и у.
На первое выражение можно сослаться
На первое выражение можно сослаться посредством переменной среды %%, второе — переменной *. Приравниваем их к нулю, заключаем в фигурные и, указав в качестве параметра процедуры solve(), решаем такую систему относительно переменных х и у.
Частные производные одновременно равны нулю
Частные производные одновременно равны нулю только в одной точке Цшеется в виду точка на множестве х и у).
Вычисляем производные второго порядка и присваиваем их в качестве ачений переменным All, A12 и А22 (числа в названиях переменных соответ-вуют номерам аргументов, по которым вычисляются производные). All:=implicitdiff(Eq,z,x$2);
у присваиваем соответствующие значения.
Теперь переменным х и у присваиваем соответствующие значения.
Далее следует выяснить, чему равно
Далее следует выяснить, чему равно значение функции при данных значениях переменных.
При этом выражения для определенных
При этом выражения для определенных ранее переменных существенно упрощаются.
Детерминант определим следующим образом
Детерминант определим следующим образом (переменная Determ).
Решение задачи
это был бы диагональный элемент
Детерминант больше нуля, а переменная АН отрицательна ( это был бы диагональный элемент матрицы).
В другой точке имеем
Вывод: исследуемая точка (x=l,y=-l,z=6) — точка максимума. В другой точке имеем следующее.
В данном случае получили, что
В данном случае получили, что и детерминант, и All — больше нуля. Сле-|довательно, точка (x=l,y=-l,z=-2) — точка минимума.
в последующем уравнений, определяющих точки
Инициализируем переменную-множество EqSeq для записи в нее в последующем уравнений, определяющих точки возможного экстремума.
На следующем этапе заполняем это
На следующем этапе заполняем это множество уравнениями. Каждое такое уравнение — приравненная к нулю производная по одной из переменных х, у или по параметру к. Весь процесс автоматизирован посредством использования оператора цикла for.
В рамках этого оператора при
В рамках этого оператора при помощи переменной t перебираются все параметры, по которым берется производная, сама производная приравнивается к нулю, а уравнение записывается с помощью оператора объединения множеств union в переменную EqSeq.
В результате получаем следующую систему уравнений (она записана в переменной EqSeq в виде множества уравнений).
Теперь эту систему решаем.
Теперь эту систему решаем.
к присваиваем найденное выше
Параметру к присваиваем найденное выше значение.
Решение задачи
лваемое на переменные условие
Ниже показано, как с помощью процедуры ор() можно "извлечь" накла- лваемое на переменные условие (оно необходимо для установления взаимо-зи между дифференциалами переменных х и у).
Из этой последовательности интерес представляет
Из этой последовательности интерес представляет уравнение, накладывающее ограничение на переменные. С точностью до коэффициента оно будет таким:
Снова разбиваем уравнение на
Снова разбиваем уравнение на операнды.
Теперь само уравнение используем для
Теперь само уравнение используем для того, чтобы связать между собой дифференциалы dx и dy.
Дифференциал dy выражаем через
Дифференциал dy выражаем через dx.
Полный дифференциал тогда равен
Полный дифференциал тогда равен следующему.
Группируем слагаемые при dx,
Группируем слагаемые при dx, в результате чего получим:
Определяем знак этого
Определяем знак этого выражения.
к выводу, что функция имеет
Таким образом, приходим к выводу, что функция имеет условный минимум.
Так же поступим
Так же поступим и с переменной у.
у являются выражениями, которые зависят
Теперь х и у являются выражениями, которые зависят от переменной-параметра t; по этому параметру их можно дифференцировать. Поэтому остается только воспользоваться приведенной выше формулой для производной функции, заданной в параметрическом виде.
При построении графика только одной
Построим график функции и ее производной с помощью процедуры plot(). При построении графика только одной функции, заданной в параметрическом виде, первым параметром процедуры указывается список, элементами которого являются выражения, определяющие зависимость х и у от переменной-параметра, а также диапазон изменения параметра. Если нужно построить графики сразу нескольких параметрически заданных функций, то в качестве первого аргумента процедуры plot() указывается список, элементами которого являются списки, составленные по описанному выше принципу: в каждом списке три элемента, первые два задают параметрические зависимости, а третий определяет диапазон изменения параметра.
Следует обратить внимание на то,
Следует обратить внимание на то, что при определении заголовка использовался символ перехода на новую строку (\n). Данный символ рекомендуется использовать при длинных заголовках, чтобы при отображении графика такой заголовок был виден целиком.
Процесс вычисления параметрической производной можно существенно автоматизировать. Подобный подход продемонстрирован в следующем примере.
Название parametricdiff новой процедуры, заключенное
Название parametricdiff новой процедуры, заключенное в обратные кавычки, определяется пользователем (его можно изменить по своему усмотрению). В данном случае кавычки не имеют значения, все и так будет работать, однако разработчики Maple рекомендуют придерживаться определенных правил (к ним относится и использование при описании процедур обратных кавычек), которые впоследствии помогут избежать многих неприятностей.
После названия процедуры и оператора присваивания (:=) следует стандартное слово рrос() с указанием в скобках параметров процедуры: в данном случае их три — х, у и t. После этого идет команда, выполняемая процедурой (этой командой вычисляется параметрическая производная), а затем в конце указана стандартная конструкция end proc, после которой стоит двоеточие. Если закончить описание процедуры точкой с запятой, в области вывода будет сгенерирован код процедуры.
Далее определяем х и у как функции переменной-параметра.
Решение задачи
в данном случае упростить результат
Но в данном случае упростить результат все же придется.
что последняя операция не всегда
Очевидно, что последняя операция не всегда является необходимой — упрощение выражений зависит от многих факторов, в том числе и от предпочтений пользователя.
Решение задачи
Для вычисления производной воспользуемся, как
Для вычисления производной воспользуемся, как уже отмечалось, процедурой implicitdiff(), первым параметром которой является выражение, неявно задающее функцию, вторым — функция, от которой нужно искать производную, и, наконец, третьим параметром — переменная, по которой вычисляется производная.
Левая часть равенства нужна исключительно
Левая часть равенства нужна исключительно для "художественного" оформления результата.
Разумеется, неплохо было бы построить график найденной выше производной. Для обозначения этой производной введем переменную z, в качестве значения которой присвоим выражение, вычисленное на предыдущем этапе, и представим это в виде равенства.
в качестве своего значения возвращает
Процедура rhs() в качестве своего значения возвращает правую часть равенства (то, что находится после знака равенства), указанного ее параметром. В данном случае rhs(%) возвращает значение производной. Чтобы получить зависимость производной (т.е. z) от переменной х, в исходном уравнении для функции следует исключить у (т.е. выразить через r). Для этого следует последнее уравнение решить относительно у и присвоить полученное в качестве решения значение переменной у (выразив тем самым у через z).
Первым параметром этой процедуры является
Выше использована процедура solve(). Первым параметром этой процедуры является решаемое уравнение, вторым — переменная, относительно которой уравнение решается. Для ссылки на уравнение использована переменная среды %.
Опция labels используется для определения
Опция labels используется для определения надписей по осям координат, а специфичная для процедуры implicitplot() опция grid задает число базовых точек по осям абсцисс и ординат, на основе которых строится график (по умолчанию значение опции равно [25,25]). С директивой перехода на новую строку (\п) в названии рисунка читатель уже знаком.
Выражение Fx определяет производную. Записывается
Выражение Fx определяет производную. Записывается оно с помощью процедуры implicitdiff (), первым параметром которой указывается дифференцируемое выражение (F), затем следует переменная, которую при дифференцировании следует считать функцией, и, наконец, переменная, по которой вычисляется производная.
у присваиваем следующие значения.
Переменным х и у присваиваем следующие значения.
Если теперь вызвать Fx, то
Если теперь вызвать Fx, то в этом выражении х и у будут заменены значениями, присвоенными этим переменным выше. В этом случае получим значение производной в соответствующей точке. Однако вызвать Fx можно и с помощью переменной среды %%%, которая возвращает значение предпредпоследней операции.
у следует присвоить новое значение
Чтобы вычислить производную в другой точке, переменной у следует присвоить новое значение (переменная х значения в новой точке не меняет).
Однако результат несколько неожиданный.
Однако результат несколько неожиданный.
в этой точке не существует
Дело в том, что производной в этой точке не существует (точнее, она равна бесконечности, поскольку в выражении для производной у находится в знаменателе, и поэтому точка у=0 является особой).
Часто уравнение, которое задает неявно функцию, имеет достаточно специфичный вид — например, может быть записано в полярных координатах.
в качестве значения присвоим уравнение
Далее переменной Eq в качестве значения присвоим уравнение спирали Архимеда.
Теперь от полярной системы координат
Теперь от полярной системы координат переходим к декартовой.
После этого можем вычислить производную
После этого можем вычислить производную (переменная Deriv).
является уравнение Eq, которое, как
Параметром процедуры implicitdiff () является уравнение Eq, которое, как известно, записано, в полярной системе координат. Однако поскольку на предыдущем этапе переменным гиф были присвоены значения, выражающие их через декартовы координаты, при вычислении производной уравнение будет представлено именно в декартовых координатах, в чем несложно убедиться.
Теперь снова перейдем к полярной системе координат. Для этого, фактически, следует отменить результат выполнения команд (1) и (2)
Решение задачи
В этом случае производная равна
В этом случае производная равна следующему.
После упрощения получаем следующее.
После упрощения получаем следующее.
Для дальнейших преобразований вычислительному ядру
Для дальнейших преобразований вычислительному ядру Maple следует сообщить, что не может быть отрицательным (процедура assume! ))
Решение задачи
в предположении неотрицательного угла
Тогда в предположении неотрицательного угла и параметра а находим, наконец, производную.
к тангенсам. Для этого понадобится
Это выражение можно преобразовать — например, перейти от использования синусов и косинусов к тангенсам. Для этого понадобится процедура выполнения замены 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), которая используется для преобразования графических структур при отображении их в новых системах координат.
в том, чтобы использовать оператор
В области вывода оператор D(f) означает производную от функции f() по аргументу, а число в скобках вверху у оператора D определяет порядок такой производной.
Другой подход состоит в том, чтобы использовать оператор формирования последовательности ($) у переменной дифференцирования при вызове процедуры diff ().
Решение задачи
После этого ее можно продифференцировать
После этого ее можно продифференцировать нужное количество раз.
Ситуация несколько усложняется, если функция
Ситуация несколько усложняется, если функция задана в параметрическом f виде. Как поступать в этих случаях, показано в следующем примере.
в качестве результата процедурой возвращается
Теперь определим процедуру paramdiff() (точнее, оператор, т.е. в качестве результата процедурой возвращается действие), параметрами которой являются две функции (у() и х()). Действие данного оператора на аргумент состоит в вычислении параметрической производной от функции, указанной первым параметром оператора, по второй. Переменной-параметром при этом является аргумент, на который действует оператор paramdiff(). Описание процедуры заканчивается точкой с запятой, поэтому в области вывода можно увидеть сгенерированный для процедуры программный код.
Решение задачи
не используя полученного выше выражения
Вторую производную ( не используя полученного выше выражения для первой производной) можно вычислить, дважды вызвав процедуру paramdiff ().
Третью производную вычислим
Третью производную вычислим "традиционным" способом.
ссылается на результат выполнения предыдущего
Здесь переменная среды % ссылается на результат выполнения предыдущего действия, т.е. на параметрическую зависимость для второй производной от у по х.
Теперь полученное выражение упрощаем.
Хотелось бы еще раз обратить
Хотелось бы еще раз обратить внимание на принципиальный момент в определении использованной выше процедуры: данная процедура, по сути, является оператором (ее результат — это не число или выражение, а действие!), зависящим от двух параметров-функций. Действие оператора на аргумент состоит в вычислении параметрической производной от первой функции по второй функции, а аргумент, на который действует оператор, является при этом переменной-параметром.
в левой части команды необходимо
Выражение с неактивной формой процедуры в левой части команды необходимо для символьного представления предела.
Стоит также обратить внимание на
Стоит также обратить внимание на то, как в качестве значения переменной указана бесконечность (в Maple infinity — это стандартное обозначение для бесконечности).
в левой части равенства неактивная
Как и ранее, в левой части равенства неактивная форма процедуры Limit () используется для символьного отображения предела, в то время как процедура limit () в правой части равенства необходима непосредственно для его вычисления.
Затем найдем ее
Затем найдем ее производную.
Последняя как несложно проверить, равна
Последняя как несложно проверить, равна следующему.
Выражение можно было бы упростить,
Выражение можно было бы упростить, но для решения поставленной задачи это не представляется необходимым. Далее определяем точки, в которых производная равна нулю. Воспользуемся процедурой solve(), в качестве параметров которой указываем решаемое уравнение и переменную, относительно которой это уравнение следует решить.
В данном случае экстремум предполагается
В данном случае экстремум предполагается только в одной точке — в ней производная равна нулю. Это легко проверить. Поступим следующим образом.
х присвоено значение, при котором
Выше переменной х присвоено значение, при котором производная функции должна равняться нулю. Переменная m возвращает значение производной в точке х, а этой переменной только что было присвоено значение.
Полученное выражение достаточно громоздко, однако
Полученное выражение достаточно громоздко, однако вводить в заблуждение это не должно. После упрощения получаем, как и ожидалось, нуль.
Для определения типа экстремума нужно
Для определения типа экстремума нужно определить значение второй производной в этой точке. Вторая производная равна:
В этом случае вместо переменной
В этом случае вместо переменной х использована новая переменная t. Объясняется это довольно просто — переменной х было присвоено значение, после чего она, так сказать, стала числом. По числу дифференцировать нельзя. Поэтому существовало две альтернативы: либо "восстановить" переменную х с помощью команды х: = 'х', либо использовать новую переменную, что и было сделано.
Поскольку интерес представляет значение второй производной в конкретной точке, следует выполнить команду присвоения (после этой команды t автоматически будет определять нужную точку).
возвращает результат выполнения предпоследней команды,
Переменная среды %% возвращает результат выполнения предпоследней команды, т.е. значение второй производной, но уже в нужной точке (по-скольку предьщущей командой параметру t было присвоено соответствующее Значение).
После упрощения получаем
После упрощения получаем следующее.
Для определения типа экстремума важен
Для определения типа экстремума важен знак полученного выражения. Определяется этот знак с помощью процедуры sign().
к выводу, что найденная точка
Поскольку выражение отрицательно, приходим к выводу, что найденная точка является точкой максимума.
Процедуру исследования функции на экстремум можно практически полностью переложить на плечи Maple.
исследуемая на экстремум. После зарезервированного
Параметром процедуры является функция (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) при проверке знака второй производной в данной точке.
Решение задачи
Не составляет большого труда написать
Не составляет большого труда написать процедуру, которая при исследовании функции на экстремум будет вычислять, если это необходимо, и производные более высоких порядков, чем второй. Принципиально нового ничего в этом нет, поэтому читатель при желании может сделать это самостоятельно.
Используя для записи результата процедуру
Используя для записи результата процедуру дифференцирования в неактивной форме (Diff ()), вычислим частную производную по х.
Прочие производные вычисляются
Прочие производные вычисляются аналогично.
Стоит обратить внимание на то,
Стоит обратить внимание на то, что при вычислении частных производных можно использовать оператор $.
и они достаточно высокого порядка,
Однако если производных много и они достаточно высокого порядка, запись отдельной команды для каждой такой производной становится утомительным занятием. Иногда в таких случаях полезно определять специальные процедуры, как в следующем примере.
Однако чтобы не вводить для
Однако чтобы не вводить для вычисления производных пять отдельных команд, определим всего одну процедуру, которая будет вычислять все производные вплоть до второго порядка от функции двух неизвестных.
и является параметром процедуры. Первый
Функция и является параметром процедуры. Первый цикл с оператором do используется для вычисления производных первого порядка. Условие s in x,y указывает на то, что переменная s пробегает значения элементов из последовательности х;у, по которым и берется производная. Так же организован и второй цикл, в котором вычисляются вторые производные, однако он содержит еще один вложенный цикл. В процедуре использована также процедура print(), которая выводит на экран выражение, указанное ее параметром (выражение предварительно вычисляется).
Чтобы отобразить все частные производные функции и, достаточно указать эту функцию в качестве параметра процедуры AllDeriv().
В частности, можно проверить, что
В частности, можно проверить, что смешанные производные не зависят от порядка дифференцирования.
S представим как последовательность списков.
Переменную 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
В результате вычислительному ядру Maple удалось сгруппировать знаменатель полученного выражения. При желании это выражение можно разложить на сумму дробей.
В полученных выражениях для производных функции г по переменной х присутствует, помимо х, еще и у. С другой стороны, функция г неявно определяется как функция только одной переменной. Проблема снимается, если вспомнить, что уравнением Eq2 переменная у определяется (неявно) как функция переменной х.
Новая переменная вводится согласно соотношению
Новая переменная вводится согласно соотношению х =ехр(/)
После упрощения получаем
После упрощения получаем следующее
в том случае, если переменных
Замену переменных можно выполнить и в том случае, если переменных несколько. Рассмотрим выражение
В этом выражении перейдем
В этом выражении перейдем к новым переменным и и v согласно соотношениям х = uv и у = (и1 -v2)/2 , и после упрощения получим следующее.
полезна во многих случаях. Однако
Процедура dchange() полезна во многих случаях. Однако желательно уметь обходиться и без нее. Рассмотрим, как без специальных команд приведения выражений к новым переменным выполнить подобные замены.
Тело процедуры состоит из одного
Тело процедуры состоит из одного выражения, определяющего производную от старой функции по старой переменной в терминах новой функции и новой переменной.
Определим функции перехода от декартовой системы координат к полярной.
Теперь запишем декартовы координаты через
Теперь запишем декартовы координаты через полярные (это понадобится в дальнейшем).
Новая процедура позволяет выразить производную
Новая процедура позволяет выразить производную в полярных координатах.
Исходное уравнение будет записано следующим
Исходное уравнение будет записано следующим образом.
Поскольку предварительно декартовы координаты были
Поскольку предварительно декартовы координаты были выражены через полярные, правая часть равенства будет представлена тоже в полярной системе координат.
В полученном уравнении выделим производную. Для этого решим уравнение относительно этой производной.
Таким образом, можем записать окончательный
Таким образом, можем записать окончательный результат.
В последней команде левая часть
В последней команде левая часть уравнения нужна для формального отображения символа производной. Однако следует иметь в виду, что вычислительным ядром Maple левая часть уравнения как производная не интерпретируется. Чтобы равенство можно было в дальнейшем трактовать как дифференциальное уравнение, следует воспользоваться процедурой Diff().
определяющие правила перехода от старых
Теперь у процедуры три параметра-функции, определяющие правила перехода от старых переменных и функции к новым.
В соответствии с правилами перехода к новым переменным, определяем юцедуру, аргументами которой выступают законы перехода F, G и Н к новым параметрам u, v и w.
с новыми. Система этих уравнений
Уравнения Eql i1 E(J2 связывают старые производные с новыми. Система этих уравнений решает относительно производных от функции z (команда solve()). мее задаем закон61 перехода от старых переменных и функции к новым.
в качестве значения результат выполнения
Переменной S присваиваем в качестве значения результат выполнения процедуры преобразования производных. > S:=VarChange(F,G,H,u,v,w);
в уравнении Eq производные от
После этого в уравнении Eq производные от z по х и у, а также сами пере-Гменные и функцию следует выразить через новые параметры. Выполняется такая замена с помощью процедуры subs().
Полученное таким образом уравнение умножим
Полученное таким образом уравнение умножим на знаменатель правой части (знаменатель возвращается процедурой denom{)).
После упрощения имеем
После упрощения имеем следующее.
в частности, можно сократить на
Это уравнение, в частности, можно сократить на экспоненту.
Если уравнение сократить еще на
Если уравнение сократить еще на один общий множитель, получим окончательный ответ.
сокращение совсем не обязательно было
Разумеется, сокращение совсем не обязательно было выполнять "в два этапа", но так нагляднее.
используется для вычисления значения не
Команда value() используется для вычисления значения не только упомянутой процедуры Diff (),но и других процедур в неактивной форме.
Кроме того, для вычисления производных в Maple может использоваться оператор D. Однако в отличие от процедуры diff(), которая вычисляет производную от символьного выражения, оператор D используется для вычисления производной от оператора. Например, производную от синуса можно вычислить следующим образом.
Эту же процедуру можно было
Эту же процедуру можно было определить иначе: F:=(x,у,n,m)->D[n.m] (z) (x,у).
Матрица А — это матрица вторых производных исследуемой на экстремум функции в первой точке предполагаемого экстремума, в то время как матрица В — во второй точке.
Как можно видеть, выводимые на
Как можно видеть, выводимые на экран выражения для частных производных допус-некоторое упрощение. Чтобы это выполнялось автоматически, соответствующую команду (например, simplify()) можно разместить прямо в теле процедуры.
Вычисление пределов
Для вычисления пределов используют процедуру limit(). В качестве аргументов указывают выражение и то значение, к которому стремится переменная. Данная процедура имеет также и неактивную форму (та же процедура, но пишется с прописной литеры — Limit()). Ниже приведены примеры использования этой процедуры.
Вычисление производных функций, заданных параметрически
При вычислении производных функций, заданных параметрически, по сравнению с явно заданными функциями, принципиально ничего не меняется. Однако сама процедура вычисления производных (особенно высших порядков) становится несколько сложнее.
Рассмотрим пример.
Вычисление производных явно заданных функций
Для вычисления производной в Maple предусмотрена процедура diff()5 параметрами которой являются: а) функция, от которой берут производную, и б) переменная, по которой эту производную следует брать. Результатом выполнения процедуры является выражение, задающее искомую производную. Кроме того, существует неактивная форма процедуры вычисления производной — Diff (). В отличие от активной формы (той, что начинается со строчной буквы), неактивная используется не для непосредственного вычисления производной, а для символьной записи самой операции. В дальнейшем выражение для производной может быть вычислено с помощью процедуры value(), если результат выполнения процедуры Diff () указать в качестве ее параметра.
В первую очередь определим саму
Найти производную функции
В первую очередь определим саму функцию, от которой следует брать производную. Сделать это можно следующим образом.
это уже не функция от
Найти производную функции у(х) =х+х^х+х^(х^х).
В этом случае переменной у присвоим значение х+х^х+х^(х^х) (но теперь у — это уже не функция от х, а выражение!).
В качестве параметра процедуры diff
Найти производную функции у(х)=х^(1/х).
В качестве параметра процедуры diff () можно сразу указать дифференцируемое выражение.
Найти производную функции
Найти производную функции
Определяем функцию у(х) следующим образом.
Чтобы задать такую функцию, поступим
Найти производную и построить график функции и ее производной, если
Чтобы задать такую функцию, поступим следующим образом.
и построить график функции
Найти производную и построить график функции и ее производной, если
Найти производную функции, заданной параметрически:
Найти производную функции, заданной параметрически: x(t) = acos(t) и y(t) = bsin(t).
Переменной х присвоим значение.
Найти производную функции, заданной параметрически:
Найти производную функции, заданной параметрически:
Для решения поставленной задачи опишем специальную процедуру.
Сначала построим график функции, от
Найти производную функции у(х), заданной неявно: х2 +2ху -у=2х .
Сначала построим график функции, от которой следует искать производную. Процедура implicitplot() позволяет строить графики функций, заданных в неявном виде. Однако доступной процедура становится только после подключения пакета plots с помощью команды with().
Для начала задаем уравнение F,
Чему равно значение у при х = 2 и у = 4 и при х =2 и у = 0 , если (эллипс)?
Для начала задаем уравнение F, определяющее функцию.
График для спирали Архимеда строится
Чему равна производная у'(х), если функция задана уравнением r = aф (спираль Архимеда).
График для спирали Архимеда строится с помощью процедуры plot(), только в данном случае следует указать, что строится он в полярной системе координат (для этого используется опция coords, значение которой устанавливается равным polar). Отображаемая на графике зависимость также записывается в полярной системе координат (задается зависимость расстояния от угла r((ф)).
Вначале определим параметрические зависимости для
Найти y(x), если x(t) = 2t-t2 и y(i) = 3t-t3.
Вначале определим параметрические зависимости для х и у (т.е. объявим эти переменные как функции одного параметра).
Определить значение выражения
Определить значение выражения
В данном случае сначала следует
Определить значение выражения
В данном случае сначала следует наложить ограничение на переменную е. Иначе вычислительное ядро Maple попытается найти предел для произвольного значения этого параметра. Поскольку значение предела существенно зависит от знака е, получить общую зависимость Maple не сможет.
в этом примере нет. Однако
Определить значение выражения
Ничего принципиально нового в этом примере нет. Однако он наглядно демонстрирует возможности Maple. Дело в том, что если вычислять такой предел без использования Maple, придется проделать достаточно нетривиальные преобразования (или использовать асимптотические разложения). В Maple ничего этого делать не нужно — вся "кухня" скрыта от пользователя (хотя это и не всегда хорошо!). Практически сразу получаем следующий результат.
Исследовать на экстремум функцию
Исследовать на экстремум функцию у(х) = хm(1-х)n.
Сначала определим саму функцию.
и возьмет на себя основную
Найти экстремумы функций.
Сразу определим процедуру, которая и возьмет на себя основную работу по исследованию функции на экстремум. Комментарии к процедуре размещены ниже.
и второго порядков от функции
Найти частные производные первого и второго порядков от функции и(х,у) = х'+у*-4х2у2.
Определим функцию двух аргументов (аргументы указываются через запятую и заключаются в скобки).
и второго порядков от функции
Найти частные производные первого и второго порядков от функции и (х,у) = х".
Как и раньше, определяем функцию.
в дальнейшем будет осуществляться переход
Преобразовать к полярным координатам уравнение у'(х) =x+y/x-y
Опишем процедуру, посредством которой в дальнейшем будет осуществляться переход к новым координатам. Параметрами процедуры будут новая переменная t, новая функция u(t) и две функции f и g, посредством которых выполняется переход от старых переменной и функции к новым.
В отличие от предьщущего случая,
Перейти к новым переменным и , v, w в уравнении
В отличие от предьщущего случая, здесь выражение содержит частные производные, а функции (старая и новая) являются функциями двух переменных.
Определим уравнение, которое следует преобразовать.
Задаем функцию z, зависящую от
Исследовать на экстремум функцию z = х* +у* -х2 -2ху -у2.
Задаем функцию z, зависящую от двух переменных х и у.
Найти экстремальное значение неявно заданной
Найти экстремальное значение неявно заданной функции z от переменных х
И у, если хг+у2 +z* -2x -2y-4z-l0 = 0.
В данном случае имеем дело с неявно заданной функцией. Вначале запишем уравнение.
Найти точки условного экстремума функции
Найти точки условного экстремума функции и = хг +/, если х/а+у/Ь = 1.
Это задача на условный экстремум, и решать ее будем методом неопределенных множителей Лагранжа.
Вводим функцию z, которая, помимо х и у, зависит еще и от параметра А.
Заключительные замечания
Рассмотренные в этой главе задачи достаточно просты, и их решение не вызывает принципиальных сложностей. Решения основываются на использовании базовых, наиболее общих процедур Maple и демонстрируют принципы организации Maple и схемы реализации соответствующих алгоритмов. Нет ничего страшного, если математическая постановка той или иной задачи бы-не совсем понятна. Главное, чтобы читатель уяснил для себя, что и как де-ияают команды Maple. Это будет важно в дальнейшем.
Замена переменных
Очень часто в выражениях, содержащих производные, приходится переходить к новым переменным.