Рефераты Вычисление определенного интеграла методами трапеций и средних прямоугольников

Вернуться в Математика

Вычисление определенного интеграла методами трапеций и средних прямоугольников
Вычисление определенного интеграла методами трапеций и средних прямоугольников



Содержание.

Введение, математическое обоснование и анализ задачи.

Алгоритм и его описание .

Листинг программы .

Исходные данные. Результаты расчетов и анализ .

Заключение и выводы

Список литературы


Введение, математическое обоснование и анализ задачи.

Известно, что определенный интеграл функции типа численно представляет собой площадь криволинейной трапеции ограниченной кривыми x=0, y=a, y=b и y= (Рис. 1). Есть два метода вычисления этой площади или определенного интеграла — метод трапеций (Рис. 2) и метод средних прямоугольников (Рис. 3).


Рис. 1. Криволинейная трапеция.


Рис. 2. Метод трапеций.


Рис. 3. Метод средних прямоугольников.

По методам трапеций и средних прямоугольников соответственно интеграл равен сумме площадей прямоугольных трапеций, где основание трапеции какая-либо малая величина (точность), и сумма площадей прямоугольников, где основание прямоугольника какая-либо малая величина (точность), а высота определяется по точке пересечения верхнего основания прямоугольника, которое график функции должен пересекать в середине. Соответственно получаем формулы площадей —

для метода трапеций:

,

для метода средних прямоугольников:

.

Соответственно этим формулам и составим алгоритм.

Алгоритм.


Рис. 4. Алгоритм работы программы integral.pas.


Листинг программы.

Программа написана на Tubro Pascla 6.0 для MS-DOS. Ниже приведен ее листинг:

program Integral;

uses

Crt, Dos;

var

dx,x1,x2,e,i:real;

function Fx(x:real):real;

begin

Fx:=2+x; {В этом месте запишите функцию, для вычисления интеграла.}

end;

procedure CountViaBar;

var

xx1,xx2:real;

c:longint;

begin

writeln('------------------------------------------------');

writeln('-->Метод средних прямоугольников.');

writeln('Всего итераций:',round(abs(x2-x1)/e));

i:=0;

for c:=1 to round(abs(x2-x1)/e) do begin

write('Итерация ',c,chr(13));

xx1:=Fx(x1+c*e);

xx2:=Fx(x1+c*e+e);

i:=i+abs(xx1+xx2)/2*e;

end;

writeln('------------------------------------------------');

writeln('Интеграл=',i);

end;

procedure CountViaTrap;

var

xx1,xx2,xx3:real;

c:longint;

begin

writeln('------------------------------------------------');

writeln('-->Метод трапеций.');

writeln('Всего итераций:',round(abs(x2-x1)/e));

i:=0;

for c:=1 to round(abs(x2-x1)/e) do begin

write('Итерация ',c,chr(13));

xx1:=Fx(x1+c*e);

xx2:=Fx(x1+c*e+e);

if xx2>xx1 then xx3:=xx1 else xx3:=xx2;

i:=i+abs(xx2-xx1)*e+abs(xx3)*e;

end;

writeln('------------------------------------------------');

writeln('Интеграл=',i);

end;

begin

writeln('------------------------------------------------');

writeln('-=Программа вычисления определенного интеграла=-');

writeln('Введите исходные значения:');

write('Начальное значение x (x1)=');Readln(x1);

write('Конечное значение x (x2)=');Readln(x2);

write('Точность вычисления (e)=');Readln(e);

CountViaBar;

CountViaTrap;

writeln('------------------------------------------------');

writeln('Спасибо за использование программы ;^)');

end

Добавить в Одноклассники    

 

Rambler's Top100