Добавлен: 29.10.2018
Просмотров: 343
Скачиваний: 9
Вычисление определенных интегралов методом прямоугольников
При вычислении определенного интеграла методом прямоугольников подынтегральная функция 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