Помощь - Поиск - Пользователи - Календарь
Полная версия: Найти рекурентное соотношение
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
AlexKis
Даны действительные числа е>0 и Х.
Вычислить Е (n от 1 до бескон) Un с заданной точностью е. Для обеспечения требуемой точности включить в сумму только те слагаемые, для которых |Un|<e. Для организации вычисления Un получить рекурентное отношение, связывающее Un+1 и Un.

(-1)n*X2n/(2n)!
volvo
Цитата
Для организации вычисления Un получить рекурентное отношение, связывающее Un+1 и Un.
Вот с этого и начинай решение. Ты уже нашел такое отношение? Как оно ищется, знаешь?
AlexKis
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.

Чтот то не так wub.gif
volvo
Естественно... Что ты делаешь вот тут:
Цитата
q:=-x*x*(2*n)/(2*(n+1));
? Этого не надо делать, надо делать так:
n:=0;
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;
, а для сравнения с Cos не приводи аргумент к радианам, ты должен задавать значение X не в градусах, а уже в радианах...

(пользуйся тегами CODE)
AlexKis
Косинус с суммой немного не сходиться
А так все хорошо спасибо за помощь!!!

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.


И еще для будущего почему (-x*x)/((2*n-1)*(2*n)) в знаменателе
volvo
Введите e: 0.001
Введите x: 0.4
-0.08000 0.92000
0.00107 0.92107
-0.00001 0.92106
Сумма= 0.92Cos(x)= 0.92
Чего ж не сходится? Все сходится как раз smile.gif Какие значения ты вводил?

Цитата
И еще для будущего почему (-x*x)/((2*n-1)*(2*n)) в знаменателе
Потому что общий член ряда имеет вид: (-1)n*X2n/(2n)!, значит, на что домножать надо? правильно, на Qn/Qn-1, так? Теперь:

Qn = (-1)n*X2n/(2n)! , а Qn-1 = (-1)n-1*X2(n-1)/(2(n-1))!
Делим одно на другое, получаем
Qn/Qn-1 = (-1)n - (n-1)*X2n-2(n-1)/((2n-1)*(2n)) = (-1)1*X2/((2n-1)*(2n))

Я ж не просто так спросил, умеешь ли ты находить отношение, правда? smile.gif
AlexKis
good.gif Спасибо!!!
Я понял что вводить надо правильно.

А для нахождения я использовал
a(n+1) = q*a(n)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.