> u:=2*x^2-4*x*y+y^2-2*y*z+6*z;
Вычисляем градиент как вектор, компоненты которого есть частные производные:
> grad:=[diff(u,x),diff(u,y),diff(u,z)];
Подстановкой находим числовое значение вектора в нужной точке.
> t:=subs(x=1,y=2,z=-3,grad);
Найдем еще модуль вектора градиента:
> g:=sqrt(t[1]^2+t[2]^2+t[3]^2): g=evalf(g);
Вычисление
ротора векторного поля
> a:=[x/sqrt(x^2+y^2),y/sqrt(x^2+y^2),
(z*z+y*y+x^2)^(1/2)];
> rot:=[diff(a[3],y)-diff(a[2],z),diff(a[1],z)-diff(a[3],x),diff(a[2],x)-diff(a[1],y)];
а) Неопределенные интегралы
Для вычисления неопределенных интегралов Maple предоставляет функцию int. При этом если аналитического значения интеграла не существует, возвращается исходная запись.
Пусть
требуется вычислить интеграл
.
Имеем
> int(a*x^n,x);
Существует инертная форма функции int:
> Int(ln(x)^3,x);
В таком представлении интеграл записывается, но не вычисляется, а если его все же требуется вычислить, то используется функция value:
> value(");
Напомним, что символ " («кавычки») означает подстановку последнего вычисленного результата. Вместо него может стоять переменная, которой предварительно была присвоена инертная функция Int:
> t:=Int(ln(x)^3,x): value(t);
Как и с функцией diff, весьма наглядный способ представления результата обеспечивается, когда в одной строке используется функция int вместе со своим аналогом в инертной форме Int. Этот способ вполне очевиден из примеров:
> Int(x^2*sin(x),x)=int(x^2*sin(x),x);
> Int(sin(x)/x,x)=int(sin(x)/x,x); # эта функция называется интегральный синус
Следует помнить, что хотя в аналитических выражениях интегралов отсутствует аддитивная произвольная постоянная C, она должна там подразумеваться.
В некоторых случаях Maple не может взять интеграл, тогда с помощью функций taylor и convert можно попытаться представить результат в виде полинома умеренной степени, что демонстрирует следующий пример
> w:=int(exp(-sin(x)),x); # интеграл присваивается переменной w
> convert(taylor(w,x=0,8), polynom); # о параметрах функции taylor см. ниже
Разумеется, что в этом случае решение является приближенным, но оно все же есть и с ним можно работать, например, строить график функции, представляющей данный интеграл.
б) Определенные интегралы
Для вычисления определенных интегралов используются те же функции int и Int, в которых надо указать пределы интегрирования, например x=a..b, если интегрируется функция переменной x.
> Int(sin(x)/x,x=a..b)=int(sin(x)/x,x=a..b);
> int(sin(x)/x,x=0..1);
Maple предпочитает выводить результат в таком как бы незавершенном виде, так как считает его более точным значением, чем в виде числа с плавающей точкой. Однако если требуется именно численное значение интеграла, причем с любой заданной точностью, можно применить функцию evalf. Существует и другая возможность сразу получить численный результат, что показано в следующем примере:
> int(sin(x)/x,x=0..1.); # вместо целого числа 1 записано действительное 1.
(т.е. один или два предела интегрирования записываются в виде числа с плавающей точкой).
Еще примеры – несобственные интегралы:
> Int(x*ln(x),x=0..1)=int(x*ln(x),x=0..1);
> Int(x*exp(-x),x=0..infinity)=int(x*exp(-x), x=0..infinity);
> Int(1/(x^2+6*x+12),x=-infinity..infinity)= int(1/(x^2+6*x+12),x=-infinity..infinity);
Последние два примера показывают, что пределами интегралов может выступать бесконечность, обозначаемая как infinity.
Возможна ситуация, когда определенный интеграл аналитически не вычисляется и не выражается даже в виде специальных функций, которые в очень большом количестве имеются в базе данных системы. Например,
> int(exp(-sin(x)),x=0..1);
В этом случае использование функции evalf позволяет посчитать интеграл численно (при этом задействуются именно численные методы интегрирования):
> evalf(");
Другой пример:
> Int(exp(-x)/sqrt(x^2+1),x=0..exp(1))= evalf(int(exp(-x) /sqrt(x^2+1),x=0..exp(1)));
Следует отметить, что если evalf применить к инертной функции Int, то это так же, как и в случае комбинации с int, вызовет численное вычисление интеграла, однако при этом есть возможность указать точность (разрядность сетки) и метод интегрирования. Например,
> evalf(Int((1-exp(-x^2))/x,x=0..100,15,_NCrule));
4.89377801843886
в) Интегралы с переменными пределами интегрирования
Определим
функцию
,
зависящую от верхнего предела интеграла:
> f:=x->int(exp(-t)*sin(2*Pi*t),t=0..x);
Теперь можно выполнять любые допустимые действия с этой функцией, например, вычислить её значение в конкретной точке:
> f(2.);
или построить график
> plot(f(x),x=0..4);
г) Повторные интегралы
Повторные интегралы имеют вид
.
Вычисление этих интегралов сводится к рекурсивному вызову функции int (либо Int). Например, если интегрируется функция двух переменных, можно использовать команды
> Int(Int(arctan(y/x)/(x*y),x=2.0..4.4),y=-2..3.0);
> evalf(");
Обратите внимание в приведенном примере на форму записи интеграла, которую легко принять за двойной интеграл. Тем не менее, это интеграл повторный, причем сначала интегрирование производится по x, а затем по y.
Повторный интеграл от функции трех переменных:
> int(int(int((x^2+y^2)*z,z=0..a),y=0..a),x=0..a);
Пример повторного интеграла, у которого внутренний интеграл имеет переменные пределы:
> p:=Int(Int(2-x-y,x=sqrt(y)..y^2),y=0..1): p=value(p);
Как известно, вычисление кратных интегралов сводится к повторным интегралам.