logo
методичка_1_05_ВНУ

Практичні оцінки точності квадратурних формул. Вибір кроку інтегрування

Розглянемо зручний спосіб визначення похибки квадратурних формул при подвійному перерахунку. Цей спосіб застосовують тоді, коли відомий порядок залишкового члена квадратурної формули відносно кроку h. Зауважимо, що точність квадратурної формули характеризується в основному порядком залишкового члена R(f) відносно степенів h. Якщо залишковий член відносно h має порядок s, тобто R(f)=0 (hs) (s – натуральне число), то квадратурна формула вважається тим точнішою, чим більше число s. Тому на практиці часто спочатку обчислюють визначений інтеграл, використовуючи розбиття на n частин проміжку інтегрування, потім аналогічну процедуру повторюють для розбиття цього ж проміжку на 2n частин. Різницю між першим і другим значенням вважають абсолютною похибкою обчислення визначеного інтеграла за однією із квадратурних формул. Як правило, це припущення виявляється істинним в переважній більшості випадків.

Приклад.

Використовуючи методи наближеного знаходження визначеного інтеграла знайти Використати розбиття проміжку інтегрування на n=2000 частин;

Розв’язання.

Наведемо приклад розв’язку поставленої задачі різними методами.

а) методом лівих прямокутників розв’язок може виглядати так:

Program liv;

Const n=2000;

var i : integer;

a, b, h, x, y, s1, S : real;

Begin

writeln (’ввести значення кінців проміжкy інтегрування’);

readln (a, b);

h:=(b-a)/n;

S:=0;

For i:=1 to n do

begin

x:=a+(i-1)*h;

y:=sqrt(17*x*x+ln(3*x));

s1:=y*h;

S:=S+s1;

end;

writeln (’S=’, S);

end.

b) методом правих прямокутників розв’язок може виглядати так:

Program prav;

Const n=2000;

var i : integer;

a, b, h, x, y, s1, S : real;

Begin

writeln (’ввести значення кінців проміжкy інтегрування’);

readln (a, b);

h:=(b-a)/n;

S:=0;

For i:=1 to n do

begin

x:=a+i*h;

y:=sqrt(17*x*x+ln(3*x));

s1:=y*h;

S:=S+s1;

end;

writeln (’S=’, S);

end.

c) методом середніх прямокутників розв’язок може виглядати так:

Program seredn;

Const n=2000;

var i : integer;

a, b, h, x, y, s1, S : real;

Begin

writeln (’ввести значення кінців проміжкy інтегрування’);

readln (a, b);

h:=(b-a)/n;

S:=0;

For i:=1 to n do

begin

x:=a+(i-1/2)*h;

y:=sqrt(17*x*x+ln(3*x));

s1:=y*h;

S:=S+s1;

end;

writeln (’S=’, S);

end.

d) методом трапецій розв’язок може виглядати так:

Program trap;

Const n=2000;

var i : integer;

a, b, h, x1, x2, y1, y2, s1, S : real;

Begin

writeln (’ввести значення кінців проміжкy інтегрування’);

readln (a, b);

h:=(b-a)/n;

S:=0;

For i:=1 to n do

begin

x1:=a+(i-1)*h;

x2:=a+i*h;

y1:=sqrt(17*x1*x1+ln(3*x1));

y2:=sqrt(17*x2*x2+ln(3*x2));

s1:=(y1+y2)/2*h;

S:=S+s1;

end;

writeln (’S=’, S);

end.