Файл: Вычисление определенных интегралов.doc

Добавлен: 29.10.2018

Просмотров: 363

Скачиваний: 10

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Вычисление определенных интегралов методом прямоугольников


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


Формула для приближенного вычисления интеграла будет иметь вид:

где Si = fi*hi – площадь i – го прямоугольника, fi - значение функции в некоторой точке внутри i – го отрезка, hi – ширина этого отрезка. В частном случае, когда все отрезки имеют одинаковую ширину, hi = h =(b-a)/n.


Если высота i – го прямоугольника вычисляется по значению подынтегральной функции в левой границе прямоугольника – этот метод называется методом левых прямоугольников, соответственно при вычислении высоты прямоугольника по значению подынтегральной функции в правой границе прямоугольника называют методом правых прямоугольников.

Метод правых (рис.1) и левых (рис.2) прямоугольников имеет сравнительно высокую погрешность.

Рис. 1 Метод правых прямоугольников. Рис.2 Метод левых прямоугольников.


Если функция на всем интервале интегрирования возрастает, тогда метод левых прямоугольников дает заниженное значение интеграла, а метод правых прямоугольников – завышенное значение, и наоборот, если функция убывающая, то метод левых прямоугольников дает завышенное, а метод правых прямоугольников – заниженное значение интеграла.

Более низкую погрешность имеет метод средних прямоугольников (рис.3), в котором высота прямоугольников вычисляется по значению подынтегральной функции в середине отрезка интегрирования. В этом случае Si = f((xi+1 - xi )/2)*(xi+1 - xi ) или, в случае равномерной сетки, Si = f(xi +h/2)*h

Рис. 3 Метод средних прямоугольников.


Описание алгоритма вычисления определенного интеграла методом прямоугольников:


n=значение

а=значение

b=значение

h=(b-а)/n


s=0

s1=0

s2=0

Цикл по х от а до b-h с шагом h

s=s+f(x)*h && метод левых прямоугольников

s1=s1+f(x+h)*h && метод правых прямоугольников

s2=s2+f(x+h/2)*h && метод средних прямоугольников

КонецЦикла


Печать s, s1, s2


ЗадатьФункцию F

Параметры x

Вернуть (выражение подынтегральной функции от x)


Пример решения на языке VFP:

clear

k=2

?k^3/3

n=500

a=0

b=2


h=(b-a)/n

s=0

s1=0

s2=0

FOR x=a TO b-h STEP h

s=s+f(x)*h &&метод левых прямоугольников

s1=s1+f(x+h)*h &&метод правых прямоугольников

s2=s2+f(x+h/2)*h &&метод средних прямоугольников

endfor


?"s=",s," s1=",s1, "s2=", s2



FUNCTION f

PARAMETERS x

RETURN x^2


Пример решения на языке VBA:

Sub sub1()

k = 2

Debug.Print k ^ 3 / 3

n = 500

a = 0

b = 2


h = (b - a) / n

s = 0

s1 = 0

s2 = 0

For x = a To b - h Step h

метод левых прямоугольников

s = s + f(x) * h

метод правых прямоугольников

s1 = s1 + f(x + h) * h

метод средних прямоугольников

s2 = s2 + f(x + h / 2) * h

Next

Debug.Print "s=", s, " s1=", s1, "s2=", s2


End Sub


Function f(x)

f = x ^ 2

End Function

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


Вычисление определенного интеграла по методу трапеций сводится к вычислению площади фигуры, ограниченной осью абсцисс, графиком подынтегральной функции и прямыми x = a и x = b. Будем линейно аппроксимировать функцию f(x) на некотором разбиении отрезка [a,b] на n частей.

Формула для приближенного вычисления интеграла будет иметь вид:

где Si = (fi-1 +fi)*h/2 – площадь i – й трапеции, где h=(b-a)/n.

Если раскрыть скобки в выражениях для Si, то формула для вычисления интеграла примет вид:

Описание алгоритма вычисления определенного интеграла методом трапеций:

n=значение

а=значение

b=значение

h=(b-а)/n


s=0

Цикл по х от а до b-h с шагом h

s=s+(f(x)+f(x+h))*h/2

КонецЦикла


Печать s


Задать_Функцию F

Параметры x

Вернуть (выражение подынтегральной функции от x)


Пример решения на языке VFP:


clear

k=2

?k^3/3

n=500

a=0

b=2


h=(b-a)/n

s=0

FOR x=a TO b-h STEP h

s=s+(f(x)+f(x+h))*(h/2)

endfor


?s3


FUNCTION f

PARAMETERS x

RETURN x^2


Пример решения на языке VBA:

Sub sub1()

k = 2

Debug.Print k ^ 3 / 3

n = 500

a = 0

b = 2


h = (b - a) / n

s = 0

For x = a To b - h Step h

s=s+(f(x)+f(x+h))*(h/2)

Next

Debug.Print "s=", s

End Sub


Function f(x)

f = x ^ 2

End Function


Вычисление интеграла по методу Симпсона

Метод Симпсона применяется для вычисления определенных интегралов вида I=.




Разобьем отрезок [a, b] на n точек.



Представим искомый интеграл в виде суммы интегралов: , здесь

Р
ассмотрим i-ый отрезок [xi-1, xi]

xi-1/2=(xi+xi-1)/2 – середина i-го отрезка


Представим на отрезке [xi-1, xi] подынтегральную функцию f(x) в виде полинома третьей степени Pi(x). Этот полином должен быть равен значениям подынтегральной функции в точках сетки и в середине отрезка: Pi(xi-1) = f(xi-1) – равенство полинома значению функции на левой границе i-го отрезка, Pi(x i-1/2) = f(xi-1/2), Pi(x i) = f(xi).


Такой полином можно записать, например, следующим образом:

Pi(x)=a+b(x-xi-1)+c(x-xi-1)(x-xi-1/2),

здесь a, b, c – неизвестные коэффициенты, подлежащие определению.


Введем обозначение для ширины i-го отрезка: hi=xi-xi-1,

тогда (x-xi-1/2)= hi/2, а (xi-1/2-x i-1)= hi/2.


Запишем значения полинома на левой, правой границах и в середине i-го отрезка


Pi(x i) = a+b*hi+c*hi*hi/2 = f(x i)= fi (1)


Pi(x i-1) = a = f(x i-1)= fi-1 (2)


Pi(x i-1/2)= f(x i-1/2)= a+b*hi/2 = fi-1/2 (3)


Из соотношения (2) следует a= fi-1,

из выражения (3) легко увидеть, что b= hi (fi-1/2 - fi)/2,

из выражения (1) получаем c=2 (fi-a-b hi)/hi2, подставим в выражение для коэффициента c выражения для коэффициентов a и b, в результате получим:


c=2(fi - fi-1) /hi2(2/hi)(2/hi) (fi-1/2- fi-1),


c=2 [fi - fi-1-2 fi-1/2+2 fi-1] /hi2,


c=2 [fi -2 fi-1/2+fi-1] /hi2.


Подставим найденные коэффициенты a, b, c в выражение для полинома:


Pi(x )= fi-1 + 2 (fi-1/2- fi-1)( x -x i-1) /hi + 2 [fi -2 fi-1/2+fi-1] ( x -x i-1) ( x -x i-1/2)/hi2


Перейдем от переменной x к переменной t= x -x i-1

Тогда dt = dx, а при x = x i-1; t=0, при x = x i; t=hi при

x = x i-1/2=x-( xi -x i-1)/2= x-xi/2 -x i-1/2= x- x i-1+x i-1/2-xi/2=t-hi/2



Тогда на i-ом интервале значение интеграла с учетом введенных обозначений, можно записать:


Si==at+bt2/2+ct3/3-ct2hi/4 =

=ahi+bhi2/2+chi3/3-chi3/4 = ahi+bhi2/2+chi3(1/3-1/4)= ahi+bhi2/2+chi3/12 =

