Matlab определенный интеграл методом трапеций

Содержание
  1. Вычисление интегралов различными методами
  2. • Метод правых прямоугольников:
  3. • Метод левых прямоугольников:
  4. • Метод трапеций:
  5. • Метод трапеций MATLAB:
  6. • Метод Симпсона MATLAB:
  7. • Метод правых прямоугольников:
  8. • Метод левых прямоугольников:
  9. • Метод трапеций:
  10. • Метод трапеций MATLAB:
  11. • Метод Симпсона MATLAB:
  12. Интегрирование в Matlab
  13. Численное интегрирование в Matlab
  14. Методы прямоугольников
  15. Метод трапеций
  16. Метод Симпсона
  17. Символьное интегрирование в Matlab
  18. Заключение
  19. Документация
  20. Синтаксис
  21. Описание
  22. Примеры
  23. Интеграция вектора данных с модульным интервалом
  24. Интеграция вектора данных с немодульным интервалом
  25. Интеграция матрицы с неоднородным интервалом
  26. Несколько численного интегрирования
  27. Входные параметры
  28. Y — Числовые данные вектор | матрица | многомерный массив
  29. X — Укажите интервал 1 (значение по умолчанию) | универсальный скалярный интервал | вектор из координат
  30. dim — Размерность, которая задает направление расчета положительный целочисленный скаляр
  31. Больше о
  32. Трапециевидный метод
  33. Советы
  34. Расширенные возможности
  35. Генерация кода C/C++ Генерация кода C и C++ с помощью MATLAB® Coder™.
  36. Основанная на потоке среда Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .
  37. Массивы графического процессора Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.
  38. Распределенные массивы Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.
  39. Смотрите также
  40. Открытый пример
  41. Документация MATLAB
  42. Поддержка

Вычисление интегралов различными методами

Доброго времени суток! Сегодня я хочу вам показать, как вычислять интегралы различными методами.

Сразу скажу, что пакет Matlab уже имеет набор стандартных решений интегралов, их количество достаточно для реализации разных задач, но иногда (актуально для учебных заведений) требуется реализовать метод, написав программу.

На самом деле такая реализация методов нерациональна, так как теряется смысл использования Matlab. Но не мне осуждать, мне — решать. Алгоритм реализации того или иного метода есть в интернете в свободном доступе, и сложности могут возникнуть только с синтаксисом языка в Matlab. Разберём типовую задачу решения интеграла:

Вычислить, разбив на количество отрезков n=100

Следующими методами:

• прямоугольники вперёд (правыми прямоугольниками);
• прямоугольники назад (левыми прямоугольниками);
• трапеций;
• трапеций MATLAB;
• Симпсона MATLAB;

Как вы наверняка догадались, MATLAB — означает, что будем реализовывать через стандартную функцию.
Для начала объявим необходимые переменные:

• Метод правых прямоугольников:

Вывод:
s =
0.0526

• Метод левых прямоугольников:

Вывод:
s =
0.0526

• Метод трапеций:

Тут легче уже объявить функцию у.

Вывод:
F =
0.0526

• Метод трапеций MATLAB:

Просто, не так ли?
Вывод:
ans =
0.0531

Как видите, уже заметно, что у всех методов свои погрешности.

• Метод Симпсона MATLAB:

Совсем просто, не так ли? =)
Вывод:
ans =
0.0531

Как видите, ничего страшного.
Давайте для закрепления материала, разберём ещё одну задачку:

Интегрировать с шагом 0.001

Следующими методами:

• прямоугольники вперёд (правыми прямоугольниками);
• прямоугольники назад (левыми прямоугольниками);
• трапеций;
• трапеций MATLAB;
• Симпсона MATLAB;

• Метод правых прямоугольников:

Вывод:
s =
0.1349

• Метод левых прямоугольников:

Вывод:
s =
0.1348

• Метод трапеций:

Вывод:
F =
0.1349

• Метод трапеций MATLAB:

Вывод:
ans =
0.1363

