Автор: Пользователь скрыл имя, 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
Методика решения задачи.
Получение разрешающего уравнения.
Используя данные для задачи (разбиение должно быть кратно 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;
Литература.
Информация о работе Вычисление определенного интеграла с заданной точностью методом Ньютона-Котеса