Показать сообщение отдельно
Старый 09.02.2010, 21:26   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Linka Посмотреть сообщение
Владимир, спасибо ) Вы мне очень помогли )

И еще если позволите, два, на сей раз последних, вопроса:

1.Что делает эта строка ?
Код:
Until Abs(a)<1E-7;
2.Чтобы в третьем столбце выводился порядковый номер элемента в ряде, надо менять всю структуры программы ? Как я понимаю, функция может только одно какое-то значение возвращать, и n из нее нельзя показать ?
1. Эта строка прерывает вычисление: ведь ряд - это бесконечная сумма, значит нужен критерий, по которому можно остановить расчет. Я выбрал такой: вычисление останавливается, когда следующий член ряда (и все остальные, соответственно) оказывается по абсолютной величине меньшим наперед заданного малого числа, в данном случае (с потолка) 1E-7. Конечно, можно и более "научно", но для этого надо вспоминать теорию остаточных членов функциональных рядов, а мне лень.
2. Не очень понятен вопрос. В вычислении функции для каждого значения аргумента участвуют формально ВСЕ члены ряда со ВСЕМИ номерами, от 1 до бесконечности. В данном случае бесконечность заменена на некое максимальное значение n, которое получается при "срабатывании" условия, описанного в п.1. Вас интересует его вывести?
Если да, то, действительно, придется несколько изменить программу, в частности, заменить функцию процедурой. Как-то так:
Код:
VAR
 X,SUM:REAL;
 i,Nmax:INTEGER;

Procedure SUM_CALC(Xs:REAL; var S:REAL; var n:INTEGER);
 VAR
   a:REAL;
 Begin
  a:=-SQR(2*Xs)/2;
  S:=1+0.5*a;
  n:=1;
  Repeat
   Inc(n);
   a:=-a*SQR(2*Xs)/(2*n-1)/(2*n);
   S:=S+0.5*a;
  Until Abs(a)<1E-7;
 End;

BEGIN
 For i:=0 TO 45 DO
  Begin
   X:=Pi*i/90;
   SUM_CALC(x, SUM, Nmax);
   WriteLn(i:2,'*Pi/90', SUM:10:5, SQR(Cos(X)):10:5, Nmax:5);
  End;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070