Помощь - Поиск - Пользователи - Календарь
Полная версия: факториал
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
medved777
Помогите пожалуйста, исправить программу. Очень прошу! Только, извиняюсь, но не смогла вставить теги.

Условия :Вычислить пpиближенное значение бесконечной суммы, суммируя n первых членов ряда. Для получения суммы членов ряда следует использовать реккурентную формулу для получения следующего члена ряда через предыдущий.
Найти S (при к от 0 до бескончности) = (-1)^2k/(k^2+1)!


 program pr1;
var S,R,e:real;
k:integer;
begin
writeln('vvod stepeni tochnosty');
readln(e);
S:=1; K:=2; r:=1/2;
while r>=e do
begin
R:=R*(1/sqr(k)+1)*(sqr(k))*(sqr(k)-1);
S:=S+R;
k:=k+1;
end;
writeln('S= ',S);
end.
hiv
Цитата(medved777 @ 18.01.2007 10:54) *
Код
R:=R*(1/sqr(k)+1)*(sqr(k))*(sqr(k)-1);
Проблема не с программой а с твоей математикой! Чему будет равно отношение S(k+1)/S(k) ? Ну никак не тому что ты запрограммировала (см. строку что я привел). Используй эту формулу: (n+k)! = n!*(n+1)*(n+2)*...*(n+k-1)*(n+k)
medved777
Эту формулу мне учительница по пограммированию вывела. Возможно, я просто так дубово условия задачи написала. Думаю, что проблема все-таки в программе. Когда я ввожу степень точности, программа выдает ошибку. Пожалуйста помогите!
Lapp
hiv прав, у тебя проблема с вычисление формулы. Лучше считай факториал явно в цикле и запоминай в отдельную переменную.
Вот, примерно так:
var
S,R,e,F:real;
i,k:integer;
begin
writeln('vvod stepeni tochnosty');
readln(e);
S:=1; K:=1; r:=1;
F:=1;
while r>=e do begin
for i:=Sqr(k-1)+2 to Sqr(k)+1 do F:=F*i;
R:=R/F;
S:=S+R;
k:=k+1;
end;
writeln('S= ',S);
end.
medved777
Большое-пребольшое спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.