Мюллер С.Х.
17.01.2003 1:03
Вычислить определённый интеграл методами средних прямоугольников и трапеции.
Обязательно функция должна вводиться не в исходнике, а в проге(exe)нике.
Пожалуста выручите.
Вот что удалось отискать в краткой теоретической справке по этому вопросу:
"Метод прямоугольников основан на интерполяции функции на малом отрезке постоянным значением. Кривую f(x) на каждом малом интервале "h" заменяют горизонтальной линией, пересекающей кривую в середине отрезка, при этом M=N. Интеграл вычисляется по формуле:
S1 = f1 * h; - на одном отрезке.
S =( f1 + f2 + ... + fM )*h; - на M отрезках.
Здесь fi = f(xi); h = (b-a)/N; xi = a - h/2 + h*i; i = 1, 2, . . . ,
Метод трапеций состоит в том, что кривую f(x) на каждом малом интервале "h" заменяют отрезком прямой, соединяющим точки кривой f(x) на краях этого интервала, при этом M=N-1. Интеграл вычисляется по формуле:
S1 =((fa + fb)/2)* h; - на одном отрезке.
S = ((fa + fb)/2 + f1 + f2 + ... + fM )*h; - на N отрезках.
Здесь fi = f(xi); h = (b-a)/N; xi = a + h*i; i = 1, 2, . . . , M."
ClaneOffline
19.01.2003 5:09
Методом трапеции вычислить определенный интеграл sinx в квадрате dx от 0 до pi/2. Количество частей разбиения 22.
{Код программы}
Код
program m1;
const pi=3.14;
var x,s,f:real;
n:integer;
begin
writeln('Введите кол-во разбиений');
read(n);
x:=0;
s:=pi/4;
while x<=((pi/2)-(pi/2*n)) do
begin
x:=x+(pi/2*n);
s:=s+2*sqr(sin(x));
end;
s:=s*((pi/(2*2*n)));
f:=(x/2)-((1/4)*(2*sin(2x)));
write(s,f);
end.
ClaneOffline
19.01.2003 5:19
Метод прямоугольников для приближенного вычисления интеграла функции f(x)=5*x*x-x+2
Код
program m2;
var
a,b:real; {границы отрезка}
dx:real; {приращение аргумента}
s:real; {приближенное значение интеграла}
n:integer; {кол-во интервалов}
x:real; {аргумент}
y:real; {значение функции в начале интервала}
i:integer;
begin
writeln('Нижняя граница отрезка');
readln(a);
writeln('Верхняя граница отрезка');
readln(B);
writeln('Приращение аргумента');
readln(dx);
n:=Round((b-a)/dx);
x:=a;
s:=0;
for i:=1 to n do
begin
y:=5*x*x-x+2;
s:=s+y*dx;
x:=x+dx;
end;
writeln('Значение интеграла :',s:9:3);
readln;
end.