Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Численные методы в среде MATLAB. Численное интегрирование.



Системы MatLab\SciLab обладают большими возможностями программирования и визуализации результатов научных исследований при решении задач вычислительной математики. Численные методы в этих системах предлагаются уже в виде готового инструментария — набора функций, их реализующих. Задачей данной работы является ознакомление с наиболее часто встречающимися на практике численными методами, которые используются при решении нелинейных уравнений, при аппроксимации и интегрировании функций. Приближѐ нное вычисление определѐ нных интегралов. С вычислением определѐ нных интегралов самого общего вида:

приходится сталкиваться при решении многих задач математики, физики, химии и т.д. Как правило, на практике получить первообразную аналитически и затем воспользоваться формулой Ньютона-Лейбница удаѐ тся крайне редко. В этих случаях интеграл вычисляется приближѐ нно с помощью одного из методов численного интегрирования. В методе трапеций используется линейная интерполяция, т.е. подынтегральная функция заменяется кусочно-линейной, а еѐ график представляется в виде ломаной, соединяющей отдельные точки yi = f(xi), где xi – координаты узлов сетки, введѐ нной на интервале интегрирования. При этом, очевидно, на каждом из интервалов от xi до xi+1 искомые площади вычисляются как площади обычных трапеций, после чего суммируются. В итоге формула трапеций при постоянном шаге сетки h = xi+1 - xi = (b - a)/n (n – число интервалов разбиения сетки) принимает вид:

Эта схема интегрирования чрезвычайно проста для реализации и имеет 2-ой порядок точности относительно шага сетки. Тем не менее, для экономии времени пользователя в MatLab еѐ реализовали в виде функции trapz(x, y), а в SciLab – inttrap(x, y). Здесь x и y – массивы одного и того же размера 1хn, содержащие, соответственно, координаты узлов выбранной сетки и значения функции в этих узлах. Не многим сложнее оказывается формула Симпсона 4-го порядка точности, получаемая при кусочной интерполяции подынтегрального выражения с помощью парабол:

В MatLab формула Симпсона реализуется функцией quad(fun, a, b [, tol]), где fun – подынтегральная функция, a, b – концы интервала интегрирования, tol – требуемая точность (необязательный параметр). Подынтегральная функция может быть предварительно определена в m-файле, тогда еѐ имя следует указать с дескриптором @, или еѐ можно указать непосредственно при вызове quad в виде текстовой строки, заключѐ нной в одинарные кавычки. Например, вызов quad(@myfun, 0, 1, 1e-3) вычислит интеграл от myfun(x) на интервале [0, 1] с точностью 0.001. Файл функции myfun может быть примерно следующим: function m = myfun(x)

m = x.*x;

return

Аналогично, производится интегрирование при непосредственном задании функции, например: quad('x.*x', 0, 1, 1e-3). Примечание: не забывайте, что операции умножения, деления и возведения в степень необходимо указывать в форме с «.», т.к. они производятся над массивами.

Интегрирование методом трапеций.

Приведенные ниже функции выполняют численное интегрирование хорошо известным методом трапеций и методом трапеций с накоплением.

• trapz(Y) возвращает определенный интеграл, используя интегрирование методом трапеций с единичным шагом между отсчетами. Если Y – вектор, то trapz(Y) возвращает интеграл элементов вектора Y, если Y – матрица, то trapz(Y) возвращает векторстроку, содержащую интегралы каждого столбца этой матрицы.

• trapz(X, Y) возвращает интеграл от функции Y по переменной X, используя метод трапеций (пределы интегрирования в этом случае задаются начальным и конечным элементами вектора X).

• trapz(…, dim) возвращает интеграл по строкам или по столбцам для входной матрицы, в зависимости от значения переменной dim.

Примеры:

> > y=[1, 2, 3, 4]

y = 1 2 3 4

> > trapz(y)

ans = 7.5000

> > X=0: pi/70: pi/2; Y=cos(X); Z = trapz(Y)

Z = 22.2780

• cumtrapz(Y) возвращает численное значение определенного интеграла для функции, заданной ординатами в векторе или матрице Y с шагом интегрирования, равным единице (интегрирование методом трапеций с накоплением). В случае когда шаг отличен от единицы, но постоянен, вычисленный интеграл достаточно умножить на величину шага. Для векторов эта функция возвращает вектор, содержащий результат интегрирования с накоплением элементов вектора Y. Для матриц – возвращает матрицу того же размера, что и Y, содержащую результаты интегрирования с накоплением для каждого столбца матрицы Y. cumtrapz(X, Y) выполняет интегрирование с накоплением от Y по переменной X, используя метод трапеций. X и Y должны быть векторами одной и той же длины, или X должен быть векторомстолбцом, а Y – матрицей. cumtrapz(…, dim) выполняет интегрирование с накоплением элементов по размерности, точно определенной скаляром dim. Длина вектора X должна быть равна size(Y, dim).


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 866; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.015 с.)
Главная | Случайная страница | Обратная связь