Основу курса
математического анализа составляют такие
понятия как пределы, производные, первообразные
функций, интегралы разных видов, ряды и
дифференциальные уравнения.
Кто знаком с основами матанализа, тому наверняка
известны десятки правил нахождения пределов,
взятия интегралов, нахождения производных и т.д.
и т.п. Если добавить к этому, что для нахождения
большинства интегралов нужно еще помнить
таблицу интегралов, то получается просто
огромный объем информации. И, если некоторое
время не тренировать себя в решениях таких задач,
то в итоге многое забывается и для нахождения,
например, интеграла посложнее уже требуется
искать его в справочнике.
Но ведь взятие интегралов и нахождение пределов -
это не самоцель вычислений. Всякая задача должна
решать некоторую практическую проблему, а
промежуточные вычисления - лишь промежуточный
этап на пути к ответу.
С помощью Maple можно сэкономит массу времени и
избежать многих ошибок при вычислениях.
Рассмотрим на примерах команду limit, которая
позволяет находить пределы функций.
> restart;
> f(x):=(x^3-3*x^2+2*x-5)/(x^2+2);
> Limit(f(x),x=-1)=limit(f(x),x=-1);
> r:=5*sin((3*x)/(x-Pi));
> limit(r,x=Pi);
Последний результат означает, что предел не найден, но значения функции в окрестности указанной точки принимают значения в диапазоне, который вычислила функция limit. Проверить это можно с помощью графика функции.
> plot(r,x=Pi-0.3..Pi+0.3);
Иногда Maple не может найти предел, например:
> limit(tan(x), x=infinity);
Можно также находить односторонние пределы. Для этого достаточно указать ключевое слово left или right.
> g(x):=1/x;
> Limit(g(x),x=0,left)=limit(g(x),x=0,left);
Проверить правильность нахождения предела можно с помощью графика.
> plot(g(x),x=-1..1,view=[-1..1,-50..50],discont=true,color=blue,labels=[`x`,`g(x)`]);
Можно также находить пределы для функций нескольких аргументов:
> limit(x+1/y, {x=0,y=infinity});
Для Maple не составит труда найти предел для функции с неизвестными параметрами:
> limit(a*x, x=infinity);
Чтобы продифференцировать функцию, достаточно воспользоваться командой diff.
> restart:
> f(x):=ln(sqrt(exp(3*x)/(1+exp(3*x))));
> simplify(diff(f(x),x));
Можно взять частные производные от функции многих аргументов:
> diff(f(x,y),x,y);
При помощи оператора формирования последовательности ($) можно брать производные высоких порядков.
> Diff(sin(x),x$3)=diff(sin(x),x$3);
Взять интеграл от какой-либо функции можно при помощи оператора int.
> restart:
Неопределенный интеграл:
> Int((3*x^2+8)/(x^3+4*x^2+4*x),x)=int((3*x^2+8)/(x^3+4*x^2+4*x),x);
Определенный интеграл:
> Int(sin(phi)^3*sqrt(cos(phi)),phi=0..Pi/2)=int(sin(phi)^3*sqrt(cos(phi)),phi=0..Pi/2);
Несобственный интеграл:
> Int(1/(x^2+2*x+2),x=-infinity..infinity)=int(1/(x^2+2*x+2),x=-infinity..infinity);
> Int(1/(x-1)^2,x=0..2)=int(1/(x-1)^2,x=0..2);;
В тех случаях, когда интеграл не может быть вычислен в численной форме, поможет функция evalf.
> ww:=int( exp(-x^3), x = 0..1 );
> evalf(ww,5);
В Maple можно находить предел сходимости рядов.
> Sum(7^(3*n)/(2*n-5)!,n=3..infinity)=evalf(sum(7^(3*n)/(2*n-5)!,n=3..infinity));
Полезной может оказаться и функция product (произведение):
> product( a[k], k=0..n );
Достаточно просто производить различные операции над кусочно-аналитическими функциями. Их можно интегрировать, дифференцировать и даже использовать в дифференциальных уравнениях.
> p:=piecewise(x<0, -1, x>1, 2*x, x^2);
Построим график вышеописанной функции:
> plot(p,x=-1..2);
Проинтегрируем кусочную функцию:
> int(p,x);
А теперь попробуем решить дифференциальное уравнение, в которое входит функция p(x).
> rez:=dsolve( {diff(y(x),x)+p*y(x),y(0)=-2}, y(x));
Maple не ограничивается вышеописанными возможностями. Т.к. система содержит операторы для базовых вычислений, то почти все алгоритмы, которые не реализованы стандартными функциями можно реализовать посредством написания собственной программы.