Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

RzIzX

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
PROGRAM Ex1;
Uses Crt;
 
Const
eps1 = 0.01;       {Точность 10-2}
eps2 = 0.01;       {Точность 10-3 }
eps3 = 0.001;      {Точность 10-4 }
a = -0.6;          {Начальное значение X}
b = 0.05;           {шаг} N = 20;             {количество значений ф-ии}
Var
k1, k2, k3, i: Integer; {вспомогательные переменные}
f1, f2_1, f2_2, f2_3, slag,slag1, x, stepen, summ1, summ2: Real;
 
BEGIN
ClrScr;
{рисуем шапку таблицы}
 writeln('__________________________________________________________');
 writeln('|       |             | e=0.01   |  e=0.001  |  e=0.0001  |');
 writeln('|   x   |    f1(x)    |----------|-----------|------------|');
 writeln('|       |             | f2(x)| N |f2(x)  | N |f2(x)   | N |');
 writeln('|_______|_____________|______|___|_______|___|________|___|');
 x := a;  {начальное значение X}
 slag1:=-1;
 summ1:=0;
 summ2:=0;
 slag:=0;
 for i:=1 to N do
 begin
    f1:=1/2*arctan(x)*ln(1+sqr(x)); {вычисляем значение функци F}
{вычисляем значение функции F2}
   f2_1:=0;  {начальное значение функции  f2_1}
   k1:=0;
 
   repeat     {итерационный цикл для точности 10^-2}
     inc(k1);
     if x<0 then
        stepen:=(-1)*exp(ln(abs(x))*(2*k1+1))
     else
         if x>0 then
            stepen:=exp(ln(x)*(2*k1+1))
         else
             stepen:=0;
     slag1:=slag1*(-1);
     summ2:=summ2+(1/k1);
     summ1:=summ1+((slag1*stepen)/(2*k1+1));    
     slag:=summ1*summ2;
     f2_1:=f2_1+slag;  
   until abs(slag)<=eps1;
   f2_2:=f2_1;
   k2:=k1;
   repeat               {итерационный цикл для точности 10^-3}
     inc(k2);
     if x<0 then
        stepen:=(-1)*exp(ln(abs(x))*(2*k2+1))
     else
         if x>0 then
            stepen:=exp(ln(x)*(2*k2+1))
         else
             stepen:=0;
     slag1:=slag1*(-1);
     summ2:=summ2+(1/k2);
     summ1:=summ1+((slag1*stepen)/(2*k2+1));    
     slag:=summ1*summ2;
     f2_2:=f2_2+slag;
   until abs(slag)<=eps2;  
   f2_3:=f2_2;
   k3:=k2;
   repeat                         {итерационный цикл для точности 10-4}
     inc(k3);
     if x<0 then
        stepen:=(-1)*exp(ln(abs(x))*(2*k3+1))
     else
         if x>0 then
            stepen:=exp(ln(x)*(2*k3+1))
         else
             stepen:=0;
     slag1:=slag1*(-1);
     summ2:=summ2+(1/k3);
     summ1:=summ1+((slag1*stepen)/(2*k3+1));    
     slag:=summ1*summ2;
     f2_3:=f2_3+slag;
   until abs(slag)<=eps3;  
{вывод результатов}
   writeln('| ', x:5:2,' | ',f1:12:9,'| ',f2_1:5:2,'| ',
   k1:2,'| ',f2_2:6:3,'| ',k2:2,'| ',f2_3:7:4,'| ', k3:2,'|');
   x:=x+b;
 end;
{завершение таблицы}
 writeln('-----------------------------------------------------------');
 ReadKey
END.
 
 


Всего записей: 40 | Зарегистр. 27-01-2009 | Отправлено: 15:51 31-01-2010 | Исправлено: RzIzX, 16:16 31-01-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru