Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2015, 02:31   #1
Вячик
Пользователь
 
Регистрация: 09.11.2015
Сообщений: 14
По умолчанию ln((1 + x) / (1 - x))

{При некоторых заданных x, N и Е, определяемых вводом, вычислите сумму N
слагаемых заданного вида, а также сумму тех слагаемых, которые по абсолютной
величине больше E. Для второго случая выполните суммирование для двух значений
E, отличающихся на порядок, и при этом определите количество слагаемых,
включенных в сумму. Сравните результаты с точным значением функции, для
которой данная сумма определяет приближенное значение при X, лежащем в интервале
(-R,R).
}
Код:
program p53_n25;

const
  R = 1;

var
  eps, x, x2, fx: real; // fx - значение функции
  sum, a: Real; // a - члены ряда
  i, N: Integer; // N - число слагаемых, входящих в сумму

begin



  // Ввод данных и проверка их на правильность
  repeat
    write('Введите натуральное число N. N>0, N->');
    Readln(N);
    if N < 1 then
      writeln('Введены недопустимые данные. Повторите ввод');
  until N >= 1;

  repeat
    write('Введите число x такое, что', -R, '<x<', R, '. x->');
    Readln(x);
    if (x <= -1) or (x >= 1) then
      Writeln('Введены недопустимые данные. Повторите ввод');
  until (-1 < x) and (x < 1);

  repeat
    write('Введите число eps такое, что 0<eps<1. eps->');
    Readln(eps);
    if (eps <= 0) or (eps >= 1) then
      writeln('Введены недопустимые данные. Повторите ввод');
  until (eps < 1) and (eps > 0);

  // Сумма N слагаемых
  sum := 0;
  a := x;
  x2 := sqr(x);
  for i := 1 to N do
  begin
    sum := sum + 2 * a;
    a := a * ((2 * i - 1) * x2) / (2 * i + 1);
  end;

  Writeln('Сумма ', N, ' первых слагаемых.');
  Writeln('sum = ', sum: 8: 5);
  Writeln;

  // Подсчет количества и суммы слагаемых по модулю >eps
  sum := 0;
  a := x;
  i := 0;
  while abs(a) > eps do
  begin
    sum := sum + 2 * a;
    inc(i);
    a := a * ((2 * i - 1) * x2) / (2 * i + 1);
  end;
  Writeln('Количество и сумма слагаемых, по модулю больших чем eps.');
  writeln('sum = ', sum: 8: 5);
  Writeln('N = ', i);
  Writeln;

  // Подсчет количества и суммы сгалаемых по модулю > eps * 0.1
  eps := eps * 0.1;
  while abs(a) > eps do
  begin
    sum := sum + 2 * a;
    inc(i);
    a := a * ((2 * i - 1) * x2) / (2 * i + 1);
  end;
  Writeln('Количество и сумма слагаемых, по модулю больших чем eps * 0.1');
  writeln('sum = ', sum: 8: 5);
  Writeln('N = ', i);
  Writeln;

  // Сравнение со значением функции
  fx := ln((1 + x) / (1 - x));
  writeln('f(x) = ', fx: 6: 4);

  Readln;

end.
как переделать чтоб значения показывал 10 знаков после запятой

Последний раз редактировалось Poma][a; 19.12.2015 в 06:03.
Вячик вне форума Ответить с цитированием
Старый 19.12.2015, 05:13   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

паскакаль

124.jpg
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск