MATLAB – Интеграция
Интеграция имеет дело с двумя принципиально разными типами проблем.
В первом типе дается производная функции, и мы хотим найти функцию. Поэтому мы в основном обращаем вспять процесс дифференциации. Этот обратный процесс известен как антидифференцирование, или нахождение примитивной функции, или нахождение неопределенного интеграла .
Второй тип проблем включает сложение очень большого количества очень маленьких величин, а затем определение предела, когда размер величин приближается к нулю, а число членов стремится к бесконечности. Этот процесс приводит к определению определенного интеграла .
В первом типе дается производная функции, и мы хотим найти функцию. Поэтому мы в основном обращаем вспять процесс дифференциации. Этот обратный процесс известен как антидифференцирование, или нахождение примитивной функции, или нахождение неопределенного интеграла .
Второй тип проблем включает сложение очень большого количества очень маленьких величин, а затем определение предела, когда размер величин приближается к нулю, а число членов стремится к бесконечности. Этот процесс приводит к определению определенного интеграла .
Определенные интегралы используются для определения площади, объема, центра тяжести, момента инерции, работы, выполняемой силой, и во многих других приложениях.
Поиск неопределенного интеграла с помощью MATLAB
По определению, если производная функции f (x) есть f ‘(x), то мы говорим, что неопределенный интеграл от f’ (x) по x равен f (x). Например, поскольку производная (по x) x 2 равна 2x, мы можем сказать, что неопределенный интеграл от 2x равен x 2 .
f ‘(x 2 ) = 2x , следовательно,
∫ 2xdx = x 2 .
Неопределенный интеграл не является уникальным, потому что производная x 2 + c для любого значения константы c также будет 2x.
Это выражается в символах как –
∫ 2xdx = x 2 + c .
Где c называется «произвольной константой».
MATLAB предоставляет команду int для вычисления интеграла выражения. Чтобы вывести выражение для неопределенного интеграла функции, мы пишем –
Например, из нашего предыдущего примера –
MATLAB выполняет приведенный выше оператор и возвращает следующий результат –
Пример 1
В этом примере давайте найдем интеграл некоторых часто используемых выражений. Создайте файл сценария и введите в нем следующий код –
Когда вы запускаете файл, он показывает следующий результат –
Пример 2
Создайте файл сценария и введите в нем следующий код –
Обратите внимание, что функция pretty возвращает выражение в более читаемом формате.
Когда вы запускаете файл, он показывает следующий результат –
Нахождение определенного интеграла с помощью MATLAB
По определению, определенный интеграл в основном является пределом суммы. Мы используем определенные интегралы, чтобы найти области, такие как область между кривой и осью x и область между двумя кривыми. Определенные интегралы могут также использоваться в других ситуациях, где требуемое количество может быть выражено как предел суммы.
Функция int может использоваться для определенной интеграции, передавая пределы, по которым вы хотите вычислить интеграл.

Например, для расчета стоимости
мы пишем –
MATLAB выполняет приведенный выше оператор и возвращает следующий результат –
Ниже приведен октавный эквивалент приведенного выше расчета –
Octave выполняет код и возвращает следующий результат –
Альтернативное решение может быть дано с помощью функции quad (), предоставляемой Octave следующим образом:
Octave выполняет код и возвращает следующий результат –
Пример 1
Вычислим площадь, заключенную между осью x и кривой y = x 3 -2x + 5 и ординатами x = 1 и x = 2.
Требуемая площадь определяется как –

