Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Методы численного интегрированияС целью ускорения вычислений интегралов численными методами подынтегральную функцию удобно представлять в наиболее простом виде, используя функции упрощения функциями и .Возможны случаи, когда система до упрощения не может вычислить неопределенный интеграл и легко его определяет после упрощения. Численное интегрирование необходимо в следующих случаях: - невозможно воспользоваться формулой Ньтона-Лейбница, т.е. первообразная не выражается через элементарные функции; - аналитическое выражение интеграла слишком сложное; - подынтегральная функция задана в табличной форме или в виде матрицы. Так как с геометрической точки зрения определённый интеграл представляет собой площадь криволинейной трапеции. Идея методов численного интегрирования сводится к разбиению интервала [a; b] на множество меньших интервалов и нахождению искомой площади как совокупности элементарных площадей, полученных на каждом частичном промежутке разбиения. В зависимости от использованной аппроксимации получаются различные формулы численного интегрирования, имеющие различную точность. Приближенные формулы численного интегрирования называются квадратурными. Метод вычисления интеграла выбирает пользователь. В этом особенность системы Matlab. С помощью Matlab вы имеете возможность сравнивать различные методы численного интегрирования. Существует ряд способов численного интегрирования. Общая формула численного интегрирования Где xR(f) – остаточный член. Чаще всего используются формулы с равноотстоящими узлами, когда отрезок интегрирования [a; b] разбивается на n равных частей системой точек хi=x0+ih (i=0,1,2,…,n); х0=a; хn=b; h=(b-a)/n Метод трапеций Здесь используется линейная аппроксимация, т.е. график функции представляется в виде ломаной, соединяющей точки уi. Формула трапеций при постоянном шаге , где n – число участков, имеет вид Остаточный член формулы трапеций: Как показывает это выражение, формула трапеций является точной для линейных функций, поскольку вторая производная, входящая как множитель в выражение остаточного члена, для этих функций тождественно равна нулю В Matlab данная формула трапеций реализуется функциями: trapz(y) - возвращает определённый интеграл, используя интегрирование методом трапеций с единичным шагом между отсчетами. Если У – вектор, то trapz(y) возвращает интеграл элементов вектора У, если У – матрица, то trapz(y) возвращает вектор-строку, содержащую интегралы каждого столбца этой матрицы. trapz(x,y) – возвращает интеграл от функции У по переменной Х по методу трапеций. Пример. Вычислить интеграл Решение: x=1:0.1:2; >> y=log(x); >> trapz(x,y) ans = 0.3859 Точное значение интеграла, который берётся аналитически, равно 0,3863 Узлы по оси Х могут быть и не равноотстоящими. Пример: Вычисление интеграла с неравномерным шагом по Х xn=[1:0.1:1.5,1.6:0.2:2]; >> yn=log(xn); >> trapz(x,y) ans = 0.3859 Найдем истинное значение интеграла с учетом остаточного члена. Для имеем f’’(x)=-1/x2. При 1<ξ<2 вторая производная -1<f’’(ξ)<-1/4. Так как b-a=1, h=0.1, остаточный член 0,0002<Rтрап<0,0008. С учётом остаточного члена истинное значение интеграла заключено между 0,3859+0,0002 и 0,3859+0,0008 т.е. между 0,3861 и 0,3867 (его точное значение 0,3863) Функция cumtrapz(x,y)выполняет кумулятивное (т.е. накопительное) суммирование по формуле трапеций.Где х, увекторы одной размерности, или х-вектор столбец, у – матрица.Она возвращает вектор, i-я компонента которого есть сумма первых i слагаемых формулы трапеций. Вычисление интеграла на i-м шаге выполняется по формуле Si-1 – предыдущее значение интеграла; Yi, Yi-1 – значение функции в начале и в конце интервала Δх; Δх – шаг интегрирования на участке [Yi, Yi-1]. Пример. Накопительное суммирование по формуле трапеций. x=1:0.1:2; >> y=log(x); >> cumtrapz(x,y) ans = 0 0.0048 0.0186 0.0409 0.0708 0.1079 0.1517 0.2017 0.2576 0.3191 0.3859 Сравним полученный результат с точными значениями с переменным верхним пределом, равным x*(log(x)-1)+1. Чтобы вычислить по этой формуле, её необходимо «векторизовать»: >> x.*(log(x)-1)+1 ans = 0 0.0048 0.0188 0.0411 0.0711 0.1082 0.1520 0.2021 0.2580 0.3195 0.3863 Разница между приближёнными и точными значениями не превосходит 0,004.
Более точная формула численного интегрирования с равноотстоящими узлами – формула Симпсона. Метод Симпсона Если подынтегральную функцию заменить параболой, то формула Симпсона с постоянным шагом интегрирования будет иметь вид Остаточный член формулы Симпсона: Как показывает это выражение, формула Симпсона является точной для многочленов степени не выше 3-й, четвёртая производная от которых тождественно равна нулю. В Matlab формула Симпсона реализуется функциями: quad(@fun,a,b) – возвращает численное значение определённого интеграла от заданной функции (@fun на отрезке [a; b] Подынтегральная функция может задаваться с помощью дескриптора @, тогда она программируется в файле – функции, или с помощью апострофов, тогда она записывается в самой функции quad. Точность вычисления интеграла по умолчанию 10-6. quad(@fun,a,b,tol) - возвращает численное значение определённого интеграла с заданной относительной погрешностью. Чтобы точно определить комбинацию относительной и абсолютной погрешности можно использовать вектор, состоящий из двух элементов tol=[rel_tol abs_tol]. quad(@fun,a,b,tol,trace) - возвращает численное значение определённого интеграла и при значении trace = 1 в процессе работы выдаётся последовательность строк вида [fcnt a b-a q] в которых показаны: количество вычислений интегрируемой функции; левый конец промежутка4 его длина; найденное значение интеграла по этому промежутку. Если trace = 0 этот параметр отключен. Из описания способа вычислений функции quad вытекает, что невозможно ограничиться заданием значений интегрируемой функции в каких-то заранее известных узлах (как для trapz), а необходимо уметь вычислять её значения в любой точке интервала интегрирования. Невозможно также использовать остаточный член для оценки точности, достигнутой функцией quad, как это делалось выше для функции trapz, поскольку неизвестен окончательный шаг h, используемый при интегрировании. К тому же он не обязательно одинаков на всём отрезке интегрирования. Пример. Вычислить и вывести на печать по методам трапеций и Симпсона значение интеграла Решение: x=0:0.0001:1; >> y=1./(1+x.^2); >> z=trapz(x,y) z = 0.7854 % метод трапеций quad('(1./(1+x.^2))',0,1) ans = 0.7854 % метод Симпсона Точное значение интеграла равно 0,785398163. Как видно из примера полученные результаты являются практически точными, а сами вычисления просты. Замечание: Для обеспечения точности программы используется система двойного пересчёта: определенный интеграл вычисляется дважды-с произвольными шагами . Если при этом разность интегралов мала, то вычислительный процесс заканчивается, а значением интеграла считается то, которое вычислено с шагом , в противном случае шаг уменьшается вдвое и сравниваются значения интеграла с шагами и так далее.. Функция quad(‘fun’,a,b)реализует метод Ньютона-Котеса восьмого порядка. Дает наиболее точное решение по сравнению с предыдущими методами и функциями. Имеет те же опции, что и функция quad(‘fun’,a,b,tol,trace) Большое число методов и функций вычисления интегралов является достоинством системы MATLAB. При изучении методов интегрирования вы имеете возможность сравнить методы по их точности. Сравним точность методов на примере. Пример: Пусть подынтегральная функция имеет вид: Необходимо вычислить интеграл в пределах от 0 до 10 методом трапеций, парабол (Симпсона) и Ньютона-Котеса. Использовать функции , . Точность вычисления интеграла - по умолчанию . Результаты вычисления интеграла приведены в таблице:
Точное значение неопределенного интеграла имеет вид: Численное значение интеграла, вычисленное по точной формуле в диапазоне от 0 до10, равно Из примера видно, что значение интеграла практически одно то же. Правда, в методе трапеций шаг интегрирования должен быть не менее
Дата добавления: 2014-03-11; просмотров: 1119; Нарушение авторских прав Мы поможем в написании ваших работ! |