x2 x4 x6 x2*n
cos(x) = 1 - --- + --- - --- + ... + -------- + ...
2! 4! 6! (2*n)!
Приближение считается полученным, если очередное слагаемое по модулю < eps.
Обсудим план решения.
x2*n
(из условия --------- < eps ),
(2*n)!
но лучше этого не делать, а воспользоваться циклом while или repeat.
Если вычислено очередное слагаемое, то для получения следующего слагаемого нужно:
Program Cosin1;
var n: word; Cosa: double; xx, slagaem: double; eps,cos1: double;
begin
n:=0; cosa:= 1; slagaem:= 1;
writeln('Вычислим косинус заданного угла.');
write('Введи угол (в радианах, <= 0.7)'); readln(xx);
write('Введи допустимую погрешность (1E-5)--> '); readln(eps);
Repeat
slagaem := -slagaem*sqr(xx)/((n+1)*(n+2));
Cosa := Cosa + slagaem;
inc(n,2);
until abs(slagaem) < eps;
cos1:= cos(xx);
writeln('Cosa = ',cosa,' Cos(x) = ',cos1);
writeln('Погрешность факт. = ',abs(cosa - cos1));
readln;
end.
---- Результат работы: -----
Вычислим косинус заданного угла.
Введи угол (в радианах, <= 0.7)0.71
Введи допустимую погрешность (1E-5)--> 1e-6
Cosa = 7.58361875956345E-0001 Cos(x) = 7.58361875990508E-0001
Погрешность факт. = 3.41634498468579E-0011