Создайте файл сценария и введите следующий код –
Когда вы запускаете файл, он показывает следующий результат –
Ниже приведен октавный эквивалент приведенного выше расчета –
Octave выполняет код и возвращает следующий результат –
Альтернативное решение может быть дано с помощью функции quad (), предоставляемой Octave следующим образом:
Документация
попытки найти другое символьное выражение, F , так, чтобы diff(F) = f . Таким образом, int(f) возвращает неопределенный интеграл или антипроизводную f (если каждый существует в закрытой форме). Подобно дифференцированию,
использует символьный объект v когда переменная интегрирования, а не переменная определяется symvar . Смотрите как int работает путем рассмотрения этой таблицы.
int(x^n) или int(x^n,x)
∫ 0 π / 2 sin ( 2 x ) d x = 1
int(sin(2*x), 0, pi/2) или int(sin(2*x), x, 0, pi/2)
∫ g ( t ) d t = sin ( a t + b ) / a
g = cos(a*t + b) int(g) или int(g, t)
∫ J 1 ( z ) d z = − J 0 ( z )
int(besselj(1, z)) или int(besselj(1, z), z)
В отличие от дифференцирования, символьное интегрирование является более сложной задачей. Много трудностей могут возникнуть в вычислении интеграла:
Антипроизводная, F , может не существовать в закрытой форме.
Антипроизводная может задать незнакомую функцию.
Антипроизводная может существовать, но программное обеспечение не может найти его.
Программное обеспечение могло найти антипроизводную на более крупном компьютере, но заканчивается время или память на доступной машине.
Тем не менее, во многих случаях, MATLAB может выполнить символьное интегрирование успешно. Например, создайте символьные переменные
Следующая таблица иллюстрирует интегрирование выражений, содержащих те переменные.
В последнем примере, exp(-x^2) , нет никакой формулы для интеграла включающих стандартных выражений исчисления, таких как тригонометрические и показательные функции. В этом случае MATLAB дает ответ в терминах функции ошибок erf .
Если MATLAB не может найти ответ на интеграл функционального f , это только возвращает int(f) .
Определенное интегрирование также возможно.
Вот некоторые дополнительные примеры.
Для Функции Бесселя ( besselj ) пример, возможно вычислить числовое приближение к значению интеграла, с помощью double функция. Команды
Интеграция с действительными параметрами
Одна из тонкости, вовлеченной в символьное интегрирование, является “значением” различных параметров. Например, если a является каким-либо положительным вещественным числом, выражением
положительная, кривая, имеющая форму звонка, которая стремится к 0, как x стремится к ± ∞ . Можно создать пример этой кривой для a = 1/2 .

Однако, при попытке вычислить интеграл
не присваивая значение a, MATLAB принимает, что a представляет комплексное число, и поэтому дает кусочный ответ, который зависит от аргумента a. Если вы только интересуетесь случаем, когда a является положительным вещественным числом, используйте assume установить предположение на a :
Теперь можно вычислить предыдущий интеграл с помощью команд
Интеграция с комплексными параметрами
для комплексных чисел a , войти
Используйте syms очистить все предположения на переменных. Для получения дополнительной информации о символьных переменных и предположениях на них, смотрите, Удаляют Символьные Объекты и Их Предположения.
Предыдущие команды производят комплексный выход
Функция signIm задан как:

Оценивать F в a = 1 + i , войти
Численное интегрирование высокой точности Используя арифметику Переменной Точности
Численное интегрирование высокой точности реализовано в vpaintegral функция Symbolic Math Toolbox™. vpaintegral арифметика переменной точности использования в отличие от MATLAB integral функция, которая использует арифметику с двойной точностью.
Интегрируйте besseli(5,25*u).*exp(-u*25) при помощи обоих integral и vpaintegral . integral функция возвращает NaN и выдает предупреждение в то время как vpaintegral возвращает правильный результат.
Для получения дополнительной информации смотрите vpaintegral .
Документация Symbolic Math Toolbox
Поддержка
© 1994-2021 The MathWorks, Inc.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Интегрирование в Matlab
Доброго времени суток! Мы продолжаем говорить о численных методах. И сегодня мы поговорим о реализации численных методов интегрирования в среде Matlab.
Численное интегрирование в Matlab

Геометрический смысл интегрирования — это нахождение площади, которая находится под интегрируемой функцией. На рисунке показана площадь для определённого интеграла, ограниченного a и b.
Численное интегрирование не только в Matlab, но и в других средах, строится именно на нахождении площади. Для начала мы разберем простые методы:
Методы прямоугольников
- метод правых прямоугольников
- метод левых прямоугольников
- метод средних прямоугольников