• Метод Симпсона MATLAB:

Вывод:
ans =
0.1363

Надеюсь, теперь у вас не возникнет проблем с вычислением интегралов в Matlab.
Если у вас остались вопросы, то задавайте их в комментариях.

Источник

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

Доброго времени суток! Мы продолжаем говорить о численных методах. И сегодня мы поговорим о реализации численных методов интегрирования в среде Matlab.

Численное интегрирование в Matlab

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

Численное интегрирование не только в Matlab, но и в других средах, строится именно на нахождении площади. Для начала мы разберем простые методы:

Методы прямоугольников

  • метод правых прямоугольников
  • метод левых прямоугольников
  • метод средних прямоугольников
Читайте также:  Прямоугольный параллелепипед у которого стороны равны ответы

Суть их в построение под кривой прямоугольников одинаковый ширины и нахождение их суммарной площади.Как видите, они различаются только точкой соприкосновения с кривой. Методы достаточны простые в реализации. Однако, погрешности данных методов весьма высоки. Точнее говоря, методы прямоугольников имеют первый порядок точности. Это означает, что ошибка пропорциональна шагу и накапливается со временем. Соответственно, чем меньше шаг, тем меньшую ошибку мы получим.

Также, следует отметить, что метод средних прямоугольников является более точным и предпочтительно использовать именно этот метод численного интегрирования, если у вас стоит выбор из этих трех методов. Эту точность можно доказать с помощью разложения в ряд Тейлора.

Необходимо посчитать интеграл функции f(x) = xe sin(x) x с шагом разбиения h = 0.02 на интервале от 0 до 1.

Функция feval (родственник функции eval) — интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции, однако, в отличии от eval, интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции.

Метод трапеций

Ещё одни популярный и в тоже время простой метод — метод трапеций. Аналогично методу прямоугольников строятся трапеции под кривой и находится их суммарная площадь. Данный метод имеет второй порядок точности (ошибка пропорциональна шагу в квадрате).

В Matlab метод трапеций реализован двумя функциями:

  • cumtrapz()
  • trapz()

Первую функцию обычно используют при работе с табличными данными или векторами. Откликом функции является n-интегралов, где n — число элементов вектора или элементов в каждом столбце матрицы. Следующие примеры отображают работу этой функции.

Пусть функция y(x) имеет значения, представленные в виде следующего вектора: y = [1,2,3,4,5,6,7,8,9,10] . Необходимо вычислить:

При этом a = 1; b = 1, 2, 3, 4 …,10.
Пишем в Matlab:

Теперь рассмотрим вариант работы с вектором и матрицей:
Функция 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(). Наиболее используемая студентами, так как позволяет работать не только с векторами и матрицами, но и с аналитической формой подынтегральной функции. Выглядит это примерно так:

Необходимо вычислить определённый интеграл в диапазоне от 1 до 10 с шагом 0.5 для заданной функции:

Как видите, ничего сложного. А иногда даже удобнее некоторых онлайн сервисов для расчёта интегралов.

Метод Симпсона

Преимущество этого метода в том, что точки, взятые на каждом шаге на кривой, интерполируются полиномом второй степени. Проще говоря, соединяются параболой. Это даёт методу четвёртый порядок точности.

В Matlab интегрирование с помощью метода Симпсона производит функция quad. Сразу разберем пример.

Вычислить определённый интеграл с точностью 10 -4 методом Симпсона.

Точность вычислений задается 4 параметром функции quad. Также, следует отметить, что в задании нижним пределом является 0, а мы использовали число 0.001. Это связано с тем, что при подстановке 0 функция не определена, а точнее, натуральный логарифм не существует.

Ну и реализация этого метода вручную приведена здесь для общего развития. Этим я хочу подчеркнуть, что практически любой метод или алгоритм возможно написать самому, а не пользоваться стандартными методами Matlab.

Символьное интегрирование в Matlab

