Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Cумма слогаемых

Автор: bigglewood 13.06.2006 22:57

Помогите пожалуйста решить - Используя оператор цикла с дальнейшим условием, вычислить сумму бесконечного ряда, учитывая только те слогаемые, которые по абсолютной величине больше заданного числа :
Прикрепленное изображение

При вычислении члена ряда использовать рекурентные соотношения, число Х ввести склавиатуры. Вот функция :
Прикрепленное изображение

Автор: lapp 15.06.2006 16:46

При при малых k последовательность под знаком суммы возрастает, а при больших k - убывает, так что нужно найти примерно, где у нее максимум и на него ориентироваться.
Пожалуйста, покажи свои наработки по этому вопросу.

Автор: bigglewood 15.06.2006 19:37

это я уже решил. спосибо...и забыл сказать что там ограничение до 10 в минус 5 степени...сначала создаю функцию вычисления факториала а потом ее использую...это кусок кода

Function Tform1.ResFact(N:real) : real;
Begin
if N <= 1
then
ResFact := 1
else
ResFact := N*ResFact(N-1);
End;

procedure TForm1.Button1Click(Sender: TObject);
const e=exp(-5*ln(10));
var w,k,s,x:real;
i:integer;
begin
k:=1;
s:=0;
val(edit1.text,x);
repeat
w :=exp(2*k*ln(x))/resfact(2*k);
k:=k+1;
s:=s+w;
until w > e;
label1.caption:=floattostr(s);
end;

Автор: Pola 16.06.2006 23:27

И где у тебя "рекурентные соотношения"?
факториал не нужен

k:integer; и зачем тебе i?

begin
val(edit1.text,x);
k:=1;
w:=sqr(x)/2;
s:=w;
repeat
k:=k+1;
w :=w*sqr(x)/(2*k)/(2*k-1);
s:=s+w;
until w > e;
label1.caption:=floattostrf(s, ffFixed, 10, 7);
end;

Автор: bigglewood 16.06.2006 23:49

разве (2k)! в функции не означает факториал? рекурсия вроде бы используется в функции вычисления факториала...может я чтото не так понимаю, как по вашему должно это выглядеть?
k дано по условию... i тоже присутствует в функции...я его ввожу с клавы.

Автор: volvo 17.06.2006 0:02

Цитата(bigglewood @ 16.06.2006 19:49)
как по вашему должно это выглядеть?

Тебе уже написали, как это должно выглядеть... Факториал каждый раз вычислять - нерационально, это во-первых. Во вторых, LongInt "держит" только факториал 14. Ты можешь гарантировать, что для любых введенных тобой значений K никогда не превысит 7? Я бы не стал этого делать...

Кстати, в "FAQ: Общие вопросы по математике" (да и вообще на форуме) этот метод рассматривался детально (искать по словам "общий член"), объяснять десятый раз - лень...