Применение квадратурной формулы Чебышева для вычисления определенного интеграла

Применение квадратурной формулы Чебышева для вычисления определенного интеграла

Введение 

Данная задача заключается в решении определенного интеграла по квадратурной формуле Чебышева. Как известно, вычисление определенного интеграла сводится к вычислению площади криволинейной трапеции, ограниченной кривыми x = 0, y = a, y = b и y = f(x). 

При вычислении определенного интеграла можно воспользоваться известной всем, формуле Ньютона – Лейбница, при условии f(x) непрерывна на отрезке [a, b], а также определена ее первообразная F(x). Но во многих случаях первообразная получается очень сложной для вычисления, да и функция часто задается таблично. Поэтому большое значение приобретает приближенное и в первую очередь численное интегрирование, задача которого заключается в нахождении приближенного значения интеграла по заданным или вычисленным значениям подынтегральной функции f(x) в некоторых точках (узлах) отрезка [a, b]. 

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

Меняя подынтегральную функцию каким-либо интерполяционным многочленом, получаем квадратурные формулы, где x k — выбранные узлы интерполяции; A k — коэффициенты, зависящие только от выбора узлов, но не от вида функции (k = 0, 1, 2,........,n); R — остаточный член, или погрешность квадратурной формулы, отбросив который получим погрешность усечения. Далее, при расчете к погрешности усечения добавляются другие погрешности округления. 

Разбив отрезок интегрирования [a, b] на n равных частей получим следующее: x i = x o + i .. h; (i = 0, 1, 2,......,n) x o = a; x n = b; h= (b-a)/n. Вычислим подынтегральную функцию в полученных узлах: y i = f(x i); (i = 0, 1, 2,......,n). 

Для выведения формул численного интегрирования воспользуемся интерполяционным полиномом Лагранжа. 

Пусть для функции y = f(x) известны в n + 1 точках X0, X1, X2, Xn промежутка [a,b] соответствующие определения f(xi)=yi (i=0,1,2..n). По заданным значениям Yi строим полином Лагранжа, заменяя f(x) полиномом Ln(x), где Rn(f) — ошибка квадратурной формулы. Воспользовавшись выражением для Ln(x), получим приближенную квадратурную формулу. 

Однако заметим, следующее: коэффициенты Ai при данном расположении узлов не зависит от выбора функции f(x); для полинома степени n последняя формула точная. 

Считая, что y = xK (k = 0, 1, 2..,n), получим линейную систему из n + 1 уравнений, где (k = 0, 1,..,n), из которой можно определить коэффициенты А0, А1,..,АN. Определитель системы есть определитель Вандермонда/ 

Но также необходимо заметить, что при применении данного метода фактически построение полинома Лагранжа Ln(x) является излишним. Простой метод подсчета погрешности квадратурных формул разработан С. М. Никольским. 

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

Определим общую формулу Симпсона (параболическая формула) по следующим условиям: пусть n = 2m есть четное число и yi = f(xi) (i = 0, 1, 2...n) - значения функции y = f(x) для равноотстоящих точек а = x0, x1, ... ,xn=b с шагом h. Применив формулу Симпсона к каждому удвоенному промежутку [x0,x2], [x2,x4] ... [x2m-2,x2m] длины 2h и введя обозначения s 1 =y 1 +y 2 + ... +y 2m-1 s 2 =y 2 +y 4 + ... +y 2m получим обобщенную формулу Симпсона и остаточный член формулы Симпсона в общем виде, где x k I (x 2к-2 ,x 2к). 

Рассмотрим квадратурную формулу Чебышева: пусть дана функция f(x) в виде многочлена f(x)=a o +a 1 x+...+a n x n. Проинтегрировав, преобразовав и подставив значения многочлена в узлах: 

f(x 1)=a 0 +a 1 x 1 +a 2 x 12 +a 3 x 13 +...+a n x 1n 

f(x 2)=a 0 +a 1 x 2 +a 2 x 22 +a 3 x 23 +...+a n x 2n 

f(x 3)=a 0 +a 1 x 3 +a 2 x 32 +a 3 x 33 +...+a n x 3n 

f(x n)=a 0 +a 1 x n +a 2 x n2 +a 3 x n3 +...+a n x nn 

получим формулу Чебышева. 

Значения х1,х2,..,хn для различных n приведены ниже в таблице: 

n 

I 

t i 

n 

i 

t i 

2 

1;2 

± 0,577350 

6 

1;6 

± 0,866247 

3 

1;3 

± 0,707107 

 

2;5 

± 0,422519 

 

2 

0 

 

3;4 

± 0,266635 

4 

1;4 

± 0,794654 

7 

1;7 

± 0,883862 

 

2;3 

± 0,187592 

 

2;6 

± 0,529657 

5 

1;5 

± 0,832498 

 

3;5 

± 0,321912 

 

2;4 

± 0,374541 

 

4 

0 

 

3 

0 

 

 

 



Решение контрольного примера: f(x) = sin(x); где a = 0; при n = 5. 

i 

x i 

y i 

1 

0,131489 

0,131118 

2 

0,490985 

0,471494 

3 

0,785 

0,706825 

4 

0,509015 

0,487317 

5 

0,868511 

0,763367 

 

x 1 = p /4+ p /4*t 1 = p /4+ p /4(-0,832498) = 0,131489 

