Интегрирование

В этом примере показано, как вычислить определенные интегралы с помощью Symbolic Math Toolbox™.

Определенный интеграл

Покажите что определенный интеграл abf(x)dx для f(x)=sin(x) на [π2,3π2] 0.

syms x
int(sin(x),pi/2,3*pi/2)
ans = 0

Определенные интегралы в максимумах и минимумах

Максимизировать F(a)=-aasin(ax)sin(x/a)dx для a0, во-первых, задайте символьные переменные и примите это a0:

syms a x
assume(a >= 0);

Затем задайте функцию, чтобы максимизировать:

F = int(sin(a*x)*sin(x/a),x,-a,a)
F = 

{1-sin(2)2 если  a=12asin(a2)потому что(1)-a2потому что(a2)sin(1)a4-1 если  a1

Отметьте особый случай здесь a=1. Чтобы сделать расчеты легче, используйте assumeAlso проигнорировать эту возможность (и более поздняя проверка это a=1 не максимум):

assumeAlso(a ~= 1);
F = int(sin(a*x)*sin(x/a),x,-a,a)
F = 

2asin(a2)потому что(1)-a2потому что(a2)sin(1)a4-1

Создайте график F проверять его форму:

fplot(F,[0 10])

Используйте diff найти производную F относительно a:

Fa = diff(F,a)
Fa = 

2σ1a4-1+2a2aпотому что(a2)потому что(1)-2aпотому что(a2)sin(1)+2a3sin(a2)sin(1)a4-1-8a4σ1a4-12где  σ1=sin(a2)потому что(1)-a2потому что(a2)sin(1)

Нули Fa локальные экстремальные значения F:

hold on
fplot(Fa,[0 10])
grid on

Максимум между 1 и 2. Используйте vpasolve найти приближение нуля Fa в этом интервале:

a_max = vpasolve(Fa,a,[1,2])
a_max = 1.5782881585233198075558845180583

Используйте subs получить максимальное значение интеграла:

F_max = subs(F,a,a_max)
F_max = 0.36730152527504169588661811770092потому что(1)+1.2020566879911789986062956284113sin(1)

Результат все еще содержит точные числа sin(1) и потому что(1). Используйте vpa заменять их числовыми приближениями:

vpa(F_max)
ans = 1.2099496860938456039155811226054

Проверяйте что исключенный случай a=1 не приводит к большему значению:

vpa(int(sin(x)*sin(x),x,-1,1))
ans = 0.54535128658715915230199006704413

Несколько интегрирование

Численное интегрирование по более высоким размерным областям имеет специальные функции:

integral2(@(x,y) x.^2-y.^2,0,1,0,1)
ans = 4.0127e-19

Нет таких специальных функций для более многомерного символьного интегрирования. Используйте вложенные одномерные интегралы вместо этого:

syms x y
int(int(x^2-y^2,y,0,1),x,0,1)
ans = 0

Линейные интегралы

Задайте векторное поле F на 3D пробеле:

syms x y z
F(x,y,z) = [x^2*y*z, x*y, 2*y*z];

Затем задайте кривую:

syms t
ux(t) = sin(t);
uy(t) = t^2-t;
uz(t) = t;

Линейный интеграл F вдоль кривой u задан как fdu=f(ux(t),uy(t),uz(t))dudtdt, где на правой стороне обозначает скалярное произведение.

Используйте это определение, чтобы вычислить линейный интеграл для t от [0,1]

F_int = int(F(ux,uy,uz)*diff([ux;uy;uz],t),t,0,1)
F_int = 

19потому что(1)4-потому что(3)108-12sin(1)+sin(3)27+39554

Получите числовое приближение этого точного результата:

vpa(F_int)
ans = -0.20200778585035447453044423341349
Для просмотра документации необходимо авторизоваться на сайте