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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2016, 15:56   #1
alex-y
Новичок
Джуниор
 
Регистрация: 12.11.2016
Сообщений: 2
По умолчанию Нахождение суммы бесконечно убывающего ряда. PascalABC

Помогите, пожалуйста, написать программу
Задание. "Нахождение суммы бесконечно убывающего ряда."
Написать программу суммирования ряда, приведенного в таблице, при одном и том же значении аргумента и 2-х значениях точности, отличающихся друг от друга более чем на порядок. Сравнить полученные результаты с точным значением и сделать вывод о схождении ряда. Вычисления заканчивать при достижении заданной степени точности (т.е. когда очередной член ряда становится по модулю меньше введенного значения точности е ).
Изображения
Тип файла: png Безымянный.png (4.3 Кб, 82 просмотров)
alex-y вне форума Ответить с цитированием
Старый 13.11.2016, 11:06   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
const e=0.000001;
var x,xi,s,si:real;
    n,fac:integer;
begin
   Write('x = '); Readln(x);
   s:=1;
   n:=0;
   fac:=1;
   xi:=1;
   Repeat
      n:=n+1;
      xi:=xi*x;
      fac:=fac*n;
      si:=xi/fac;
      s:=s+si;
   Until Abs(xi)<e;
   Writeln('s = ',s:5:10);
   Writeln('y = ',exp(x):5:10);
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 14.11.2016, 22:07   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Нет. Не сойдёт.
Попробуйте получить решение при x= 0.4
Жаль, что проигнорировано моё недавнее замечание относительно того, какой алгоритм следует применять в таких случаях.
Ещё раз.
Вычисление факториала очень быстро порождает переполнение.
В тоже время, как в этом случае, k = x/n мало и будет только уменьшаться с ростом n.
Моё предложение:
Код:
const e = 0.000001;
var x,xi, s, k:real;
    n : integer;
begin
   Write('x = ');
   Readln(x);
   s := 1;
   n := 1;
   xi := 1;
   Repeat
      k := x/n;
      xi := xi * k;
      s := s + xi;
      n := n + 1;
   Until Abs(xi) < e;
   Writeln('n = ',n:8);
   Writeln('s = ',s:12:10);
   Writeln('y = ',exp(x):12:10);
   Readln;
end.
Кстати, а почему
Writeln('s = ',s:5:10);
Так понимаю, что неверно понята роль этих чисел
s:m:n - это m позиций под все число, с учетом точки и возможного знака, а n - количество знаков после точки.
При неверном формате результат всегда выдается верным, насколько это возможно.
При правильном формате число m всегда больше n.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PascalABC faiter_on Паскаль, Turbo Pascal, PascalABC.NET 3 07.12.2014 19:46
PascalABC Юся=) Помощь студентам 1 22.12.2011 19:09
PascalABC ludan Помощь студентам 0 22.10.2011 22:50
3D в PascalABC Рудко Дмитрий Паскаль, Turbo Pascal, PascalABC.NET 6 09.02.2010 13:02
PascalABC, uses Gorny Помощь студентам 3 04.12.2009 13:12