Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Численные методы в среде 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; Просмотров: 893; Нарушение авторского права страницы