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

Ну вот, пожалуйста.
Хотя, сами видите - получилось громоздко, нечитабельно и некрасиво. Так что осваивайте работу с процедурами и функциями!
Код:
Var
 a,b,AV,T,S,h:Real;
 i,k,N:Byte;

Begin
 Write('a = ');
 Readln(a);
 Write('b = ');
 Readln(b);
 AV:=0.5*(Exp(b)+Exp(-b))-0.5*(Exp(a)+Exp(-a));
 WriteLn('Accurate value: ', AV:0:8);
 Writeln;
 for k:=1 to 8 do
  begin
   h:=(b-a)/(k*10);
   T:=(0.5*(Exp(a)-Exp(-a))+0.5*(Exp(b)-Exp(-b)))/2*h;
   for i:=1 to k*10-1 do
    T:=T+h*0.5*(Exp(a+h*i)-Exp(-a-h*i));
   N:=k*10 div 2;
   h:=(b-a)/(2*N);
   S:=(0.5*(Exp(a)-Exp(-a))+0.5*(Exp(b)-Exp(-b)))/3*h;
   for i:=1 to N do
    S:=S+4.0*h/3.0*0.5*(Exp(a+h*(2*i-1))-Exp(-a-h*(2*i-1)));
   for i:=2 to N do
    S:=S+2.0*h/3.0*0.5*(Exp(a+h*(2*i-2))-Exp(-a-h*(2*i-2)));
   Writeln('k= ',k, '    Trapezium: ',T:0:8, '    Abs.Err: ',Abs(T-AV):0:8,'    Rel.Err: ',Abs(T-AV)/AV*100:0:8,'%');
   Writeln('k= ',k, '    Simpson:   ',S:0:8, '    Abs.Err: ',Abs(S-AV):0:8,'    Rel.Err: ',Abs(S-AV)/AV*100:0:8,'%');
  end;
 Readln;
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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