Расчеты

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

Версия для печати

Дифференцирование

Дифференцирование – относительно простая операция. Поэтому достаточно ограничиться двумя примерами применения команд дифференцирования: одним для выражений и одним для функций.

Для выражений
Для 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.

Задача 3.1 на построение графиков функций

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

Задача 3.2 о присоединенных полиномах Лежандра

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

Задача 3.3

Сделайте график для пяти присоединенных функций Лежандра, которые получаются с P(5,x), т. е. примените n=5 и m=1,2,3,4,5 в Pnm. Постройте их на одном графике в разных цветах в интервале x=-1..1 и посмотрите, что получается при изменении m от 1 до 5 (n=5). После взгляда на график захочется перенормировать функции так, чтобы они были одного размера. Сделайте это. В разделе об интегрировании этот график понадобится. Заодно покажем естественный способ рисовать функции с приблизительно одинаковой амплитудой.

Задача 3.4 о потенциале заряженной полусферы

Потенциал заряженной полусферы радиуса 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 до бесконечности – внешняя область над сферой.

Дайте физическую интерпретацию графику.

Задача 3.5 о неявном дифференцировании

Пример неявного дифференцирования.

Зададим уравнение, содержащее переменные 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));
Задача 3.6 о дисперсионных соотношениях для электромагнитных волн

Дисперсионное соотношение для электромагнитных волн в плазме: где 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. Работе с ним посвящена отдельная глава.

Задача 3.7 о производных

Найдите две первые производные и три вторые производные (дважды по х, дважды по y и смешанное xy) от функции:

где K – полный эллиптический интеграл EllipticK. Используйте представление для выражений с diff. Попытайтесь применить expand и simplify, чтобы упростить результат.