= fi-1hi+ (hi2/2)(fi-1/2-fi-1)/(hi2/2)+ (hi3/12)(2/hi2)(fi-2fi-1/2+ fi-1)=

= fi-1hi+ hifi-1/2- hi fi-1+(hi/6)(fi-2fi-1/2+ fi-1)=

= fi-1hi+(hi/6) fi-1 - fi-1 hi+hi fi-1/2-(hi/3)fi-1/2+(hi/6) fi=

=(hi/6) fi-1+ (2hi/3)fi-1/2+(hi/6) fi


Таким образом,

Si= (hi/3)( fi-1/2+2 fi-1/2 +fi/2)


Si - представляет собой значение интеграла на i-ом отрезке. Для получения интеграла на отрезке от a до b, необходимо сложить все Si


Если hi=h для любого i=1,…, N, тогда Si= (hi/3)( fi-1/2+2 fi-1/2 +fi/2) и формулу Симпсона можно упростить


(4)


Формулу (4) можно упростить, для этого раскроем скобки в выражении под знаком суммирования



Выделим из первой суммы значение функции в точке x=a

,


а из последней суммы – значение функции в точке x=b


В результате получаем рабочую формулу Симпсона для равномерной сетки.



или



Учтем, что , , получим окончательное выражение для формулы Симпсона


(5)

В первой сумме формулы (5) вычисляют сумму значений функции во всех внутренних узлах отрезка [a, b], вторая сумма вычисляет сумму значений функции в средних точках i-ых отрезков.


Если середины отрезков включить в сетку наряду с узлами, тогда новый шаг h0 = h/2 = (b-a)/(2*n), а формула (5) может быть записана в виде:


(6)


Рассмотрим . Значение данного интеграла легко найти аналитически и оно равно -0,75. Метод Симпсона для подынтегральной функции в виде полинома степени 3 и ниже дает точное значение.

Алгоритм вычисления этого интеграла методом Симпсона (формула (5) ).

a=0

b=1

n=5

h=(b-a)/n


f0=f1(a)

fn=f1(b)


s1=0

x1=a+h

цикл по i от 1 до n-1

s1=s1+f1(x1)

x1=x1+h

конец цикла

x2=a+h/2


s2=0

цикл по I от 1 до n

s2=s2+f1(x2)

x2=x2+h

конец цикла


s=h*(f0+2*s1+4*s2+fn)/6


Печать s


функция f1

параметры x

возврат x^3+3*x^2 + x*4 - 4




Пример программы вычисления интеграла методом Симпсона на языке VFP (по формуле (6)).


CLEAR

SET DECIMALS TO 10


? "I=",simpson(0,2,20)

x=2

? "I=",x^3/3


PROCEDURE simpson

PARAMETERS a,b,n


h=(b-a)/n

S_четные=0

S_нечетные=0

for x=a+h TO b-h STEP 2*h

S_нечетны = S_нечетные + 4*f(x)

NEXT


for x=a+2*h TO b-h STEP 2*h

S_четные = S_четные + 2*f(x)

NEXT


S=f(a)*h/3+(S_четные+S_нечетные)*h/3+f(b)*h/3

RETURN s



FUNCTION f

PARAMETERS x

RETURN x^2


Пример решения на языке VBA:


'процедура проверки правильности вычисления значения интеграла по его первообразной

Sub integ()

x = 2

i = x ^ 3 / 3

Debug.Print i

End Sub


Function f(x)

f = x ^ 2

End Function


Sub simpson()

a = 0

b = 2

n = 30

x = 2

h = (b - a) / n


s_четные = 0

s_нечетные = 0


For x = a + h To b - h Step 2 * h

s_нечетные = s_нечетные + 4 * f(x)

Next

Debug.Print "s_нечетные = " & s_нечетные


For x = a + 2 * h To b - h Step 2 * h

s_четные = s_четные + 2 * f(x)

Next

Debug.Print "s_четные=" & s_четные


s = h / 3 * (f(a) + (s_четные + s_нечетные) + f(b))

Debug.Print "n=" & n & " s=" & s

End Sub