Приближенное вычисление интегралов



Рассмотрим способы приближенного вычисления определенных интегралов

                                                                                  (1)

основанном на замене интеграла конечной суммой

                                                                                             

где ck – числовые коэффициенты и xk – точки отрезка [a,b], k=0,1,…,n. Приближенное равенство

                                                             (2)

называется квадратурной формулой, а сумма вида (2) – квадратурной суммой. Точки xk называются узлами квадратурной формулы, а числа ck - коэффициентами квадратурной формулы.

Введем на [a,b] равномерную сетку с шагом h, т.е. множество точек

,

и представим интеграл (1) в виде суммы интегралов по частичным отрезкам:

                                                       (3)

Для построения формулы численного интегрирования на всем отрезке [a,b] достаточно построить квадратурную формулу для интеграла

                                                                                       (4)

На частичном отрезке [xi -1 , xi] и воспользоваться свойством (3).

Рис. 15.2. Геометрический смысл формулы прямоугольников

 

Формула прямоугольников. Заменим интеграл (4) выражением f ( xi -1/2 ) h, где xi -1/2 = xi - h /2. Геометрически такая замена означает, что площадь криволинейной трапеции ABCD заменяется площадью прямоугольника ABC’D’ (рис. 6). Тогда получаем формулу

                                                (5)

которая называется формулой прямоугольников на частичном отрезке [xi -1 , xi].

 

Рис. 15.3. Вычисление интеграла по формуле прямоугольников

 

Суммируя равенства (5) по I от 1 до N, получаем составную формулу прямоугольников

                                   (6)

Формула трапеций. На частичном отрезке эта формула имеет вид

                                          (7)

И получается путем замены подынтегральной функции f(x) интерполяционным многочленом первой степени, построенным по узлам xi-1,xi, то есть функцией

 

Рис. 15.4. Вычисление интеграла по формуле трапеций

 

Составная формула трапеций имеет вид

 (8)

где .

 

Формула Симпсона. При аппроксимации интеграла (4) заменим функцию f ( x ) параболой, проходящей через точки ( xj , f ( xj )), j = i -1, i -0,5, i, т.е. представим приближенно f ( x ) в виде

Где  - интерполяционный многочлен Лагранжа второй степени,

                                     (9)

Проводя интегрирование, получим

Таким образом, приходим к приближенному равенству

,

которое называется формулой Симпсона или формулой парабол.

 

Рис. 15.5. Вычисление интеграла по формулам Симпсона

На всем отрезке [a,b] формула Симпсона имеет вид

.

Чтобы не использовать дробных индексов, можно обозначить

и записать формулу Симпсона в виде

.                                                         (10)

Все три приближенные способа представлены процедурами MethodRectangle(), MethodTrapezes() и MethodSimpson() в следующем листинге:

Листинг 15.4. Приближенное вычисление интеграла

   static float F(float x)

   {

       return 3 * x * x;

   }

   static float F1(float x)

   {

       return x * x * x;

   }

 

   static float MethodRectangle(float a, float b)

   {

       int n = 200;

       float dx = (b - a) / n;

       float result = 0;

       for (int i = 1; i <= n; i++)

           result += dx * F(a+i*dx);

       return result;

   }

 

   static float MethodTrapezes(float a, float b)

   {

       int n = 200;

       float dx = (b - a) / n;

       float result = (F(a)+F(b))*dx/2;

       for (int i = 1+1; i <= n-1; i++)

           result += dx * F(a + i * dx);

       return result;

   }

 

   static float MethodSimpson(float a, float b)

   {

       int n = 200;

       float dx = (b - a) / n;

       int[] k = new int[] { 2, 4 };

       float result = (F(a) + F(b)) * dx / 3;

       for (int i = 1 + 1; i <= n - 1; i++)

           result += k[i % 2]*dx*F(a + i * dx)/3;

       return result;

   }

 

   static void Main(string[] args)

   {

     float a = 0;

     float b = 1;

 

     Console.WriteLine("Точное={0}",F1(b)-F1(a));

 

     float s = MethodRectangle(a, b);

     Console.WriteLine("Метод прямоугольников");

       Console.WriteLine("s = {0}", s);

       Console.WriteLine("");

 

       s = MethodTrapezes(a, b);

       Console.WriteLine("Метод трапеций");

       Console.WriteLine("s = {0}", s);

       Console.WriteLine("");

 

       s = MethodSimpson(a, b);

       Console.WriteLine("Метод Симпсона");

       Console.WriteLine("s = {0}", s);

       Console.WriteLine("");

 

       Console.ReadKey();

   }

В качестве примера рассмотрим определенный интеграл:

 

.

 

 

Полученные результаты показывают следующее:


Дата добавления: 2022-01-22; просмотров: 11; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!