Аппроксимация
Площади
Прямоугольниками
Рассмотрим
площадь
фигуры,
ограниченной
линией
на
интервале
[-1, 4].
>
restart;
>
f:=x->x^3-5*x^2+x+10;
>
plot(f(x),
x=-1..4);
Как бы
нам
исхитриться,
да и
вычислить
площадь
фигуры,
ограниченной
этим
графиком
(на
указанном
отрезке)?
Предупреждение:
Ни о
каком
определённом
интеграле
речи
пока не
идёт!
Может
разбить
всю
рассматриваемую
область
на
множество
узких
прямоугольников,
одно
основание
у
которых
принадлежит
оси х ,
а второе
"упирается"
в
кривую?
Одна
часть
таких
прямоугольников
принадлежала
бы
верхней
полуплоскости,
а другая
-
нижней.
Ничего
гениального,
но
именно в
этом и
состоит
основная
идея
аппроксимации
площади
фигуры
прямоугольниками.
Остаются
лишь
детали.
Конкретнее:
разделим
отрезок
[-1;4]
на
определённое
число
равных
суботрезков.
Каждый
из этих
суботрезков
(подотрезков,
подинтервалов)
будем
воспринимать
как одно
из
оснований
соответствующего
прямоугольника.
Противоположное
основание
такого
прямоугольника
пусть
упирается
правым
концом в
график
данной
функции.
Т.е.
одна из
вершин
прямоугольника
(правая
верхняя
или
правая
нижняя)
будет
принадлежать
графику
функции.
Мы можем
с
лёгкостью
выполнить
указанное
построение
при
помощи
специальной
Maple-команды
rightbox
из
пакета
student
.
>
with(student);
>
rightbox(f(x),
x=-1..4,
5);
В данном
случае
мы
используем
5
подинтервалов.
(Команде
rightbox
мы об
этом
сообщили
последним
её
параметром).
Можно с
лёгкостью
определить
сумму
площадей
всех
прямоугольников
(отметьте,
что
основание
каждого
из них
равно
1):
>
evalf(
abs(f(0))
+
abs(f(1))
+
abs(f(2))
+
abs(f(3))
+
abs(f(4))
);
Высота
каждого
из
прямоугольников
будет
совпадать
с
абсолютной
величиной
значения
функции
на
правом
конце
соответствующего
подинтервала).
То же
самое
можно
выполнить
и более
изящно -
с
помощью
команды
sum
:
>
evalf(
sum(1*abs(f(-1
+ k)),
k=1..5)
);
Разумеется,
такое
приближение
является
чрезвычайно
грубым.
Попробуем
использовать
большее
количество
прямоугольников.
Увеличим
их число
вдвое
(при
этом
длина
каждого
подинтервала
уменьшится
вдвое и
станет
равной
1/2):
>
rightbox(f,
x=-1..4,
10);
>
sum((1/2)*abs(f(-1
+
k*(1/2))),
k=1..10);
Ну и так
далее.
Чем
большее
количество
прямоугольников
мы
возьмём,
тем
точнее
их
суммарная
площадь
будет
соответствовать
истинной.
Это
очевидно,
не
правда
ли? В
десятичной
форме
нам
будет
проще
следить
за
изменением
результата.
Увеличим
число
подинтервалов
до
25...:
>
rightbox(f(x),
x=-1..4,
25);
>
evalf(sum((1/5)*abs(f(-1
+
k*(1/5))),
k=1..25));
>
rightbox(f(x),
x=-1..4,
50);
>
evalf(sum((1/10)*abs(f(-1
+
k*(1/10))),
k=1..50));
>
rightbox(f(x),
x=-1..4,
100);
>
evalf(sum((1/20)*abs(f(-1
+
k*(1/20))),
k=1..100));