Часто нам необходимо найти интеграл от какой либо функции, не зная пределов интегрирования. Тогда нам нужно взять интеграл в общем или символьном виде. В Matlab за символьное интегрирование отвечает функция int. Она принимает как минимум 2 параметра: 1 — функция, 2 — имя переменной по которой берется интеграл. int(fun, var). Рассмотрим короткий пример:

Вычислить неопределённый интеграл:

Следует отметить, что функция int также может считать и определенные интегралы, для этого нужно задать пределы интегрирования в 3 и 4 параметры функции соответственно.

Читайте также:  Равнобедренный треугольник свойства его углов при основании

Заключение

На этом я хочу закончить сегодняшнюю тему «Интегрирование в Matlab». Не забывайте, что Matlab позволяет программировать сложные алгоритмы, а не только использовать встроенный функционал. Любой численный метод можно реализовать и вызывать как функцию. Если у вас остались вопросы, то задавайте их в комментариях.

В этот раз без исходников, примеры небольшие.

Источник

Документация

Трапециевидное численное интегрирование

Синтаксис

Описание

Q = trapz( Y ) вычисляет аппроксимированный интеграл Y с помощью трапециевидного метода с модульным интервалом. Размер Y определяет размерность, чтобы объединяться вперед:

Если Y вектор, затем trapz(Y) аппроксимированный интеграл Y .

Если Y матрица, затем trapz(Y) объединяется по каждому столбцу и возвращает вектор-строку из значений интегрирования.

Если Y многомерный массив, затем trapz(Y) объединяется по первой размерности, размер которой не равняется 1. Размер этой размерности становится 1, и размеры других размерностей остаются неизменными.

Q = trapz( X , Y ) интегрирует Y относительно координат или скалярного интервала, заданного X .

Если X вектор из координат, затем length(X) должно быть равно размеру первой размерности Y чей размер не равняется 1.

Если X скалярный интервал, затем trapz(X,Y) эквивалентно X*trapz(Y) .

Q = trapz( ___ , dim ) интегрирует по измерению dim использование любого из предыдущих синтаксисов. Необходимо задать Y , и опционально может задать X . Если вы задаете X , затем это может быть скаляр или вектор с длиной, равной size(Y,dim) . Например, если Y матрица, затем trapz(X,Y,2) интегрирует каждую строку Y .

Примеры

Интеграция вектора данных с модульным интервалом

Вычислите интеграл вектора, где интервал между точками данных равняется 1.

Создайте числовой вектор из данных.

Y содержит значения функции для f ( x ) = x 2 в области [1, 5].

Используйте trapz интегрировать данные с модульным интервалом.

Это аппроксимированное интегрирование дает к значению 42 . В этом случае точный ответ немного меньше, 4 1 1 3 . trapz функция дает завышенное значение интеграла, потому что f (x) является выпуклым вверх.

Интеграция вектора данных с немодульным интервалом

Вычислите интеграл вектора, где интервал между точками данных универсален, но не равен 1.

Создайте доменный вектор.

Вычислите синус X .

Интегрируйте Y использование trapz .

Когда интервал между точками является постоянным, но не равным 1, альтернатива созданию вектора для X должен задать скалярное значение разрядки. В этом случае, trapz(pi/100,Y) совпадает с pi/100*trapz(Y) .

Интеграция матрицы с неоднородным интервалом

Интегрируйте строки матрицы, где данные имеют неоднородный интервал.

Создайте вектор из x-координат и матрицу наблюдений, которые происходят в неправильных интервалах. Строки Y представляйте скоростные данные, взятые во времена, содержавшиеся в X , для трех различных испытаний.

Используйте trapz интегрировать каждую строку независимо и найти общее расстояние переместились в каждом испытании. Поскольку данные не оценены в постоянных интервалах, задайте X указать на интервал между точками данных. Задайте dim = 2 поскольку данные находятся в строках Y .

Результатом является вектор-столбец значений интегрирования, один для каждой строки в Y .

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

Создайте сетку значений домена.

Вычислите функцию f ( x , y ) = x 2 + y 2 на сетке.

