Код на PASCAL !!!!!!

Код на PASCAL !!!!!!

Задать свой вопрос
1 ответ
Function Prod(a:real;n:integer):real;
var
  i:integer;
  p:real;

begin
  p:=1;
  for i:=1 to абс(n) do p:=p*a;
  if nlt;0 then Prod:=1/p
  else Prod:=p
end;

function Pow(a, b: real): real;
var
  p:integer;
 
begin
  if b=Int(b) then Pow:=Prod(a,Trunc(b))
  else Pow := exp(b * ln(a))
end;

var
  a, c, x, y, p1, p2,pp: real;

begin
  a := 1; c := 2; x := -1;
  p1 := 3 * абс(sqr(a) - 5 * Pow((tan(sqr(c))), 3));
  p2 := 4 * Pow(cos(5 * sqr(sin(x))), 3) * cos(x);
  p2 := p2 / (5 * Pow(sin(3 * x), 3 * x));
  y := p1 + sqrt(p2 - 4 * sqrt(a) / (5 * Pow(tan(c), 5)));
  Writeln('a=', a, ', c=', c, ', x=', x, ', y=', y:0:6)
end.

Тестовое решение:

a=1, c=2, x=-1, y=20.412194

В этой формуле заложен "подводный камень".
При х=-1 получается отрицательное значение sin(3x), которое надобно возводить в ступень 3х. В компьютерных расчетах определяется операция возведения в ступень путем поочередного умножения, когда показатель ступени - естественное число, а также операция возведения в любую ступень может быть выполнена через логарифм и экспоненту, но только при  неотрицательном основании ступени.
Считая вручную, мы бы, окончательно, сделали преображенье, избавившись от отрицательной ступени:
sin^-3(-3)= \frac1sin^3(-3) , но компьютер сам этого сделать не может, потому пришлось написать две функции, построив на их базе строительство в ступень Pow(a,b).


, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт