Даны действительные числа е>0 и Х.
Вычислить Е (n от 1 до бескон) Un с заданной точностью е. Для обеспечения требуемой точности включить в сумму только те слагаемые, для которых |Un|<e. Для организации вычисления Un получить рекурентное отношение, связывающее Un+1 и Un.
(-1)n*X2n/(2n)!
program z4_v3;
var
a,e,q,s,x:real;
n:integer;
begin
write('Введите e: ');readln(e);
write('Введите x: ');readln(x);
n:=2;
{a:=1;}
s:=-x*x/2;
while abs(a)>e do
begin
q:=-x*x*(2*n)/(2*(n+1));
a:=s*q;
s:=s+a;
n:=n+1;
writeln(q,' ',a,' ',s);
a:=0;
end;
writeln('Сумма=',s,'Cos(x)=',cos(x*pi/180));
end.
Естественно... Что ты делаешь вот тут:
q:=-x*x*(2*n)/(2*(n+1));
n:=0;, а для сравнения с Cos не приводи аргумент к радианам, ты должен задавать значение X не в градусах, а уже в радианах...
s:=1;
q := 1;
while abs(q) > e do
begin
n := n + 1;
q := q * (-x*x) / ((2*n - 1) * (2*n));
s := s + q;
writeln(q:10 :5, s:10 :5);
end;
Косинус с суммой немного не сходиться
А так все хорошо спасибо за помощь!!!
program z4_v3;
var
a,a1,e,q,s,x:real;
n:integer;
begin
write('Введите e: ');readln(e);
write('Введите x: ');readln(x);
n:=0;
q:=1;
s:=1;
while abs(q)>e do
begin
n:=n+1;
q:=q*(-x*x)/((2*n-1)*(2*n));
s:=s+q;
writeln(q:10:5,s:10:5);
end;
writeln('Сумма=',s:10 :2,'Cos(x)=',cos(x):10 :2);
end.
Введите e: 0.001
Введите x: 0.4
-0.08000 0.92000
0.00107 0.92107
-0.00001 0.92106
Сумма= 0.92Cos(x)= 0.92
Спасибо!!!
Я понял что вводить надо правильно.
А для нахождения я использовал
a(n+1) = q*a(n)