Показать сообщение отдельно
Старый 28.04.2013, 17:15   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от farejoker Посмотреть сообщение
знал бы как сделал б( но увы
Ладно, пожалуйста. Мне, в общем-то не трудно, только вот... А как Вы дальше своё существование мыслите? Так всю учебу и проездить на форумах? Знаете... не выйдет. Уж поверьте. В общем, очень рекомендую, если еще не поздно, взяться за ум. Впрочем, Вам жить...
Код:
Const
 a=0.2;
 b=0.4;

Function F(x1,z1:Real):Real;
begin
 F:=Sqr(Sin(x1-z1))/Sqr(Cos(x1-z1));
end;

Function Antiderivative(x1,z1:Real):Real;
begin
 Antiderivative:=Sin(x1-z1)/Cos(x1-z1)-x1+z1;
end;

Procedure Trapezium(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:=(F(a,zt)+F(b,zt))/2*h;
 for i:=1 to N-1 do
  Sum1:=Sum1+h*F(a+h*i,zt);
 Sum2:=Sum1;
 Repeat
  Sum1:=Sum2;
  N:=N*2;
  h:=(b-a)/N;
  Sum2:=(F(a,zt)+F(b,zt))/2*h;
  for i:=1 to N-1 do
   Sum2:=Sum2+h*F(a+h*i,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;
   Trapezium(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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070