Вычисление определенного интеграла с заданной точностью методом Ньютона-Котеса

НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
 

Кафедра: «Высшая математика»

Курсовая  работа

 

по  информатике 
 

Тема:

Вычисление определенного интеграла с заданной точностью методом Ньютона-Котеса (n=7) 

Вариант №  4 
 

      Выполнил:  студент группы 10-А3

Ераксин О.В.

                            

                                      Проверил:    Толкачёв И.Н.  
 

Нижний  Новгород

2011

Содержание

Стр.

    Введение…….……………………………………..…………………………………3

1. Постановка  задачи   ……………………………..…………………………………..6

1.1. Вычисление определенного интеграла с заданной точностью методом    Ньютона-Котеса ………………………………………………………………………..6

2. Методика решения  задачи ..……………………………………………………….10

2.1. Получение разрешающего уравнения ...…….………..…………………….......10

         2.2 Вычислительная схема метода Ньютона-Котеса ....………………….......11

3. Блок-схемы  алгоритма……………………………………………………………..12

         3.1. Блок-схема основной программы………………………………………...12

         3.2. Блок-схема процедуры……………………………………………….........14                          

         3.3. Блок-схема функции ……….........................................................................15

4. Программа  на языке Pascal………………………………………………………...16

4.1. Основная  программа..............................................................................................16

4.2. Процедура................................................................................................................19

5.Выводы....……………………………….…………………………………...……....206.Литература………………………………………………………………………......22 
 
 
 
 
 
 
 
 
 
 

Введение.

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

Методы  численного интегрирования классифицируются в зависимости от того, заданы ли значения аргумента через равные интервалы или нет. Краткий обзор некоторых из них.

Формулы Ньютона — Котеса получаются путем замены подынтегральной функции интерполяционным многочленом Лагранжа с разбиением отрезка интегрирования на n равных частей. Получающиеся формулы используют значения подынтегральной функции в узлах интерполяции и являются точными для всех многочленов некоторой степени, зависящей от числа узлов. Точность формул растет с увеличением степени интерполяционного многочлена. Заметим, что формулы прямоугольников, трапеций и Симпсона являются частными случаями формул Ньютона — Котеса.

Метод Гаусса не предполагает разбиения отрезка интегрирования на равные промежутки. Формулы численного интегрирования интерполяционного типа ищутся такими, чтобы они обладали наивысшим порядком точности при заданном числе узлов. Узлы и коэффициенты формул численного интегрирования находятся из условий обращения в нуль их остаточных членов для всех многочленов максимально высокой степени.

Формула Эрмита, являющаяся частным случаем формул Гаусса, использует многочлены Чебышева для вычисления интегралов вида

Получающаяся  формула характерна тем, что все  коэффициенты при  равны.

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

Формула Чебышева представляет интеграл в виде

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

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

При вычислении определенного интеграла, где - непрерывная на отрезке функция, иногда удается воспользоваться известной формулой Ньютона - Лейбница:

  (1)

Здесь - одна из первообразных функций (т.е. такая функция, что ). Однако даже в тех, практически редких, случаях, когда первообразную удается явно найти в аналитической форме, не всегда удается довести до числового ответа значение определенного интеграла. Если к тому же учесть, что иногда подынтегральная функция вовсе задается таблицей или графиком, то становится понятным, почему интегрирование по формуле (1) не получает широкого применения на практике.

В подобных случаях применяют различные  методы приближенного (численного) интегрирования. Формулы, используемые для приближенного вычисления однократных интегралов, называют квадратурными формулами. Простой прием построения квадратурных формул состоит в том, что подынтегральная функция заменяется на отрезке интерполяционным многочленом, например многочленом Лагранжа  и получается приближенное равенство

    (2)

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

Постановка  задачи.

Вычисление  определенного интеграла  с заданной точностью  методом Ньютона-Котеса.

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

,

 получим:

Таким образом:

(3)

где

(4)

По поводу полученных формул можно заметить,  что:

1)  коэффициенты  не зависят от функции , так как они составлены только с учетом узлов интерполяции;

2) если  - полином степени n, то тогда формула (2) точная, ибо в этом случае .

Как уже  отмечалось выше, применение формулы (2) предполагает построение на отрезке интегрирования системы узлов интерполяции (здесь ), которыми отрезок делится на n частей. Длина называется при этом шагом интегрирования. Естественно считать, 
что шаг h  постоянен, т. е. . В этом случае можно 
применить интерполяционную формулу Лагранжа для равноотстоящих узлов. Итак, с учетом

