Цитата:
Сообщение от borntank
в процедуре не знаю что менять(
|
Ладно, раз уж хоть что-то сделано самостоятельно... Правда, сдается мне, что Паскаль конструкций вида х1^2 напрочь не поймёт, ну да ладно:
Код:
Const
a=0.15;
b=0.75;
function F(x1,z1:Real):Real;
begin
F:=x1*Sqrt(Sqr(x1)+Sqr(z1));
end;
function Antiderivative(x1,z1:Real):Real;
begin
Antiderivative:=1/3*Sqrt((Sqr(x1)+Sqr(z1))*(Sqr(x1)+Sqr(z1))*(Sqr(x1)+Sqr(z1)));
end;
procedure rect(zt,et:real; var T:real; var Nt:Integer);
var
i,N:Integer;
Sum1,Sum2,h:Real;
begin
N:=5;
h:=(b-a)/N;
Sum1:=0;
for i:=0 to N-1 do
Sum1:=Sum1+h*F(a+h*i+h/2,zt);
Sum2:=Sum1;
repeat
Sum1:=Sum2;
N:=N*2;
h:=(b-a)/N;
Sum2:=0;
for i:=0 to N-1 do
Sum2:=Sum2+h*F(a+h*i+h/2,zt);
until ABS(Sum2-Sum1)<et;
Nt:=N;
T:=Sum2;
end;
var
j,M:Integer;
z,R,Eps:real;
begin
write('z= ');
readln(z);
eps:=0.1;
for j:=1 to 4 do
begin
eps:=Eps/10;
rect(z,Eps,R,M);
writeln('Eps= ',Eps:8);
writeln('Number of steps= ',M);
writeln('Result: ',R:0:9);
writeln;
end;
writeLn('Accurate value:', (Antiderivative(b,z)-Antiderivative(a,z)):0:9);
ReadLn;
end.