: I= c ε a, b, ε f(x). , . [6]. , x, . : h h/2.
Rh/2 h/2 :
|Rh/2 | = ,
Ih/2 , h/2;
Ih , h.
:
|Rh/2 | = .
, [6] n=] [ + 1, ][ - . , n=] [ + 1.
() . , , n 2n . , , ; .
X=X +(i-1)*dx, X=X+dx, [7].
( - ) ε .
program integraltrap;
{$APPTYPE CONSOLE}
uses SysUtils, Math;
function Rus(S:String):String;
var I:Byte;
begin
Result:='';
for I:=1 to Length(S) do
case S[I] of
''..'': Result:=Result+Chr(Ord(S[I])-64);
''..'': Result:=Result+Chr(Ord(S[I])-16);
'': Result:=Result+Chr(240);
'': Result:=Result+Chr(241);
else
Result:=Result+S[I];
end;
end;
var
A,B,Eps,I1,I2,Itoch,X,Dx,S1:Real;
I,N,M,K:Integer;
begin
WriteLn(Rus(' '));
ReadLn(A,B,Eps);
//
N:=Trunc((B-A)/Sqrt(Eps))+1;
//
|
|
//
S1:=(A*Exp(A) + B*Exp(B))/2.0;
// ,
//
Dx:=(B-A)/N;
I2:=0;
for I:=1 to N-1 do
begin
X:=A+I*Dx; //
//
I2:=I2+X*Exp(X);
end;
I2:=(S1+I2)*Dx;
//
//
M:=Trunc(-Log10(Eps))+2;
K:=Trunc(Log10(Abs(I2)))+M+3;
Writeln(Rus(' =')
,N:4,Rus(' ='),I2:K:M);
//
repeat
//
I1:=I2;
//
//
I2:=S1;
N:=N*2; //
Dx:=(B-A)/N; //
//
//
for I:=1 to N-1 do
begin
X:=A+I*Dx; //
//
I2:=I2+X*Exp(X);
end;
I2:=I2*Dx; //
until Abs(I2-I1)/3<Eps; //
WriteLn(Rus(' ='),I2:K:M
,Rus(' , '), N div 2);
Itoch:=(B-1)*Exp(B)-(A-1)*Exp(A);//
WriteLn(Rus(' '),Itoch:K:M);
ReadLn;
end.
, , , . s2.
. , .
ReadLn(A,B,Eps);
N:=Trunc((B-A)/Sqrt(Eps))+1;
S1:=(A*Exp(A) + B*Exp(B))/2.0;
S:=0;
Dx:=(B-A)/N;
// -
//
for I:=1 to N-1 do
begin
X:=A+I*Dx;
S:=S+ X*Exp(X);
end;
I2:=Dx*(S+S1);
S2:=S;
repeat
I1:=I2;
N:=N*2;
Dx:=(B-A)/N;
X1:=A+Dx; //
S:=0;
//
//
for I:=1 to N div 2 do
begin
X:=X1+2*(I-1)*Dx;
S:=S+ X*Exp(X);
end;
//
//
S2:=S+S2;
I2:=(S1+S2)*Dx;
until Abs(I2-I1)/3<Eps;
. ( ), . ( ) . Xi = X +hi/6+h(i-1), i=1,n; Xj = X +5hj/6+h(j-1), j=1,n. X , h n .
|
|
, . , 2 ( 4). , 2.