x 2 = p /4+ p /4*t 2 = p /4+ p /4(-0,374341) = 0,490985 

x 3 = p /4+ p /4*t 3 = p /4+ p /4*0=0,785 

x 4 =1- x 2 = 1-0,490985 = 0,509015 

x 5 =1- x 1 = 1-0,131489 = 0,868511 

y 1 = sin(x 1) = sin(0,131489) = 0,131118 

y 2 = sin(x 2) = sin(0,490985)=0,471494 

y 3 =sin(x 3) = sin(0,785) = 0,706825 

y 4 =sin(x 4) = sin(0,509015) = 0,487317 

y 5 =sin(x 5) = sin(0,868511) = 0,763367 

I = p /10(0,131118+ 0,471494+0,706825+0,487317+0,763367) = p /10*2,560121=0,8038779 

Описание алгоритма программы. 

Процедура TABL — это подпрограмма, осуществляющая вывод таблицы узлов (аргумент — функция). 

Процедура CHEB — используя массивы x i и y i, высчитывает по квадратурной формуле Чебышева приближенное значение интеграла. 

Процедура FORM — используя массив, содержащий аргументы x i заполняет массив y i. 

Процедура VVOD — заполняет массив, содержащий в себе аргументы x i. 

При запуске программы необходимо ввести границы интегрирования. После ввода границ интегрирования используется процедура VVOD, а затем высчитывается и выводится на экран шаг табулирования функции h. После этого используем процедуры FORM и CHEB. Получив результат, выводим таблицу (процедура TABL) и интеграл. 

Делая вывод по исследованию нашей работы можно заметить, что вычисление определенных интегралов с помощью квадратурных формул, а в частности по формуле Чебышева не дает нам точного значения, а только приближенное. Чтобы вычислить интеграл более точно нужно уметь правильно выбрать метод и формулу, по которой будет вестись расчет. Также важно какой будет взят шаг интегрирования. На практике не всегда можно решить задачу интегрирования аналитическим способом, поэтому необходимо знать численные методы, хотя и они не могут дать точного значения интеграла. 

Листинг программы: program integral; uses crt; const n = 5; k = -0.832498; l = -0.374541; z = 0.0; type aa = array[1..n] of real; var x,y:aa; a,b,h,ich:real; { заполнение х-сов в массив х[5] }; procedure vvod(var a,b:real;var c:aa); var i:integer; t:aa; Begin t[1]: = k; t[2]: = l; t[3]: = z; t[4]: = l; t[5]: = k; for i: = 1 to n-1 do c[i]: = ((b+a)/2 + (b-a)/2*t[i]); for i: = n-1 to n do; c[i]: = 1 - c[n+1-i]; end; {заполнение y-ков в массиве у[5]} procedure form(var x:aa; var y:aa); var i:integer; Begin for i:=1 to n do y[i]:=sin(x[i]); {функция} end; {процедура для расчета интеграла по квадратурной формуле Чебышева} procedure cheb(var y:aa;var ich:real); var i:integer; Begin ich: = 0; for i: = 1 to n do ich: = ich+y[i]*h; end; {процедура вывода таблицы} procedure tabl; var i:integer; Begin 

writeln('___________________________________'); 

writeln('| i | t | x | y |'); 

writeln('___________________________________'); 

writeln('| 1 |',k:9:6,'|',x[1]:9:6,' |',y[1]:9:6,'|'); 

writeln('| 2 |',l:9:6,'|',x[2]:9:6,' |',y[2]:9:6,'|'); 

writeln('| 3 |',z:9:6,'|',x[3]:9:6,' |',y[3]:9:6,'|'); 

writeln('| 4 |',l:9:6,'|',x[4]:9:6,' |',y[4]:9:6,'|'); 

writeln('| 5 |',k:9:6,'|',x[5]:9:6,' |',y[5]:9:6,'|'); 

writeln('___________________________________'); 

end; Begin clrscr; writeln (Программа для вычисления); writeln (Определенного интеграла); writeln; writeln('Введите границы интегрирования a,b:'); readln(a,b); vvod(a, b, x); h: = (b-a)/n; writeln ('h = ',h:9:6); form(x,y); cheb(y,ich); tabl; writeln('I = ',ich:8:6); end 

Вывод результата: Программа для вычисления определенного интеграла.

Введите границы интегрирования a,b: 0 1.5708, h= 0.314160 

____________________________ 

| i | t | x | y | 

____________________________ 

| 1 |-0.832498| 0.131556 | 0.131177| 

| 2 |-0.374541| 0.491235 | 0.471716| 

| 3 | 0.000000| 0.785400 | 0.707108| 

| 4 |-0.374541| 0.508765 | 0.487099| 

| 5 |-0.832498| 0.868444 | 0.763325| 

____________________________ 

I=0.804383 

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

Ракитин Т. А., Первушин В. А. Практическое руководство по численным методам с приложением программ на языке Basic. 

Крылов В. И. Приближенные вычисления интегралов. — М.: Физмат. 

Демидович и Марон. Основы вычислительной математики. 

Копченова и Марон. Вычислительная математика в примерах и задачах. 

Вольвачев А. Н., Крисевич В. С. Программирование на языке Паскаль для ПЭВМ ЕС. — Минск, 1989. 

Зуев Е. А. Язык программирования Turbo Pascal. — М., 1992. 

Скляров В. А. Знакомьтесь: Паскаль. — М., 1988.