Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 1
ЛАБОРАТОРНАЯ РАБОТА № 8-2
ИНТЕГРАЛЬНЫЕ СУММЫ
Напомним, что определённым интегралом функции y=f(x) по промежутку [a,b] называется конечный предел интегральных сумм при стремящемся к нулю (а n). Предел берётся по всем разбиениям промежутка [a,b] на n отрезков длиной , а произвольная точка, принадлежащая i-ому отрезку разбиения. Таким образом,
.
Геометрически определённый интеграл представляет площадь криволинейной трапеции под графиком положительной функции. Если на некотором отрезке функция отрицательна, то определённый интеграл по этому промежутку отрицателен.
В пакете student есть команда leftbox(), которая строит график функции и отображает интегральную сумму в виде последовательности прямоугольников для заданного разбиения промежутка интегрирования, причем точки, в которых вычисляются значения функции для интегральной суммы, соответствуют левым концам отрезков разбиения (её называют левой суммой в противоположность правой сумме, в которой значения функции берутся на правых концах отрезков разбиения интервала интегрирования):
> f:=x->-(x-2)*(x-3)*(x-4)+x^2*(x-3);
> with(student):
> leftbox(f(x),x=0..4,10);
Команда leftsum() вычисляет левую сумму для заданного разбиения, которая аппроксимирует определённый интеграл от заданной функции на заданном промежутке (4/10=2/5):
> leftsum(f(x),x=0..4,10);
> evalf(%);
Увеличивая число отрезков разбиения заданного промежутка, мы все точнее и точнее будем вычислять площадь криволинейной трапеции, а тем самым и определённый интеграл:
> boxes:=[seq(i^2,i=2..20)];
> seq(evalf(leftsum(f(x),x=0..4,n)), n=boxes);
24., 18.56790123, 17.25000000, 16.74240000, 16.49382715, 16.35318617,
16.26562500, 16.20728548, 16.16640000, 16.13660269, 16.11419753,
16.09691537, 16.08329863, 16.07237531, 16.06347656, 16.05612959,
16.04999238, 16.04481242, 16.04040000
> inttrue:=int(f(x),x=0..4);
inttrue=16
Мы видим, что последовательность левых сумм постепенно приближается к точному значению интеграла, которое равно точно 16.
Можно создать анимационную картинку изменения отображения левых сумм, добавив в качестве заголовка ее значение при соответствующем числе разбиений промежутка интегрирования:
> S:=seq(leftbox(f(x),x=0..4,n,
title=convert(evalf(leftsum(f(x),x=0..4,n)),string)),
n=boxes):
> with(plots):
> display(S,insequence=true);
Замечание
На рисунке представлены три кадра анимационного изображения: первый, восьмой и тринадцатый.
В пакете student имеются команды middlebox() и rightbox(), аналогичные leftbox(), но строящие прямоугольники с высотой, равной значениям функций, соответственно, в средних и правых крайних точках отрезков деления промежутка интегрирования, а также аналогичные команде leftsum() команды middlesum() и rightsum(). Возможности Maple позволяют отобразить графики изменения левой, средней и правой сумм в зависимости от числа отрезков разбиения интервала интегрирования:
> SL:=[seq([n,evalf(leftsum(f(x),x=0..4,n))], n=boxes)]:
> SM:=[seq([n,evalf(middlesum(f(x),x=0..4,n))], n=boxes)]:
> SR:=[seq([n,evalf(rightsum(f(x),x=0..4,n))], n=boxes)]:
> plot([SL,SM,SR],view=[0..200,14..21],
color=black,thickness=2,linestyle=[1,4,7]);
На рисунке график левой суммы представлен сплошной линией, средней штрих пунктирной линией и правой точечной линией. По горизонтальной оси координат откладывается число отрезков разбиения. Видно, что при небольшом числе отрезков разбиения для нашей функции правая сумма совершает одно колебание, но с увеличением числа отрезков характер изменения всех трёх сумм стабилизируется: значения средней суммы лежат между значениями правой и верхней, причем значения правой суммы меньше значений левой.
ЗАДАНИЯ. 1. Построить процессы для leftsum, rightsum, middlesum, взяв в качестве последовательности boxes1 i=1..100. Тогда анимация будет идти медленнее и нагляднее.
2. Проделать то же для . Вычислить интегральные суммы и интеграл.
При строгом определении интеграла в рассмотрение вводят нижние и верхние суммы Дарбу, в которых значение функции на отрезках разбиения представляет, соответственно, минимальное и максимальное значение функции на отрезке. Создадим две процедуры, вычисляющие суммы Дарбу подынтегральной функции:
> lowDarbou:=proc(f::anything,x::name,s::`..`,n::integer)
local i,dx,x0;
dx:=(op(2,s)-op(1,s))/n;
sum(dx*minimize(f,x=op(1,s)+dx*(i-1)..dx*i),i=1..n);
end proc:
> highDarbou:=proc(f::anything,x::name,s::`..`,n::integer)
local i,dx,x0;
dx:=(op(2,s)-op(1,s))/n;
sum(dx*maximize(f,x=op(1,s)+dx*(i-1)..dx*i),i=1..n);
end proc:
Параметрами этих процедур являются подынтегральная функция f, имя ее независимой переменной x, диапазон интегрирования s и число промежутков разбиения интервала интегрирования n. Для нахождения минимального и максимального значений функции на заданном промежутке использованы команды minimize() и maximize().
В курсе математического анализа доказывается, что значение нижней суммы Дарбу всегда меньше значения верхней суммы Дарбу при любом числе промежутков разбиения интервала интегрирования. Это означает, что график верхней суммы Дарбу как функции от числа промежутков разбиения расположен всегда выше графика нижней суммы Дарбу. При стремлении количества промежутков разбиения к бесконечности эти суммы сходятся к одному и тому же числу, которое равняется значению определённого интеграла от заданной функции на заданном интервале. В Maple все эти предложения можно легко проверить графическим способом:
> high:=[seq([n,highDarbou(f(x),x,0..4,n)],n=2..30)]:
> low:=[seq([n,lowDarbou(f(x),x,0..4,n)],n=2..30)]:
> plot([high,low,int(f(x),x=0..4)],x=0..30,
color=black,thickness=2,linestyle=[1,4,7]);
На рисунке верхняя сумма Дарбу представлена сплошной, нижняя штрих-пунктирной, а значение интеграла точечной линиями. Конечно, при таком небольшом разбиении, которое выбрано нами, суммы Дарбу еще значительно отличаются от значения интеграла, но если вычислить их при большом значении n, то мы увидим, что они действительно сходятся к нему, правда достаточно медленно:
> int(f(x),x=0..4);
> evalf(highDarbou(f(x),x,0..4,300));
> evalf(highDarbou(f(x),x,0..4,500));
> evalf(lowDarbou(f(x),x,0..4,300));
> evalf(lowDarbou(f(x),x,0..4,500));
ЗАДАНИЕ. Построить суммы Дарбу для .