LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Он там колхозил факториал со степенью, а у тебя этого ничего нет.

Есть.

Возможно смутила функция sqr(x) - это функция в Паскале, которая возвращает квадрат x, то есть x*x.

Ряд Маклорена: https://imgur.com/a/VdgG2Jy

Следующий член суммы от предыдущего отличается в -1 * x * x /((n+1)*(n+2))

у меня: t := -t * sqr(x)/(n*(n+1));

Потому что я n начал с 1, а не с 0. Чтобы лишний раз не складывать.

если переписать так:

function no_standard_cos(x: double): double;
const
  eps:double = 1e-7;
var
  t, n: double;
begin
  result := 1;
  t := 1;
  n := 0;
  repeat
    t := -t * (x*x)/((n+1)*(n+2));
    result := result + t;
    n := n + 2;
  until abs(t) < eps;
end;

То

t := -t * (x*x)/((n+1)*(n+2));

будет один в один как в формуле

Исходная версия fsb4000, :

Он там колхозил факториал со степенью, а у тебя этого ничего нет.

Есть.

Возможно смутила функция sqr(x) - это функция в Паскале, которая возвращает квадрат x, то есть x*x.

Ряд Маклорена: https://imgur.com/a/VdgG2Jy

Следующий член суммы от предыдущего отличается на -1 * x * x /((n+1)*(n+2))

у меня: t := -t * sqr(x)/(n*(n+1));

Потому что я n начал с 1, а не с 0. Чтобы лишний раз не складывать.

если переписать так:

function no_standard_cos(x: double): double;
const
  eps:double = 1e-7;
var
  t, n: double;
begin
  result := 1;
  t := 1;
  n := 0;
  repeat
    t := -t * (x*x)/((n+1)*(n+2));
    result := result + t;
    n := n + 2;
  until abs(t) < eps;
end;

То

t := -t * (x*x)/((n+1)*(n+2));

будет один в один как в формуле