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

Цитата:
1. Разработать программу, реализующую алгоритм вычисления суммы бесконечного ряда с точностью до 10^(-4). Программу представить с использованием оператора цикла WHILE
ln(x)=(x-1)/x+(x-1)2/2x2+(x-1)3/3x3+...
x>1/2
VAR
x,S,a:REAL;
k:INTEGER;

FUNCTION X2np(X:Extended; n:INTEGER):Extended;
Var i:INTEGER;
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
Write('x (>0.5) = ');
ReadLn(x);
a:=1;
k:=0;
S:=0;
WHILE ABS(a)>1E-6 DO
BEGIN
INC(k);
a:=X2np((x-1),k)/k/X2np(x,k);
S:=S+a;
END;
Writeln('S = ', S:10:7);
Writeln('Ln(x) = ', Ln(x):10:7);
ReadLn;
END.

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

Последний раз редактировалось Vladimir_S; 10.05.2009 в 13:13
Vladimir_S вне форума  
Ads

Яндекс

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