Дифференцирование
Дифференцирование – относительно простая операция. Поэтому достаточно ограничиться двумя примерами применения команд дифференцирования: одним для выражений и одним для функций.
Для выражений
Для 1-й, 2-й и 3-й производных предлагается применять формы, как для тангенса в примере ниже.
Можно использовать diff, что непосредственно дает производную, либо сочетание Diff и value, где производная вначале берется (Diff), а затем вычисляется (value). Более применима Diff, потому что она дает возможность увидеть, является ли получаемая производная именно тем, что нужно. Учтите, что в примерах ниже обратные кавычки применяются для обозначения производных: f', f'' и f'''.
- restart;
- f:=tan(x);
- `f'`:=diff(f,x);
- `f''`:=diff(tan(x),x$2);
- `f'''`:=Diff(f,x$3);
- `f'''`:=value(`f'''`);
- `f'''`:=simplify(`f'''`);
Для функций
Посмотрим, как с ними работать:
- f:=x->tan(x)/x;
Diff не работает с функциями, кроме случая, когда надо использовать команду Maple D. Это очень мощная команда, несмотря на свой малый размер. Она может брать кратные производные от сложных функций (подробно о ее возможностях – см. справку ?D), но пока будем брать только первые производные от одной функции. Первая производная берется легко (иногда кавычек нет и вместо них пишется обозначение fp вместо f', fpp вместо f'', и т. д.):
- fp:=D(f);
В результате исполнения D(f) получается функция fp(x). Есть много способов взять более высокие производные, но есть более общий:
- fpp:=D[1$2](f);
Внутри квадратных скобок команды D цифра 1 означает число дифференцирований по первой переменной в списке аргументов (в нашем случае – единственная переменная), $2 означает, что это делается дважды, как в diff.
Возьмите производные от перечисленных ниже функций. Для большинства из них используйте форму выражения, а для (a) и (d) – форму функции. (Учтите, что D разработано для работы с функциями, поэтому вначале удостоверьтесь, что задаваемая формула есть функция, созданная, например, с помощью конструкции f:=x->sqrt(1+x^3).) Если запутаетесь – попытайтесь применить simplify для очистки. Обнаружите, что simplify не работает с функциями.
Чтобы сделать результат красивым, скопируйте то, что нужно упростить, и присвойте новой переменной, отрежьте все ненужное, выполните команду, а затем заново постройте производную с помощью копирования/вставки. Такая комбинация Maple и редактирования– хороший пример свободной от ошибок алгебры. Учтите, что J0(x) и I1(x) – это функции Бесселя. Maple называет их Besse1J и Besse1I соответственно. Г(х) – это гамма-функция (Gamma в Maple).
(a) |
(e) |
(b) |
(f) |
(c) |
(g) |
(d) |
Как работать с функциями Бесселя, сказано далее в этой главе (Расчеты). См. раздел Интегрирование специальных функций (Задача 3.9 об интегрировании функций Бесселя и Задача 3.10 на ортогональность функций) и раздел Разложение в ряд (Задача 3.16. Разложение функции Бесселя).
В квантовой механике достаточно часто встречаются функции Лежандра которые уже рассматривались выше. Новые функции называют присоединенными полиномами Лежандра
Для каждого целого n эти функции определены для m значений, принадлежащих интервалу [0..n], причем функция при m = 0 – это просто
остальные функции определяются через производные функций Лежандра:
Для большинства компьютерных языков это определение слишком громоздко, но Maple с ним легко работает, потому что «думает» символами, а не численно.
- restart;
- with(orthopoly);
- Pnm:=(n,m,x)-> (-1)^m*(1-x^2)^(m/2)*diff(P(n,x),x$m);
Вначале проверим правильность записи, для чего на место n, m, x подставим числа.
- Pnm(3,1,.5);
Снова затруднения. Проблема в том, что именно возвращает P(n,x).
Выше показано, что возвращается не число, а полином. Если задать х=0.5, то это число подставится в Pnm в качестве х, а затем diff попытается взять производную (половинную), что, конечно, бессмысленно и не даст результата. Посмотрите, что случится, если для х подставить переменную вместо числа:
- Pnm(3,1,t);
Если нужен численный результат, можно использовать команду subs (подстановка):
- subs(t=.5,%);
или просто задайте для t значение (что сделает ее недоступной в качестве символьной переменной):
- a:=Pnm(3,1,t);t:=0.5;a;
Это несколько раздражает, но, с другой стороны, зачем всегда требовать от Maple число? Гораздо удобнее работать с результатами аналитических вычислений в явном виде. Численный результат для Maple не проблема, а один из вариантов представления информации. Правда, так получается для всех ортогональных функций, которые подключаются командой with(orthopoly).
Вот еще затруднение при работе с функцией Pnm. Посмотрите, что произойдет, если попытаться выполнить вычисления для m=0:
- Pnm(5,0,x);
При m=0 предполагается, что в результате возвратится Pn(x), а это не получается. Причина в том, что запрошена 0-я производная функции, чего не может сделать команда diff. Ниже, при изучении процедур, вернемся к этому и внесем исправления, которые позволят работать с m=0.
Сделайте график для пяти присоединенных функций Лежандра, которые получаются с P(5,x), т. е. примените n=5 и m=1,2,3,4,5 в Pnm. Постройте их на одном графике в разных цветах в интервале x=-1..1 и посмотрите, что получается при изменении m от 1 до 5 (n=5). После взгляда на график захочется перенормировать функции так, чтобы они были одного размера. Сделайте это. В разделе об интегрировании этот график понадобится. Заодно покажем естественный способ рисовать функции с приблизительно одинаковой амплитудой.
Потенциал заряженной полусферы радиуса R с поверхностной плотностью заряда σ как функция z (z – ось симметрии полусферы ) задается выражением:
- V:=-1/2*sigma*R*(-sqrt(R^2+z^2)+sqrt((z-R)^2))/(z*e0);
где e0 обозначена диэлектрическая постоянная вакуума ε0.
Компоненту электрического поля можно получить из потенциала V дифференцированием:
Возьмем эту производную в Maple, получим жуткое выражение для . Упростим его и увидим незнакомую функцию csgn. Проверьте, что она значит (?csgn). Задайте значения: σ = 1, R = 1, e0 = 1 и постройте V и
в интервале от z = –4 до z = 4.
В электромагнетизме есть теорема о том, что при пересечении поверхностного заряда с плотностью σ скачок величины поля равен σ/ε0. (Чтобы не возникли индексированные переменные, которые Maple воспринимает как ссылки на элементы массивов, в выражениях вместо ε0 пишете e0.) Проверьте на графике правильность скачка. Отрицательные z на графике относятся к тому, что находится ниже границы полусферы, положительные z от 0 до R – это внутренняя часть сферы, а значения z от R до бесконечности – внешняя область над сферой.
Дайте физическую интерпретацию графику.
Пример неявного дифференцирования.
Зададим уравнение, содержащее переменные x и y, вроде Надо найти
не решая для y(x). Это делается путем неявного дифференцирования уравнения, чтобы получить
а затем решить относительно
- restart;
- eq:=x^2 + y(x)^3 = 3;
- deq:=diff(eq,x);
- dydx:=solve(deq,diff(y(x),x));
Если не хотите каждый раз печатать y(x), примените команду alias, чтобы Maple везде превращал y в y(x) (внутренние действия только в Maple).
- restart;
разрешение использовать y вместо y(x):
- alias(y=y(x));
- eq:=x^2 + y^3 = 3;
- deq:=diff(eq,x);
- dydx:=solve(deq,diff(y,x));
Дисперсионное соотношение для электромагнитных волн в плазме: где wp – плазменная частота. Фазовая скорость этих волн равна
/k, а групповая скорость –
Примените Maple к
(k), чтобы получить формулы для фазовой скорости как функции от wp, k, c. Затем примените неявное дифференцирование для получения зависимости групповой скорости от k, c и
.
И, наконец, Maple знает, как брать частные производные. Рассмотрим функцию
Вот первые производные по х и у, затем вторые смешанные производные по обеим переменным х и у:
- restart;f:=cos(x*y)/y;
- diff(f,x);diff(f,y);diff(f,x,y);
А здесь то же в представлении функций Maple:
- restart;f:=(x,y)->cos(x*y)/y;
- D[1](f);D[2](f);D[1,2](f);
В примере [1] означает дифференцирование по первой переменной в списке аргументов (x,y), т. е. по x; [2] означает дифференцирование по второму аргументу, т. е. по y, [1,2] означает дифференцирование относительно обеих переменных.
Примечание. Уравнения математической физики обычно основаны на частных производных по пространственно-временным координатам. Для работы с ними создан специальный пакет Physics. Работе с ним посвящена отдельная глава.
Найдите две первые производные и три вторые производные (дважды по х, дважды по y и смешанное xy) от функции:
где K – полный эллиптический интеграл EllipticK. Используйте представление для выражений с diff. Попытайтесь применить expand и simplify, чтобы упростить результат.