Страница 1 из 1

Pascal Приближенное вычисление определенных интегралов

Добавлено: 30 окт 2008, 00:34
anhil
Тема: «Приближенное вычисление определенных интегралов»

1. Составить программу, подсчитывающую с точностью (согласно варианту) значение определенного интеграла (согласно варианту) по формуле (согласно варианту). Для достижения заданной точности использовать метод двойного пересчета. Результат срав-нить со значением интеграла, подсчитанным с помощью первообразной F(x) по формуле Ньютона-Лейбница: .
Метод приближенного вычисления определенного интеграла должен быть запрограм-мирован с помощью процедуры. Отрезок интегрирования, точность вычисления вводятся с клавиатуры, подынтегральная функция описывается с помощью функции пользователя.
Распечатать: отрезок интегрирования, точность вычисления, приближенное значение определенного интеграла, значение интеграла, подсчитанное по формуле Ньютона-Лейбница.
2 Используя условие п.1, подсчитать с точностью значения определенных интегралов (согласно варианту) по той же формуле. Имя подынтегральных функций передавать в ка-честве параметра.
Условие

Изображение

Re: Pascal Приближенное вычисление определенных интегралов

Добавлено: 31 окт 2008, 22:02
Mary Yu
Легче решить по формуле Ньютона-Лейбница по старинке,на бумажке с помощью ручки/карандашика...

Re: Pascal Приближенное вычисление определенных интегралов

Добавлено: 01 ноя 2008, 09:07
Naeel Maqsudov
[syntax=Delphi]
type TIntFunc = function (x:real):real;

function f1(x:real):real; far;
begin
f1:=1/sqrt(exp(x)-1);
end;

function FF1(x:real):real; far;
begin
FF1:=2*arctan(sqrt(exp(x)-1));
end;

function f2a(x:real):real; far;
begin
f2a:=1/sqrt(exp(x)-1);
end;

function f2b(x:real):real; far;
begin
f2b:=1/sqrt(exp(x)-1);
end;

function I(fn:TIntFunc;a,b,e:real):real;
var
s0,s,w,xi:real;
j,n:integer;
begin
n:=1000;
if a>b then begin s:=a; a:=b; b:=s; end;
repeat
s0:=s;
s:=0; w:=(b-a)/n;
for j:=0 to n-1 do begin
xi:=a+(2*j+1)*(b-a)/2/n;
s:=s+w*fn(xi);
end;
inc(n,10);
until (n>12) and (abs(s-s0)<=e);

I:=s;


end;

var
a,b,e:real;

begin
{Zadacha 1}

write('Input A B E (separated by space):');
readln(a,b,e);
writeln('I=',I(f1,a,b,e):15:5);
writeln('Checking:');
writeln('I=',FF1(b)-FF1(a):15:5);
writeln;

{Zadacha 2}

writeln('I=',I(f2a,0,3,1E-3):15:5);
writeln('I=',I(f2b,3,4,1E-2):15:5);

end.
[/syntax]

Разделите текст программы на 2 для 1 и второй задачи, выкидывая лищнее.