Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Labs Matlab / Lab4 / index2

.htm
Скачиваний:
48
Добавлен:
01.06.2015
Размер:
16.23 Кб
Скачать

Методы численного интегрирования

Аналитическое интегрирование средствами MATLAB.

Аналитическое дифференцирование средствами MATLAB.

Теоретическая оценка погрешности численного интегрирования.

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

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

Правило Рунге оценки погрешности интегрирования

К вычислениям определенных интегралов сводятся многие практические задачи физики, химии, экологии, механики и других естественных наук. На практике взять интеграл аналитически не всегда удается. В этом случае используются методы численного интегрирования. В данной лабораторной работе рассматриваются методы Ньютона - Котеса, в частности методы прямоугольников, трапеций и Симпсона (парабол). Кроме того, в лабораторной работе рассматриваются способы аналитического и численного отыскания интегралов средствами MATLAB.

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

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

1. Аналитическое интегрирование средствами MATLAB.

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

Для вычисления определенных и неопределенных интегралов в MATLAB спользуется функция int.

Синтаксис:

Вызов Описание int(S) Вычисляется неопределенный интеграл от функции S по ее символьной переменной, определенной в syms.

int(S,v) Вычисляется неопределенный интеграл от функции S по ее символьной переменной v, определенной в syms.

int(S,a,b) Вычисляется определенный интеграл от a до b функции S по ее символьной переменной, определенной в syms. A и b могут быть переменными символьного или вещественного типа.

int(S,v,a,b) Вычисляется определенный интеграл от a до b функции S по ее символьной переменной v, определенной в syms. A и b могут быть переменными символьного или вещественного типа. Пример использования функции int. В данном примере подинтегральная функция задается явным образом.

График подинтегральной функции:

Обратите внимание на форматирование графика прямо в тексте программы.

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

Обратите внимание, что в данном примере для построения графика используется m - файл f.m:

Это связано с тем, что аргументом функции fplot не может быть символьная функция.

График интегрируемой функции:

2. Аналитическое дифференцирование средствами MATLAB.

В лабораторной работе, основной задачей которой является исследование методов численного интегрирования, для отыскания теоретической погрешности результатов требуется знание производной от интегрируемой функции до четвертого порядка включительно.

Для вычисления производных аналитически в MATLAB спользуется функция diff.

Синтаксис:

Вызов Описание diff(S) Вычисляется аналитическое выражение для производной от функции S, заданной символьно. diff(S,n) Вычисляется аналитическое выражение для производной от функции S порядка n. Пример использования функции diff при вычислении максимума второй производной на отрезке [a, b]

График производной:

3. Теоретическая оценка погрешности численного интегрирования

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

Задача 1. Определить теоретическую погрешность численного интегрирования методом трапеций в случае одного элементарного отрезка интегрирования..

Теоретическая погрешность для метода трапеций составляет

В случае элементарного отрезка иртегрирования, если заданы пределы интегрирования и подинтегральная функция, задачу можно решить например следующим образом:

В результате получим

f2 =

50*x^3-366/5*x^2+34/5

M2 =

16.4000

Погрешность

R =

0.1164

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

Задача 2. Определить шаг дискретизации и количество узлов интегрирования, необходимые для того. чтобы погрешность интегрирования не превышала величины 0.0001.

Если заданы пределы интегрирования и интегрируемая функция, задачу можно решить например следующим образом:

В результате получим:

f2 =

50*x^3-366/5*x^2+34/5

M2 =

16.4000

h =

1.289562396771206e-002

n =

3.412010160203707e+001

n =

35

h =

1.257142857142857e-002

Таким образом, чтобы вычислить интеграл от функции

f(x)=2.5*x5-6.1*x4+3.4*x2-9.1*x+18

по методу трапеций c точностью 0.0001, небходимо задать 35 узлов интегрирования. При этом шаг дискретизации составляет h=1.257142857142857*10-2 .

Вам остается убедиться, что погрешность интегрирования с данными параметрами действительно не превышает 0.0001.

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

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

Случай формул для составного отрезка интегрирования более сложный. Здесь требуется вычислять значения сумм. Например в методе Симпсона

где

В языке программировани MATLAB, как и в других языках программирования, существует оператор цикла for , возможностей которого достаточно для решения поставленных задач. Синтаксис оператора цикла описан в разделе Программирование. Далее мы просто рассмотрим пример решения задачи численного интегрирования.

Пример. Численное интегрирование методом Симпсона.

Закрашенную область следует выполнить самостоятельно

Результаты:

>> Результаты

Точное значение интеграла

2.575860114624924e-001

Результат и погрешность для элементарного отрезка

2.575665708043314e-001 1.944065816106289e-005

Количество узлов

4

Результат и погрешность по методу Симпсона

2.575859351120611e-001 7.635043136611230e-008

Конечно, рассматриваемый здесь способ решения задачи является не единственным и не наилучшим. В частности, можно было бы создать m-функцию, в которой и производилось бы вычисление интеграла.

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

В MATLAB реализованы множество современных методов численного интегрирования. Мы рассмотрим простейшие из них.

А. Метод трапеций. Метод трапеции реализован в MATLAB несколькими функциями:

cumtrapz(у)

cumtrapz(x,y)

trapz(y)

trapz(x,y)

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

Пример. Пусть подынтегральная функция имеет вид

у(х) = х*еx + ln(x) + 1

Необходимо вычислить определенный интеграл в диапазоне от 1 до 10 с шагом 0.5.

Решение:

x=1:0.5:10;

y=x.*exp(x)+log(x)+1;

trapz(x,y)

Решение:

ans =

2.032841320958599e+005

Б. Метод Симпсона. Метод Симпсона реализован в MATLAB также несколькими функциями. Мы рассмотрим простейшую из них:

quad('fun', a, b)

quad('fun', a, b, tol)

Обозначения:

'fun'— подынтегральная функция, взятая в одинарные кавычки;

а, b — пределы интегрирования;

tol — относительная погрешность, задаваемая пользователем; по умолчанию tol=10-3.

Пример. Вычислить интеграл от функции x+ex на отрезке [1, 2] с точностью 10-5.

quad('x+exp(x)', 1, 2, 1e-5)

Результат:

ans = 6.170774280645000e+000

6. Правило Рунге оценки погрешности интегрирования

В формулах для оценки погрешности квадратурных формул R используются значения производных подинтегральной функции, что требует дополнительного анализа и вычислений. В связи с этим получило распространение практическое правило Рунге оценки погрешности.

Пусть

I – точное значение интеграла,

I(n) – значение интеграла вычисленное при n узлах интегрирования h = (b-a)/n,

I(2n) – значение интеграла вычисленное при 2*n узлах интегрирования, h = (b-a)/2n.

Необходимо определить, с какой точностью вычислен итеграл I(2n), т.е. найти абсолютную погрешность

Для непосредственно определения данной погрешности необходимо найти максимум модуля соответствующей производжной от интегрируемой функции на отрезке [a, b]. Часто это достаточно трудоемкий или вообще невозможный процесс. Напрмер если интегрируемая функция задана таблично. В таких случаях оценку погрешности величины I(2n) можно провести следующим образом:

Здесь m = 3 для методов средних прямоугольников и трапеций, m = 15 для метода Симпсона.

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

 

Соседние файлы в папке Lab4