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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2019, 16:30   #1
ABAROV
Новичок
Джуниор
 
Регистрация: 07.12.2019
Сообщений: 2
По умолчанию Вычислить сумму ряда.

Сделать:

1. вывод рекуррентной формулы(подробно);
2. блок-схему и диаграмму Насси-Шнейдермана;
3. текст программы;
4. результаты работы на тестовых наборах данных.
Изображения
Тип файла: jpg -G0pGZx_kiw.jpg (3.6 Кб, 32 просмотров)
ABAROV вне форума Ответить с цитированием
Старый 07.12.2019, 16:43   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цена вопроса? "Халява, сэр!"
У меня проснулся дар телепатии. Щас Alar тебе врежет: "Здесь не решатель задач! Пошёл бы ты ... во Фриланс."
Да что тут решать-то? Даже самый тупой сообразит, что степень x в каждом последующем члене ряда на 2 больше предыдущего,равно как и основание факториала, а знак попеременный. Да и чего её выводить-то, формулу, если она слева от = уже написана? Мой кот Мурзик решил бы секунд за 40, но сейчас он плотно занят украденной сосиской. Но еще нужно ззадать точность, до которой считать, а то будем крутиться, пока у компа разрядная сетка не закончится.
Цитата:
диаграмму Насси-Шнейдермана
- ни фига себе! Еще и это? Я 40 лет в ремесле, но как-то обходился без этого. Такое - только за очень дополнительные тугрики.

Последний раз редактировалось digitalis; 07.12.2019 в 17:57.
digitalis вне форума Ответить с цитированием
Старый 07.12.2019, 18:08   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Для k что-то вроде этого:
k = -(x^2)/((2n+1)*(2n+2))
А вот подробно попробуй сам.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 07.12.2019, 21:48   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Что-то добрый я сегодня, погубит меня жалость к двоечникам.
Код:
begin
  z := 1 ;
  ze := 1 ;
  x1 := 1 ;
  x2 := 1 ;
  xe := 1 ;
  while Abs(xe) > eps do
    begin
     x1 := x1 * x * x * -1;
     x2 := x2 * ze * (ze+1) ;
     xe := x1 / x2 ;
     z := z + xe ;
     ze := ze + 2 ;
   end ;  
end;
digitalis вне форума Ответить с цитированием
Старый 08.12.2019, 01:04   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

digitalis
Цитата:
Что-то добрый я сегодня, погубит меня жалость к двоечникам.
Код:
1. Это не то, что надо ТС.
2. Вывод рекуррентной формулы задан не спроста.
Ваш вариант очень быстро "загнётся", так как в нём использовано прямое вычисление факториала, который быстро переполняет результат.
3. Ранее, например тут,
https://www.programmersforum.ru/show...599%20work.rar
я отмечал ошибочность такого подхода newerow1989.
Там же есть и вложение, которое, вероятно, могло бы помочь ТС.
А вообще то, есть замечательная книга Т.А. Павловская, Программирование на ЯВУ. Паскаль. Электронная версия лежала рядом, в этом разделе.
Решению именно таких примеров там посвящён раздел и приводится код.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 08.12.2019, 10:18   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

1. У меня знаменатель Extended, так что загнуться ему в обозримое время не придется. Но полностью признавая справедливость факториала, даю укороченную версию.
2. Я не думаю, что учащимся мукомольного коллежда, судя по эрудиции ТС, потребуются столь тонкие вопросы оптимизации. Хотя кто знает - судя по Насси-Шнейдерману - возможно, это Высшие Курсы Супер - Программистов . Кстати, сам я расширил горизонты познания, именно на этом вопросе открыв для себя довольно экзотичную, на мой взгляд, форму представления алгоритма. И преимуществ по сравнению со схемами алгоритмов не вижу хуч-убей.
3. Рекурентную формулу получим, разделив i+1-й член на i-й, но не представляю, чтобы она была более информативна, чем исходно заданная. Так что потенциальным помощникам лентяя придется еще малость напрячься.

Код:
  z := 1 ; ze := 1 ; x1 := 1 ;
  while Abs(xe) > eps do
    begin
     x1 := x1 * x * x * -1 / (ze*(ze+1));
     z := z + x1 ;
     ze := ze + 2 ;
   end ;

Последний раз редактировалось digitalis; 08.12.2019 в 10:35.
digitalis вне форума Ответить с цитированием
Старый 08.12.2019, 13:33   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
судя по Насси-Шнейдерману
Это примитивная версия тех же блок-схем )
image016.gif
Black Fregat вне форума Ответить с цитированием
Старый 08.12.2019, 13:34   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Коэффициент для рекуррентного вычисления дан выше. Что-то он получился не таким как у Вас.

Для i+1 -го элемента в знаменателе будет (2*(n+1))! = (2*n +2)! = (2*n)! * (2*n+1) * (2*n +2)

PS: Щас мы выпишем решение для ТС
О такой диаграмме только сейчас и узнал. Блок-схемы рисовал только для МП, и то, когда писал на ассемблере.
Как-то так, ...

Последний раз редактировалось ViktorR; 08.12.2019 в 13:37.
ViktorR вне форума Ответить с цитированием
Старый 08.12.2019, 18:44   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

О, уже дискуссия
Свои решения я имею обыкновения проверять, в данном случае проверил в Дельфи и "контрольный выстрел" - на Excel . Например, для х=4 первые 8 членов ряда будут
1,0 -8,000000000 -7,000000000
3,0 10,666666667 3,666666667
5,0 -5,688888889 -2,022222222
7,0 1,625396825 -0,396825397
9,0 -0,288959436 -0,685784832
11,0 0,035025386 -0,650759446
13,0 -0,003079155 -0,653838601
15,0 0,000205277 -0,653633324
Есть альтернативное мнение ? Плииз.
---------------------------------------------
Чувствую, скоро соберем дискуссионный клуб на тему: (2+2) <? =? >? (2*2)

Последний раз редактировалось digitalis; 08.12.2019 в 18:49.
digitalis вне форума Ответить с цитированием
Старый 08.12.2019, 21:26   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Да! Оно есть.
Я просто не обратил внимание на то, что:
Код:
...
ze := ze + 2;
...
Так что наши формулы совпадают.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить сумму ряда C++ AleksaxeYa Помощь студентам 3 11.01.2011 11:13
вычислить сумму ряда у=1*3+3*5+5*7...+31*33 dima.m Помощь студентам 2 29.03.2010 21:05
вычислить сумму ряда у=1*3+3*5+5*7...+31*33 lena.h Microsoft Office Excel 2 28.03.2010 16:34
вычислить сумму ряда ANRJumper Помощь студентам 5 26.05.2009 14:45