и

формула (5.21) для «весовых» коэффициентов

, принимает вид:  
.  (5)

Перейдем  в этом интеграле всюду к переменной t. Из подстановки   получаем:   ,  т. е. .

При имеем ,  а при  будет . Тогда

, (6)

где

.    (7)

Числа (5) называют коэффициентами Котеса. Как видно, коэффициенты Котеса не зависят от функции , а только от числа n точек разбиения. С учетом формул (3) и (6), получаем следующий вид квадратурных формул Ньютона - Котеса:

  (8)

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

Последний член в формуле Ньютона — Котеса:

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

k— степень используемых многочленов, x*— некоторая точка в интервале , - значение k-й производной функции в точке x* (в этой точке принимает максимальное значение).

Значения   коэффициентов и приведены в табл. (см. ниже). В каждой строке этой таблицы представлен цикл k полос, включающий k+1 узловых точек, необходимых для получения многочлена k-й степени.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Коэффициенты  в формуле Ньютона - Котеса 

k
1 1 1              
2 1 4 1            
3 1 3 3 1          
4 7 32 12 32 7        
5 19 75 50 50 75 19      
6 41 216 27 272 27 216 41    
7 751 3577 1323 2989 2989 1323 3577 751  
8 989 5888 -928 10946 -4540 10946 -928 5888 989

 

Методика  решения задачи.

Получение разрешающего уравнения.

Используя данные для задачи (разбиение должно быть кратно 5), получаем уравнение для одного цикла:

Для нескольких циклов, суммируя, получаем:

 

Вычислительная  схема метода Ньютона-Котеса.

Заданы значения: n, a, b, ω(z).

1.

2.

3. S = 0

4.

     5. C I = 1, до n

     6. С J=1, до 6

      7.

      8.

     9.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Блок-схемы  алгоритма.

Блок-схема  основной программы.

 
 
 
 
 
 
 
 
 
 

 

Блок-схема  процедуры метода Ньютона-Котеса.

 
 
 
 

Блок-схема  функции.

 
 
 
 
 
 

 

Программа на языке Pascal.

Основная  программа.

Program Kurs_rab;

Uses Crt, MNK; 

Const fdata='fdata.pas';

Type Tip_r=double; 

Var n:integer; fd:text; a,b:real; i,i0:double; it,e,h:Tip_r; k,m,j:integer; 

Function f(x:real):double; far;

Begin

F :={x*x}sqrt(1-0.49*sqr(sin(x)));

End; 

Begin

Clrscr;

Assign (fd,fdata);

Reset (fd);

Readln (fd,a);

Readln (fd,b);

Readln (fd,e);

Readln (fd,n);

Readln (fd,m);

Readln (fd,it);                     {Окончание ввода параметров}

Append (fd);

Writeln (fd);

Writeln;

Writeln ('Значение начала области интегрирования: ',a:6:8);

Writeln (fd,'Значение начала области интегрирования: ',a:6:8);

Writeln ('Значение конца области интегрирования: ',b:6:8);

Writeln (fd,'Значение конца области интегрирования: ',b:6:8);

Writeln ('Минимальное значение приближения: ',e:6:8);

Writeln (fd,'Минимальное значение приближения: ',e:6:8);

Writeln ('Начальное значение деления области интегрирования: ',n:3);

Writeln (fd,'Начальное значение деления области интегрирования: ',n:3);

Writeln ('Количество итераций: ',m:6);

Writeln (fd,'Количество итераций: ',m:6);     {Окончание вывода параметров}

K:=1;                            {Начало вычисления интеграла}

Mnk (f,a,b,n,i);

Writeln (fd,'Число итераций (k)',k:6);

Writeln ('Число итераций (k)',k:6);

Writeln (fd,'Значение интеграла (i)  ',i:6:10);

Writeln ('Значение интеграла (i)  ',i:6:10);

Repeat

N: =2*n;

I0:=i;

Mnk (f,a,b,n,i);

Writeln (fd,'Значение k',k:6);

Writeln ('Значение k',k:6);

Writeln (fd,'Значение i  ',i:6:10);

Writeln ('Значение i  ',i:6:10);

Writeln ('Значение n',n:6);

Writeln (fd,'Значение n',n:6);

K: =k+1;

