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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 22:55   #1
Fredom
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 11
По умолчанию Составить текст программы для вычисления значения суммы ряда, с комментариями

Составить текст программы для вычисления значения суммы ряда, с комментариями с:
Изображения
Тип файла: png Безымянный.png (3.6 Кб, 50 просмотров)
Fredom вне форума Ответить с цитированием
Старый 30.10.2016, 10:10   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var i,n:integer;
    s,x,st:real;
begin
   Write('n = ');Readln(n);
   Write('x = ');Readln(x);
   s:=0;//обнуляем результат
   st:=x;//основание степени
   For i:=0 to n do
   begin
      st:=st*x;//вычисляем числитель дроби
      s:=s+st/(i+1)/(i+2);//основная формула
   end;
   Writeln(s:5:5);
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 31.10.2016, 23:43   #3
Fredom
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 11
По умолчанию

Да, спасибо )
Fredom вне форума Ответить с цитированием
Старый 01.11.2016, 05:39   #4
CMY_3
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 38
По умолчанию

Код:
   st:=x*x;//основание степени
   For i:=0 to n do
   begin
      s:=s+st/(i+1)/(i+2);//основная формула
      st:=st*x;//вычисляем числитель дроби
   end;

Последний раз редактировалось CMY_3; 01.11.2016 в 05:58.
CMY_3 вне форума Ответить с цитированием
Старый 01.11.2016, 16:50   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Оба варианта правильные, с точки зрения работы программы, но не верные с методической точки зрения.
Очевидно, что при вычислениях элементов ряда "затык" (переполнение) произойдет раньше, чем это могло бы быть, да и точность вычисления пострадает.
Это связано с выражением:
Код:
st:=st*x;//вычисляем числитель дроби
Тут выполняется возведение в степень числа и если это число больше единицы, то переполнение наступит скоро.
Для рекуррентных выражений используют другой способ:
Следующий элемент ряда может быть представлен так: am+1 =K*am
Отсюда следует, что K = am+1/am. В нашем случае получим: K = x*(m+1)/(m+3).

Теперь программа получается такой:
Код:
am := sqr(x)/2;
Sum := am;
for m := 0 to n do
begin
   K := x*(m+1)/(m+3);
   am := am*K;
   Sum := Sum + am;
end;
В добавление, если заняться вычислением с заданной точностью, то программа может быть представлена в такой версии:
Код:
am := sqr(x)/2;
Sum := am;
m := 0;
while am >= eps do
begin
   K := x*(m+1)/(m+3);
   am := am*K;
   Sum := Sum + am;
   m := m + 1;
end;
PS: Писал без проверки на компиляторе, так что если что ...
Важно - это идея, см. например, Т.А. Павловская, Программирование на ЯВУ.

Как-то так, ...
Как-то так, ...

Последний раз редактировалось ViktorR; 01.11.2016 в 16:53.
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия для вычисления суммы ряда malikon Помощь студентам 3 02.05.2014 20:46
Составить программу вычисления и печати бесконечной суммы для произвольного значения x, заданного kalugin19 Паскаль, Turbo Pascal, PascalABC.NET 9 05.12.2013 20:57
Составить алгоритм вычисления суммы и произведения ряда FOrus101 Помощь студентам 1 19.02.2012 19:33
программа для вычисления суммы ряда Vitalina69 Общие вопросы Delphi 2 01.12.2010 19:47