Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале)
Рефераты >> Кибернетика >> Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале)

mainint:=sum*(b-a);

end;

end.

================================================

=======ОСНОВНАЯ ПРОГРАММА=======

================================================

{$N+}

program Newton_Cotes_metod;{Программа нахождения определенного интеграла}

uses {методом Ньютона-Котеса }

k_unit,k_graph,graph,crt;

const

t=15;

var

c:char;

a1,b1,a,b:real;

n1,v,r,n:integer;

h,y:array[0 t] of double;

ea,k:word;

int:double;

f:string;

begin

ea:=10;

v:=detect;

initgraph(v,r,'');

cleardevice;

newsc(ea);

winwin1;

setcolor(15);

outtextxy(380,430,'Нажмите F2 для смены языка.');

repeat

win1(ea);

settextstyle(3,0,1);

outtextxy(178,340,'Press Enter .');

delay(13000);

bar(178,340,350,365);

delay(13000);

if keypressed then {Смена языка}

begin

c:=readkey;

if c=#60 then

begin

ea:=ea+1;

newsc(ea);

winwin1;

setcolor(15);

if ea mod 2 =0 then

outtextxy(380,430,'Нажмите F2 для смены языка.')

else

outtextxy(380,430,'Press F2 key to change language.');

end;

end;

until c=#13;

repeat

newsc(ea);

win2(ea,k); {Ввод способа задания функции}

case k of

0:

wwod1(ea,y,n,a,b);

1:

begin

wwod2(ea,ea,n1,a1,b1,f);

n:=n1;a:=a1;b:=b1;

k:=4;

end;

end;

if k=4 then

funktia(n,a,b,y,1,f);

int:=mainint(n,a,b,y); {Вычисление интеграла}

hkoef(n,h);

proline(ea);

win3(ea,n,a,b,int,f,h,k); {Последнее меню вывода результатов}

until k<>4;

closegraph;

end.

Окна ввода и вывода программы

Тестовые испытания

Рассмотрим результаты тестовых испытаний для функций sin(x) на интервале [-5;3] и exp(x) на интервале [2;8]

 

n=1

n=2

n=3

n=4

n=5

n=7

Sin(x)

4,040017

3,02112

0,087629

1,779012

1,537481

1,246

Exp(x)

8965,041

3581,999

3271,82

3002,908

2990,644

2974,322

N=9

n=12

 

1,273561

1,27366

 

2973,593

2973,569

 

Видно, что при увеличении числа узлов интерполяции точность растет, однако при больших n (n>15) наблюдался обратный эффект.

Рекомендуемый диапозон n: от 7 до 13.

Полезные советы по работе с программой

1) Интерфейс программы составлен на 2 языках: русском и английском. Переход с одного языка на другой осуществляется в вводном окне путем нажатия клавишы F2. Сменить язык можно только в этой части программы.

2) При вводе значений функции вручную необходимо вводить только цифры и после каждого ввода нажимать клавишу ENTER.

3) При испытании программы под разные операционные системы(Dos, Windows 98-2k,NT, из под паскаля) происходил непонятный баг с неверным выводом на экран значений коэффициентов Ньютона-Котеса, хотя интеграл считался верно. Для нормального нахождения их желательно запускать программу через Dos.

4) При вводе параметров в “Меню задания параметров нахождения интеграла” желательно их вводить постепенно сверху вниз, т.е. сначала ввести количество узлов интерполяции, затем пределы интегрирования, а уж потом вводить саму функцию.

5) Данная версия программы не способна распознавать все функции. Она может распознать только стандартные функции Турбо Паскаля и еще несколько дотполнительных: sin(x)/x, cos(x)*x ,arcctg(x). Для работы со специфическими функциями необходимо в модуле K-unit в процедуре RASPOSN в конце, перед end else, добавить :

k:=pos(‘Формула f(x)’,f);

if k<>0 then t:= ‘Формула f(x)’;

где ‘Формула f(x)’ – желаемая формула для распознования.

6) Вся помощь по вводу и работе с пограммой выводится в окне помощи.

Вывод

Для нахождения интеграла существует много методов, однако, метод Ньютона-Котеса один из самых быстрых: достаточно знать значения коэффициентов для n=4, чтобы с точностью до сотых мгновенно посчитать интеграл. Быстрота и простота –главные части этого метода.

Список литературы

В.И. Грызлов «Турбо Паскаль 7.0» Москва: ДМК 2000г.

Данилина «Численные методы» Москва: Высшая школа 1978г.


Страница: