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

Автор: Пользователь скрыл имя, 29 Декабря 2011 в 08:23, курсовая работа

Описание работы

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

Содержание

Введение…….……………………………………..…………………………………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

Работа содержит 1 файл

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

— 368.50 Кб (Скачать)

 

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

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

Используя данные для задачи (разбиение должно быть кратно 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.

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