KvanTTT

SeriesSum

Oct 6th, 2012
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.06 KB | None | 0 0
  1. program SeriesSum;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils;
  7.  
  8. function LnOneMinusX(X: Real; Eps: Real; var N: Integer): Real;
  9. var
  10.   R: Real;
  11.   Sum: Real;
  12.   Numerator, Denominator: Real;
  13. begin
  14.   N := 0;
  15.   Sum := 0;
  16.   R := 1;
  17.   Numerator := 1;
  18.   Denominator := 0;
  19.   while Abs(R) > Eps do
  20.   begin
  21.     Numerator := Numerator * X;
  22.     Denominator := Denominator + 1;
  23.     R := Numerator / Denominator;
  24.     Sum := Sum - Numerator / Denominator;
  25.     Inc(N);
  26.   end;
  27.   Result := Sum;
  28. end;
  29.  
  30. var
  31.   Eps: Real;
  32.   X: Real;
  33.   N: Integer;
  34.   EpsValue: Real;
  35.   PreciseValue: Real;
  36.  
  37. begin
  38.   Write('Enter X (from 0 to 1), Eps: ');
  39.   ReadLn(X, Eps);
  40.  
  41.   EpsValue := LnOneMinusX(X, Eps, N);
  42.   PreciseValue := Ln(1 - X);
  43.   WriteLn;
  44.   WriteLn('Step count: ', N);
  45.   WriteLn('Ln(1 - X) = ', EpsValue:14:11, ' (with Eps: ', Eps, ')');
  46.   WriteLn('Ln(1 - X) = ', PreciseValue:14:11, ' (precise)');
  47.   WriteLn('Absolute error: ', Abs(PreciseValue - EpsValue):14:11);
  48.   WriteLn('Relative error: ', Abs((PreciseValue - EpsValue) / PreciseValue):14:11);
  49.  
  50.   Readln;
  51. end.
Advertisement
Add Comment
Please, Sign In to add comment