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

Цитата:
Сообщение от ДенисКО Посмотреть сообщение
Как я сам понимаю эпсилон применяется в формуле |x-1|<ε (х-последовательность). Получается так |(0.999^n)-1|<ε. Подставляя ε=0,1;0,001;0,0001 находим n. Это все надо добавить в программу и выводить результат n при данном ε.
Не пойдет! Как Вам объясняли на основании простого анализа, да и программа показывает, что (0.999^n)→0, таким образом |(0.999^n)-1|→1. Если подразумевается выполнение условия ||x(n-1)|-|x(n)||<ε, то тогда можно так:


VAR
N:LongInt;
Epsilon:REAL;
i:INTEGER;

FUNCTION X2np(X:Extended; n:LongInt):Extended;
Var i:LongInt;
Y:Extended;
BEGIN
IF n=0 THEN X2np:=1 ELSE
IF n=1 THEN X2np:=X ELSE
BEGIN
Y:=X;
FOR i:=2 TO n DO Y:=Y*X;
X2np:=Y;
END;
END;

BEGIN
Epsilon:=1;
N:=1;

FOR i:=1 TO 4 DO
BEGIN
Epsilon:=Epsilon/10;
REPEAT
INC(N);
UNTIL ABS(ABS(X2np(-0.999,N-1))-ABS(X2np(-0.999,N)))<Epsilon;

Writeln('Epsilon= ',Epsilon:10:8);
Writeln('N= ',N);
WriteLn('Value= ',ABS(X2np(-0.999,N)));
WriteLn;
END;
Readln;

END.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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