История изменений
Исправление 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));
будет один в один как в формуле