If k>=m then

Begin

Writeln ('Закончились итерации!!!');

Writeln (fd,'Закончились итерации!!!');

Break;

End;

Until (abs(i-i0)<=e);

Writeln (fd,'Значение k',k:6);

Writeln ('Значение k',k:6);

Writeln (fd,'Значение интеграла (i)  ',i:6:10);

Writeln ('Значение интеграла (i)  ',i:6:10);

Writeln ('Значение n',n:6);

Writeln (fd,'Значение n',n:6);

Writeln ('Значение (b-a)/n ',(b-a)/n:6:8);

Writeln (fd,'Значение (b-a)/n ',(b-a)/n:6:8);

Writeln ('Отклонение от точного значения: ',abs(it-i));

Writeln (fd,'Отклонение от точного значения: ',abs(it-i));

Writeln (fd,'Точное значение интеграла: ',it:6:8);

Writeln ('Точное значение интеграла: ',it:6:8);

Writeln ('Для выхода нажмите Enter');

Readkey;

Close(fd);

End. 

 

Процедура. 

Unit M_N_K;

Interface

Const

n1=6; w:array[1..n1]of real=(19,75,50,50,75,19);

Type

R_F=function(x:real):real; Tip_r=extended;

Procedure mnk(f:r_f;a,b:real; n:integer; var s:real);

Implementation

Uses crt;

Procedure mnk;

var h,x,m:Tip_r; j,i:integer;

Begin

S: =0;

M: =n;

H: =(b-a)/m;

X: =a;

For j: =1 to n do

Begin

For I: =1 to n1 do

S: =s+w[i]*f(x+(i-1)*h);

X: =x+7*h;

End;

S :=(7/288)*h*s;

End;

End. 
 

 

Выводы.

В данной работе был рассмотрен метод Ньютона-Котеса, по которому была написана программа с определением шага, которая является более точной, чем с ручным заданием шага, т.к. при определении шага конечное значение x=b, а при ручном x>b, и из-за этого расчётное значение интеграла оказывается больше.

Результаты  тестирования.

Я провёл исследование зависимости погрешности  от числа участков n на примере функции значение интеграла .

Таблица результатов тестирования:

K N H
1 1 0,314159 5.843505E-06
2 2 0,157079 8.417681E-08
3 4 0.078539 1.312489E-09
4 8 0.039269 4.343255E-11
5 16 0.019634 2.337268E-11
6 32 0.009817 2.337810E-11
7 64 0.004908 2.337977E-11
8 128 0.002454 2.337982E-11
9 256 0.001227 2.338028E-11
10 512 0.000613 2.337981E-11
11 1024 0.000307 2.337977E-11
12 2048 0.000153 2.338044E-11
13 4096 0.000077 9.266549E-01
14 8192 0.000038 1.399958E-09
15 16384 0.000019 1.399958E-09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Рассмотрим  график изменения погрешности от числа участков интегрирования:

Для подобных интегралов точность до шестого знака после запятой достигается на 2 итерации, далее на 12 итерации она падает из–за погрешности в определении шага и операциями с этой величиной, при большой величине разбиения области интегрирования, т. к. разница между соседними значениями x и, следовательно, значениями функции, близка к нулю.

Достоинства и недостатки метода.

К достоинствам метода можно отнести:

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

2. Возможно определить погрешность по формуле: , очевидно, что при уменьшении h величина убывает еще быстрее.

К недостаткам  метода можно отнести:

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

2. При  вычислении интеграла, функция  которого внутри интервала [a;b] быстро падает или растёт, для достижения высокой точности программе необходимо совершить большое количество итераций, а следовательно и значений функции, при этом величина шага стремится к нулю. Из-за этого программе требуется большое “количество” системных ресурсов и времени.

Литература.

  1. Турчак Л.И. Основы численных методов. М.: Наука,1987.
  2. Шуп Т. Решение инженерных задач на ЭВМ. М.: Мир,1982.
  3. Зубов В.С. Справочник программиста. М.: Филинъ,1999.
  4. Данилина Н.И., Дубровская Н.С., Кваша О.П., Смирнов Г.Л., Феклисов Г.И., Численные методы. М.: Высшая школа,1976.
  5. Заварыкин В.М., Житомирский В.Г., Лапчик М.П., Численные методы. М.: Просвещение,1991.
Вычисление определенного интеграла с заданной точностью методом Ньютона-Котеса