Вычисление определенных интегралов методом прямоугольников
При вычислении определенного интеграла методом прямоугольников подинтегральная функция 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()
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 & " : s_test= " & s_test(b - a)
Debug.Print "Метод правых прямоугольников
: s1= " & s1 & " : s_test= " & s_test(b - a)
Debug.Print "Метод средних прямоугольников : s2= " & s2 & " : s_test= " & s_test(b - a)
End Sub
Function f(x)
f = x ^ 2
End Function
Function s_test(x)
s_test = x ^ 3 / 3
End Function
Результат работы программы на VBA:
Метод левых прямоугольников : s= 2,642735936 : s_test= 2,66666666666667
Метод правых прямоугольников : s1= 2,658672 : s_test= 2,66666666666667
Метод средних прямоугольников : s2= 2,650695984 : s_test= 2,66666666666667