Суть их в построение под кривой прямоугольников одинаковый ширины и нахождение их суммарной площади.Как видите, они различаются только точкой соприкосновения с кривой. Методы достаточны простые в реализации. Однако, погрешности данных методов весьма высоки. Точнее говоря, методы прямоугольников имеют первый порядок точности. Это означает, что ошибка пропорциональна шагу и накапливается со временем. Соответственно, чем меньше шаг, тем меньшую ошибку мы получим.
Также, следует отметить, что метод средних прямоугольников является более точным и предпочтительно использовать именно этот метод численного интегрирования, если у вас стоит выбор из этих трех методов. Эту точность можно доказать с помощью разложения в ряд Тейлора.
- Пример 1
Необходимо посчитать интеграл функции f(x) = xe sin(x) x с шагом разбиения h = 0.02 на интервале от 0 до 1.
Функция feval (родственник функции eval) — интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции, однако, в отличии от eval, интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции.
Метод трапеций
Ещё одни популярный и в тоже время простой метод — метод трапеций. Аналогично методу прямоугольников строятся трапеции под кривой и находится их суммарная площадь. Данный метод имеет второй порядок точности (ошибка пропорциональна шагу в квадрате).
В Matlab метод трапеций реализован двумя функциями:
- cumtrapz()
- trapz()
Первую функцию обычно используют при работе с табличными данными или векторами. Откликом функции является n-интегралов, где n — число элементов вектора или элементов в каждом столбце матрицы. Следующие примеры отображают работу этой функции.
- Пример 2
Пусть функция y(x) имеет значения, представленные в виде следующего вектора: y = [1,2,3,4,5,6,7,8,9,10] . Необходимо вычислить:
При этом a = 1; b = 1, 2, 3, 4 …,10.
Пишем в Matlab:
- Пример 3
Теперь рассмотрим вариант работы с вектором и матрицей:
Функция y(x) задана в виде матрицы y(x) = [1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10] . При этом аргумент представляет собой вектор: x = [1,3,7,9,10].
Вторая функция для интегрирования, работающая по методу трапеций Matlab — trapz(). Наиболее используемая студентами, так как позволяет работать не только с векторами и матрицами, но и с аналитической формой подынтегральной функции. Выглядит это примерно так:
- Пример 4
Необходимо вычислить определённый интеграл в диапазоне от 1 до 10 с шагом 0.5 для заданной функции:
Как видите, ничего сложного. А иногда даже удобнее некоторых онлайн сервисов для расчёта интегралов.
Метод Симпсона
Преимущество этого метода в том, что точки, взятые на каждом шаге на кривой, интерполируются полиномом второй степени. Проще говоря, соединяются параболой. Это даёт методу четвёртый порядок точности.
В Matlab интегрирование с помощью метода Симпсона производит функция quad. Сразу разберем пример.
- Пример 5
Вычислить определённый интеграл с точностью 10 -4 методом Симпсона.
Точность вычислений задается 4 параметром функции quad. Также, следует отметить, что в задании нижним пределом является 0, а мы использовали число 0.001. Это связано с тем, что при подстановке 0 функция не определена, а точнее, натуральный логарифм не существует.
Ну и реализация этого метода вручную приведена здесь для общего развития. Этим я хочу подчеркнуть, что практически любой метод или алгоритм возможно написать самому, а не пользоваться стандартными методами Matlab.
Символьное интегрирование в Matlab
Часто нам необходимо найти интеграл от какой либо функции, не зная пределов интегрирования. Тогда нам нужно взять интеграл в общем или символьном виде. В Matlab за символьное интегрирование отвечает функция int. Она принимает как минимум 2 параметра: 1 — функция, 2 — имя переменной по которой берется интеграл. int(fun, var). Рассмотрим короткий пример:
- Пример 6
Вычислить неопределённый интеграл:
Следует отметить, что функция int также может считать и определенные интегралы, для этого нужно задать пределы интегрирования в 3 и 4 параметры функции соответственно.
Заключение
На этом я хочу закончить сегодняшнюю тему «Интегрирование в Matlab». Не забывайте, что Matlab позволяет программировать сложные алгоритмы, а не только использовать встроенный функционал. Любой численный метод можно реализовать и вызывать как функцию. Если у вас остались вопросы, то задавайте их в комментариях.