Цитата:
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.
Здесь ограничение точности взято просто "с запасом". Но если это не устраивает и нужно реально считать остаточный член ряда - напишите, сделаем. Просто дело это изрядно муторное.