Цель: Закрепить у учащихся представление о специфике
методов компьютерного решения задач.
Обеспечение урока: 1. Программы: TURBO.EXE, TRAPL.PAS.
Содержание нового материала. Лекция.
Найти площадь криволинейной трапеции заданной функцией Y=Y(x) на интервале [a;b], причем на этом интервале Y(x) - положительна. Криволинейной трапецией называется фигура, ограниченная линиями: Y=Y(x), x=а, x=b, y=0. (смотрите рис.1)
рис.1
Идея алгоритма вычисления площади криволинейной трапеции состоит в следующем. Разобьем отрезок [а,b] на n равных отрезков точками a=X0 < X1 < X2 < ... < Xn=b и на каждом из полученных отрезков построим прямоугольник, одной стороной которого будет отрезок [Xi,Xi+1], а другой - отрезок, длина которого равна f(Xi). Случай при n=4 показан на рисунке 2.
рис.2
Площадь криволинейной трапеции можно приближенно считать равной сумме площадей заштрихованных прямоугольников. Можно получить другую картину (см. рис.3), если в качестве второй стороны выбирать отрезки, длины которых равны f(Xi+1), i=0,1,2,...,n-1.
рис.3
Ясно, что если увеличить число отрезков [Xi,Xi+1], т.е. отрезок [а,b] разбить на большее число равных отрезков, то сумма их площадей все с большей точностью будет совпадать с площадью криволинейной трапеции. Значит точность вычисления площади криволинейной трапеции определяется величиной n. Площадь каждого прямоугольника можно вычислить так. Одна из сторон прямоугольника, построенного на отрезке [Xi,Xi+1], равна h=(b-a)/n, а вторая - f(Xi) либо f(Xi+1)). Поэтому в первом случае площадь <<левого>> прямоугольника вычислится по формуле ((b-a)/n)*f(Xi), а во втором случае площадь <<правого>> прямоугольника ((b-a)/n)*f(Xi+1).
Площадь криволинейной трапеции в первом случае приближенно равна сумме <<левых>> прямоугольников:
S =(b-а)/n *( f(X0) + ---- * f(X1) + ... + ---- * f(Xn-1))
а во втором случае - сумме <<правых>> прямоугольников:
S = (b-а)/n* (f(X1) + f(X2) + ... + f(Xn)),
причем, чем больше n, тем больше точность вычисления площади криволинейной трапеции и результаты вычисления по <<левым>> прямоугольникам и по <<правым>> прямоугольникам ближе к друг другу.
Выделим аргументы и результаты.
Аргументы: а - начальное значение интервала;
b - конечное значение интервала;
n - число разбиений интервала [а,b].
Результат: s - приближенное значение криволинейной трапеции.
Запишем алгоритм приближенного вычисления площади криволинейной трапеции для случая <<левых>> прямоугольников.
h:=(в-а)/n; s:=0; х:=а;
for i:= то n do
begin
s:= s + f(x);
х:= х + h;
end;
s:=s*h;
Program TRAPL;
Var
n:integer;
a,b,s:real;
Function f(x:real):real;
begin
f:=x*x;
end;
Procedure Presentation;
begin
Clrscr;
Writeln (' Учебная программа:');
Writeln ('Вычисление площади криволинейной трапеции');
Writeln (' методом левых прямоугольников.');
end;
Procedure Input (Var a,b:real; Var n:integer);
begin
Write ('Введите a='); Read (a);
Write ('Введите b='); Read (b);
Write ('Введите n='); Read (n);
end;
Procedure Area (a,b:real; n:integer; Var s:real);
Var h,x:real;
i:integer;
begin
h:=(b-a)/n; s:=0; x:=a;
for i:=1 to n do
begin
s:=s+f(x);
x:=x+h
end;
s:=s*h;
end;
Procedure Output (s:real);
begin
Writeln;
Write ('s=',s);
end;
begin
Presentation;
Input (a,b,n);
Area (a,b,n,s);
Input (s);
end.
Прочитаем программу TRAPL.PAS, запустим на выполнение. Для функции Y=x*x, а=2, в=5, n=256 получим результат 38.87702179.
Естественно, возникают вопросы: Верить ли этому результату? Как проверить?
Для ответа на эти вопросы можно поступить так. Мы уже говорили выше, что для
повышения точности результата нужно увеличить число разбиений. Возмем число
разбиений 512, получим результат 38.93849373. Мы видим, что для этих разбиений
две первых значащих цифры сошлись и, значит, этим значащим цифрам можно верить.
Попробуем увеличить число разбиений до 1024. Получим через 2 секунды результат
38.96924257. Сравнивая результат при 512 и 1024 разбиениях мы обнаруживаем,
что сходятся три значащих цифры. Значит здесь получена точность до трех значащих
цифр, т.е. можно верить результату равному 38.9 с точностью до 0.1.
Здесь мы познакомились с одним из основных понятий математики "понятием
предела", т.е. числа к которому при дальнейшем уточнениии стремится результат
вычисления. Исходя из основного свойства алгоритма, его конечности, мы не сможем
вычислить ТОЧНОЕ значение площади криволинейной трапеции, но мы можем ее вычислить
с любой желаемой и разумной степенью точности, платя за это временем работы
ЭВМ при выполнении программы.
Домашнее задание: Посторить алгоритм для случая <<правых>>
прямоугольников.