Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по паскалю экзамен 26-50.docx
Скачиваний:
40
Добавлен:
23.09.2019
Размер:
3.23 Mб
Скачать

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

Метод прямоугольников — метод численного интегрирования функции одной переменной, заключающийся в замене подынтегральной функции на многочлен нулевой степени, то есть константу, на каждом элементарном отрезке. Если рассмотреть график подынтегральной функции, то метод будет заключаться в приближённом вычислении площади под графиком суммированием площадей конечного числа прямоугольников, ширина которых будет определяться расстоянием между соответствующими соседними узлами интегрирования, а высота — значением подынтегральной функции в этих узлах. Алгебраический порядок точности равен 0.

Если отрезок является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по

Формуле прямоугольников (средних):

Составные квадратурные формулы

В случае разбиения отрезка интегрирования на элементарных отрезков приведённые выше формулы применяются на каждом из этих элементарных отрезков между двумя соседними узлами. В результате, получаются составные квадратурные формулы

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

Формулу с вычислением значения в средней между двумя узлами точке можно применять лишь тогда, когда подынтегральная функция задана аналитически, либо каким-нибудь иным способом, допускающим вычисление значения в произвольной точке. В задачах, где функция задана таблицей значений остаётся лишь вычислять среднее значение между интегралами, посчитанными по формулам левых и правых прямоугольников соответственно, что приводит к составной квадратурной формуле трапеций.

Поскольку составные квадратурные формулы являются ни чем иным, как суммами, входящими в определение интеграла Римана, при они сходятся к точному значению интеграла. Соответственно, с увеличением точность получаемого по приближённым формулам результата возрастает.

Погрешность метода

Для формулы прямоугольников (средних)

uses crt;

type Func=function(x:real):real; //функциональный тип

{$F+} //описание функций

function F1(x:real):real;

begin

F1:=x*x*x*sqrt(1+x);

end;

function F2(x:real):real;

begin

F2:=1/(3+2*cos(x));

end;

function F3(x:real):real;

begin

F3:=1/(x*sqr(ln(x)));

end;

{$F-}

function Rectangles(a,b:real; f:Func; n:integer):real; //интеграл в первом приближении

var h,f1,sum,x,y:real;

i:integer;

begin

h := (b-a) / n;

sum := 0;

x := a;

for i := 1 to n do

begin

y := x;

x := x + h;

f1 := f((x + y)/2);

sum := sum + f1;

end;

Rectangles:= sum*h;

end;

function RectanglesRunge(a,b:real;f:Func; var n:integer;eps:real):real;//с заданной точностью

var i1,i2:real;

begin

i1 := Rectangles(a,b,f,n);

n := n+n;

i2 := Rectangles(a,b,f,n);

while abs(I1-I2) > 2*eps do

begin

if n >=1000 then break;

i1 := i2;

n := n+n;

i2 := Rectangles(a,b,f,n);

end;

RectanglesRunge := i2;

end;

const eps=0.0001;

a1=0.8;b1=1.0; //переставил местами, а то интеграл отрицательный

a2=0.0;b2=pi/2;

a3=0.0;b3=2.7;

var n:integer;

begin

clrscr;

n:=10;

writeln('Значение интеграла x*x*x*sqrt(1+x) на интервале ',a1:0:1,' ',b1:0:1,' = ',

RectanglesRunge(a1,b1,f1,n,eps):0:5);

n:=10;

writeln('Значение интеграла 1/(3+2*cos(x)) на интервале ',a2:0:1,' ',b2:0:1,' = ',

RectanglesRunge(a2,b2,f2,n,eps):0:5);

n:=10;

writeln('Значение интеграла 1/(x*sqr(ln(x))) на интервале ',a3:0:1,' ',b3:0:1,' = ',

RectanglesRunge(a3,b3,f3,n,eps):0:5);

readln

END.