trapz интегрирует числовые данные, а не функциональные выражения, таким образом, в целом выражение, как должно быть известно, не использует trapz на матрице данных. В случаях, где функциональное выражение известно, можно вместо этого использовать integral integral2 , или integral3 .

Используйте trapz аппроксимировать двойной интеграл

I = ∫ — 5 5 ∫ — 3 3 ( x 2 + y 2 ) d x d y

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

trapz выполняет интегрирование по x сначала, производя вектор-столбец. Затем интегрирование по y уменьшает вектор-столбец до одного скаляра. trapz немного переоценивает точный ответ 680, потому что f (x, y) является выпуклым вверх.

Входные параметры

Y — Числовые данные
вектор | матрица | многомерный массив

Числовые данные в виде вектора, матрицы или многомерного массива. По умолчанию, trapz объединяется по первому измерению Y чей размер не равняется 1.

Типы данных: single | double
Поддержка комплексного числа: Да

X — Укажите интервал
1 (значение по умолчанию) | универсальный скалярный интервал | вектор из координат

Укажите интервал в виде 1 (значение по умолчанию), универсальный скалярный интервал или вектор из координат.

Читайте также:  Как центр вписанной окружности делит биссектрису треугольника

Если X скаляр, затем он задает универсальный интервал между точками данных и trapz(X,Y) эквивалентно X*trapz(Y) .

Если X вектор, затем он указывает , что x — координирует для точек данных и length(X) должен совпасть с размером размерности интегрирования в Y .

Типы данных: single | double

dim — Размерность, которая задает направление расчета
положительный целочисленный скаляр

Величина для работы, заданная как положительный целый скаляр. Если значение не задано, то по умолчанию это первый размер массива, не равный 1.

Рассмотрите двумерный входной массив, Y :

trapz(Y,1) работает над последовательными элементами в столбцах Y и возвращает вектор-строку.

trapz(Y,2) работает над последовательными элементами в строках Y и возвращает вектор-столбец.

Если dim больше ndims(Y) , затем trapz возвращает массив нулей одного размера с Y .

Больше о

Трапециевидный метод

trapz выполняет численное интегрирование с помощью трапециевидного метода. Этот метод аппроксимирует интегрирование на интервале путем разламывания области на трапецоиды с более легко вычислимыми областями. Например, вот трапециевидное интегрирование синусоидальной функции с помощью восьми равномерно распределенных трапецоидов:

Для интеграции с N+1 равномерно разнесенные точки, приближение

∫ a b f ( x ) d x ≈ b − a 2 N ∑ n = 1 N ( f ( x n ) + f ( x n + 1 ) ) = b − a 2 N [ f ( x 1 ) + 2 f ( x 2 ) + . + 2 f ( x N ) + f ( x N + 1 ) ] ,

где интервал между каждой точкой равен скалярному значению b − a N . MATLAB по умолчанию ® использует интервал 1.

Если интервал между N+1 точки не являются постоянными, затем формула делает вывод к

∫ a b f ( x ) d x ≈ 1 2 ∑ n = 1 N ( x n + 1 − x n ) [ f ( x n ) + f ( x n + 1 ) ] ,

где a = x 1 x 2 . x N x N + 1 = b , и ( x n + 1 − x n ) интервал между каждой последовательной парой точек.

Советы

Использование trapz и cumtrapz выполнять численное интегрирование на наборах дискретных данных. Использование integral , integral2 , или integral3 вместо этого, если функциональное выражение для данных доступно.

trapz уменьшает размер размерности, которой он управляет на 1 и возвращает только итоговое значение интегрирования. cumtrapz также возвращает промежуточные значения интегрирования, сохраняя размер размерности, с которой он работает.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Указания и ограничения по применению:

Если вы предоставляете dim , затем это должна быть константа.

Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .

Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox) .

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox) .

Смотрите также

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

© 1994-2021 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

Источник

Поделиться с друзьями
Строю.ру
Adblock
detector