Программа табулирования функции одной переменной F(x, y), считая у параметром, значение которого задается пользователем. Сама функция в виде дроби (ctgx+tgx)/в знаменателе корень кубический xy-ln(x/y) — Pascal(Паскаль)

VAR
 x, y, z, w: Real;
 x0, xe, dx: Real;
 n: Integer;
 eps: Real; {машинный ноль будет - для ЭВМ почти ноль}

function sign(xx: Real): Integer;
begin
  if xx < 0 then sign := -1 else
    if xx > 0 then sign := 1 else sign := 1
end;

BEGIN
 eps := 1; while 1 + eps > 1 do eps := eps/2; eps:=eps*4; {запас}
 Write('Введите значение параметра y: '); {$I-} ReadLn(y); {$I+}
 if IOResult <> 0 then begin
   WriteLn('Ошибка ввода'); Halt(1)
 end;
 Write('Введите начальное значение x: '); {$I-} ReadLn(x0); {$I+}
 if IOResult <> 0 then begin
   WriteLn('Ошибка ввода'); Halt(1)
 end;
 Write('Введите последнее значение x: '); {$I-} ReadLn(xe); {$I+}
 if IOResult <> 0 then begin
   WriteLn('Ошибка ввода'); Halt(1)
 end;
 Write('Введите число значений: ');  {$I-} ReadLn(n); {$I+}
 if IOResult <> 0 then begin
   WriteLn('Ошибка ввода'); Halt(1)
 end;
 if xe < x0 then begin x:=x0; x0:=xe; xe:= x end;
 dx := (xe - x0)/(n+1);
 x := x0;
 while (x <= xe+dx) do begin
   {Существует ли, не кратен ли pi/2 - проверим косинус}
   write(x:10:4,'   ');
   if abs(cos(x)) < eps then WriteLn('не существует');
   z:= sin(x)/cos(x);
   {Теперь ctg может не существовать}
   if abs(z) < eps then WriteLn('не существует');
   z:= z + 1/z; {Числитель}
   if (x*y) < 0 then WriteLn('не существует');  {Логарифм}
   w := x*y - ln(x/y);
   w := exp(ln(abs(w))/3)*sign(w);
   writeLn(z/w:12);
   x := x + dx;
 end;
END.

Leave a Comment

65 + = 68