F = 10 *
((-1)0 * 19! * (4*x2)10) / (0! * 20!) +
((-1)1 * 18! * (4*x2)9) / (1! * 18!) +
((-1)2 * 17! * (4*x2)8) / (2! * 16!) +
((-1)3 * 16! * (4*x2)7) / (3! * 14!) +
((-1)4 * 15! * (4*x2)6) / (4! * 12!) +
((-1)5 * 14! * (4*x2)5) / (5! * 10!) +
((-1)6 * 13! * (4*x2)4) / (6! * 8!) +
((-1)7 * 12! * (4*x2)3) / (7! * 6!) +
((-1)8 * 11! * (4*x2)2) / (8! * 4!) +
((-1)9 * 10! * (4*x2)1) / (9! * 2!) +
((-1)10 * 9! * (4*x2)0) / (10! * 0!)
?
Тогда ты будешь смеяться, но тебе вообще не нужна НИ функция вычисления факториала, НИ функция возведения в степень... Все, что нужно знать - это чему равен первый член ряда, и как изменяется относительно предыдущего последующий... Вот так будет выглядеть твоя функция:
function f(x: real): real;
var
s, item: real;
p, k: integer;
begin
item := 1/10; s := item;
for k := 9 downto 0 do begin
if k = 9 then p := 1 else p := k + 1;
item := - item * ((19 - k) * p * 4 * sqr(x)) /
(pred(2 * (10 - k)) * (2 * (10 - k)));
s := s + item;
end;
f := 10 * s;
end;
Сообщение отредактировано: volvo -