Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.09.2020
Сообщений: 40

Составить программу для нахождения суммы бесконечного ряда

23.09.2020, 14:30. Показов 3202. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составить программу для нахождения суммы бесконечного ряда с заданной точностью. Проверку правильности вычислений производить с помощью контрольной формулы.

Ряд:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{3x^2}{4!}-\frac{5x^4}{6!}+\frac{7x^6}{8!}-\frac{9x^8}{10!}+\,...\,\pm \frac{(2i+1)x^{2i}}{(2i+2)!}\mp \,...<br />

Контрольная формула:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{1-\cos x-x\sin x}{x^2}+0.5<br />
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2020, 14:30
Ответы с готовыми решениями:

Составить алгоритм нахождения суммы бесконечного ряда
помогите,пожалуйста) срочно нуждаюсь в вашей помощи) задано натуральное н. необходимо составить алгоритм, с помощью которого можно...

Составить программу для вычисления суммы бесконечного сходящегося ряда
составить программу для вычисления суммы бесконечного сходящегося ряда S = 1 + 1/3 + 1/6 + 1/9 суммирование прекратить при появлении в...

Pascal. Циклы. Составить блок-схему алгоритма и программу для вычисления суммы членов бесконечного ряда
Составить блок-схему алгоритма и программу для вычисления суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε=0,001...

4
0 / 0 / 0
Регистрация: 04.09.2020
Сообщений: 40
23.09.2020, 14:33  [ТС]
Пример программы :
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Program Taylor_30;
var
  a,b,c,u,s,x,eps,f,e : double;
  i : LongInt;
Begin
writeln('Вычисление суммы бесконечного ряда');
write('Введите точность eps='); readln(eps);
repeat
  writeln('-------------------------------');
  write('Введите x = ');
  readln(x);
  i:=1;                 {Счетикик слагаемых }
  a:=1.0;                                       
  b:=0.5;               {Для расчета коэфициента при степенях х}
  c:=x;                 {Здесь будем накапливать степени х}
  u:=c*(a-b);           {Первый член ряда для варианта 30}
  s:=u;                 {Здесь будем накапливать сумму членов ряда}
  repeat
    Inc(i);             {т.е. i:=i+1}
    a:=a/i;
    b:=b/(2*i-1)/(2*i);
    c:=-c*x;            {Увеличили степень х и сменили знак}
    u:=c*(a-b);         {Очередной член ряда}
    s:=s+u
  until abs(u)<eps;     {Условие окончания цикла}
  f:=cos(sqrt(x))-exp(-x); {Контрольная функция}
  e:=s-f;               {Ошибка}
  writeln('Сумма ряда при х=',x,'равна',s);
  writeln('истинное значение=',f,', ошибка=',e:11);
  writeln('просуммировано ', i, ' слагаемых');
until abs(x)>99;        {Программа закончится, когда в качестве х будет введено
                         большее число}
end.
Ряд:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
x\left(\frac{1}{1!}-\frac{1}{2!} \right)-x^2\left(\frac{1}{2!}-\frac{1}{4!} \right)+x^3\left(\frac{1}{3!}-\frac{1}{6!} \right)-\,...\,\pm x^i\left(\frac{1}{i!}-\frac{1}{(2i)!} \right)\mp \,...<br />

Контрольная формула:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\cos \sqrt{x^{\,}}-e^{-x}<br />
0
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,456
27.09.2020, 05:25
Лучший ответ Сообщение было отмечено suggestion как решение

Решение

Ваш ряд:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
S=\sum_{i=1}^{\infty }\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}=\sum_{i=1}^{\infty }a_i<br />

Найдём рекуррентное соотношение для членов ряда.

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\boxed{a_1=\frac{3x^2}{4!}=\frac{x^2}{8}};\ \ \ a_i=\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!};\ \ \ a_{i-1}=\frac{(-1)^i(2i-1)x^{2i-2}}{(2i)!};<br />

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{a_i}{a_{i-1}}=\frac{\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}}{\frac{(-1)^i(2i-1)x^{2i-2}}{(2i)!}}=\frac{x^2}{4(0.5-i)(i+1)}\ \Rightarrow \ \boxed{a_i=\frac{a_{i-1}x^2}{4(0.5-i)(i+1)}}<br />

Первый член ряда известен, последующий член ряда выражен через предыдущий. Рекуррентное соотношение найдено.

При x = 0 контрольное значение не определено (деление на 0). Пусть x = 0 будет условием выхода из программы.

Программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var
  a, s, x, eps, f, e: double;
  i: longint;
Begin
  writeln('Вычисление суммы бесконечного ряда');
  writeln('Для окончания вычислений введите x = 0');
  write('Введите точность eps = ');
  readln(eps);
  repeat
    writeln('-------------------------------');
    write('Введите x = ');
    readln(x);
    if x <> 0 then            {при x = 0 будет деление на 0, пусть это будет концом вычислений}
      begin                   {если x <> 0, то вычисляем сумму ряда}
        i := 1;               {номер члена ряда}
        a := x * x / 8;       {первый член ряда}
        s := 0;               {сумма ряда пока равна 0}
        repeat
          s := s + a;         {добавляем очередной член ряда к сумме}
          inc(i);             {номер следующего члена ряда}
          a := a * x * x / 4 / (0.5 - i) / (i + 1); {следующий член ряда}
        until abs(a) < eps;   {условие выхода из цикла суммирования членов ряда}
        f := (1 - cos(x) - x * sin(x)) / x / x + 0.5; {Контрольная функция}
        e := s - f;           {Ошибка}
        writeln('       Сумма ряда = ', s:0:15, '  при  х = ', x:0:15);
        writeln('истинное значение = ', f:0:15, ', ошибка = ', e:0:15);
        writeln('просуммировано ', i - 1, ' слагаемых');
      end
    else writeln('Программа завершена') {при x = 0 завершаем программу}
  until x = 0                 {условие выхода из программы}
end.
При |x| > 40 программа начинает безбожно врать, и результат ни в одно эпсилон не лезет. Это происходит потому, что при достаточно большом x с увеличением номера члена ряда x2i поначалу растёт быстрее, чем (2i+2)!, и сумма может стать настолько большой, что вес младшего значащего разряда мантиссы машинного представления суммы станет больше очередного слагаемого. Если это произойдёт, то все оставшиеся члены ряда сумму не изменят, и результат окажется завышенным.
1
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 11
16.11.2020, 13:49
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Найдём рекуррентное соотношение для членов ряда.
Подскажите, пожалуйста, как Вы вычисляли это соотношение, не могу в инете найти грамотного объяснения
0
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,456
16.11.2020, 20:41
Не понимаю. Я же формулы написал, что в этих формулах может быть непонятного?

Нужно знать значение члена с наименьшим номером (в данном случае наименьший номер - это i=1).

Для того, чтобы вычислить значение члена с наименьшим номером, нужно подставить минимальный параметр суммы i=1 (наименьший номер) в формулу общего члена ряда.

Рекуррентное соотношение - это формула, которая выражает последующий член через предыдущий. Метод поиска рекуррентного соотношения зависит от формулы общего члена ряда. Единого метода, вообще говоря, нет. Обычно достаточно разделить последующий член на предыдущий. Иногда нужно вычитать предыдущий член из последующего. Бывает и так, что формулу для общего члена ряда приходится разбивать каким-либо образом на несколько частей, и с каждой частью разбираться отдельно.

Но обычно всё-таки нужно делить последующий член на предыдущий. Для этого нужно взять формулу общего члена ряда (здесь это ai), подставить в неё параметр суммы на единицу меньше, в данном случае вместо i подставить i-1, получим ai-1. После этого поделить формулу для ai на формулу для ai-1, будет получена формула для коэффициента пропорциональности между последующим и предыдущим членом.

Теперь можно получить значение любого члена ряда, начиная с известного первого. Для получения второго члена ряда в формулу коэффициента пропорциональности подставляем i=2 и что там ещё нужно, умножаем на первый член. Второй член получен. Далее, для получения третьего члена, подставляем в коэффициент пропорциональности i=3 и что там ещё нужно, и умножаем это дело на второй член. И так далее.

======================================== ==============
======================================== ==============

На всякий случай, распишу подробно, на примере ряда из этой темы.

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{3x^2}{4!}-\frac{5x^4}{6!}+\frac{7x^6}{8!}-\frac{9x^8}{10!}+\,...\,\pm \frac{(2i+1)x^{2i}}{(2i+2)!}\mp \,...<br />

Вот это

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\pm \frac{(2i+1)x^{2i}}{(2i+2)!}<br />

формула общего члена ряда. Переменная i - это номер члена ряда (, он же - параметр суммы). Легко заметить, что, если в эту формулу вместо i подставить 1, получим первый член ряда, если подставить 2 - второй член ряда, и так далее. Получается, что нумерация членов ряда (это самое i) начинается с 1. Остаётся только нелепый +- заменить на что-то точное. Видно, что знаки перед слагаемыми чередуются. В данном случае можно домножить слагаемое на (-1)i+1, и тогда у каждого слагаемого получится нужный знак. Можно было с не меньшим успехом умножить каждый член на (-1)i+3, например. Знаки получились бы те же самые. Можно и вовсе знак вычислять отдельно от слагаемого.

Общий член ряда:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
a_i=\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}<br />

Кстати, это самое i не обязательно должно начинаться с 1. Очень часто нумерация членов ряда начинается с нуля, и изредка бывает, что нумерация членов ряда начинается с других чисел. Иногда номера членов ряда идут не подряд. Много чудес на белом свете.

На самом деле, (верхняя) формула для суммы ряда несколько неудобна: неясно, как вычисляется знак слагаемого, и сразу не разглядишь, а какой же номер у самого левого члена ряда. Гораздо удобнее использовать сокращённую форму записи суммы ряда. Она состоит из большой греческой буквы сигма, под которой пишется обозначение переменной для номера члена ряда, и с какого числа нумерация начинается (в данном случае это i=1), а сверху этой сигмы пишется, до которого числа этот самый номер члена ряда может расти (в данном случае до бесконечности). Справа от сигмы пишется общий член ряда, то есть, формула, подставив в которую номер члена ряда, можно получить формулу для члена ряда с этим номером.

Руководствуясь вышеизложенным, получим

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\sum_{i=1}^{\infty }\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}<br />

Найдём значение первого члена ряда. Подставляем вместо i единицу, и...

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}=\frac{(-1)^{1+1}(2\cdot 1+1)x^{2\cdot 1}}{(2\cdot 1+2)!}=\frac{(-1)^2(2+1)x^2}{(2+2)!}=\frac{3x^2}{4!}<br />

Естественно, первый член и получился, иначе и быть не могло.

Теперь в формулу общего члена ряда вместо i подставим i-1...

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\left.\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}=\right|_{i:=i-1}=\frac{(-1)^{i-1+1}\left( 2(i-1)+1\right)x^{2(i-1)}}{\left( 2(i-1)+2\right)!}=\frac{(-1)^i(2i-1)x^{2i-2}}{(2i)!}=a_{i-1}<br />

Обозначили это дело как ai-1, и обзовём предыдущим членом ряда.

Теперь выясним, на что нужно домножить ai-1, чтобы получить ai.

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{a_i}{a_{i-1}}=\frac{\frac{(-1)^{i+1}(2i+1)x^{2i}}{(2i+2)!}}{\frac{(-1)^i(2i-1)x^{2i-2}}{(2i)!}}=\frac{(-1)^{i+1}}{(-1)^i}\cdot \frac{2i+1}{2i-1}\cdot \frac{x^{2i}}{x^{2i-2}}\cdot \frac{(2i)!}{(2i+2)!}=\\\\=-1\cdot \frac{2i+1}{2i-1}\cdot x^2\cdot \frac{(2i)!}{(2i)!\cdot(2i+1)\cdot (2i+2)}=\frac{x^2}{-(2i-1)(2i+2)}=\frac{x^2}{(1 -2i)(2i+2)}=\frac{x^2}{4(0.5-i)(i+1)}

Тогда

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
a_i=\frac{x^2a_{i-1}}{4(0.5-i)(i+1)}<br />

Это и есть рекуррентная формула для членов данного ряда.

Пояснение по сокращению факториалов: факториал - это произведение натуральных чисел от 1 до указанного, таким образом,

(2i)!=1*2*3*...*(2*i-1)*(2*i),
(2i+2)!=1*2*3*...*(2*i-1)*(2*i)*(2*i+1)*(2*i+2).

в данном случае, при их делении не сократятся только два самых старших сомножителя из (2*i+2)!, это будут (2*i+1) и (2*i+2).

Естественно, с другими факториалами будет другое частное. Например, W!/(W-1)!=W; (R+3)!/R!=(R+1)(R+2)(R+3).

Итог. Первый член известен, рекуррентное соотношение, в данном случае, на что нужно умножить предыдущий член, чтобы получить последующий, получено.

И что с этим делать?

Второй член имеет номер i=2. подставляем i=2 в формулу рекуррентного соотношения, туда же подставляем ai-1, это будет a2-1=a1, который нам известен. Второй член получен. Далее подставляем i=3, и ai-1=a3-1=a2, который был вычислен на предыдущем шаге, и так далее... Ещё по ходу пьесы добавляем полученные слагаемые к сумме.

Глубоко надеюсь, что понятно всё разжевал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2020, 20:41
Помогаю со студенческими работами здесь

Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е
Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е. Использовать рекуррентные соотношения при вычислении...

Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е
Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е. Использовать рекуррентные соотношения при вычислении...

Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е
проблемы с паскалем((( Уже не знаю что делать, куда бежать! Помогите пожалуйста програмку написать. Очень срочно!!!! Задача: составить...

Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е
У меня проблемы с паскалем((( Уже не знаю что делать, куда бежать! Помогите пожалуйста програмку написать. Очень срочно!!!! Задача:...

Алгоритм нахождения суммы бесконечного ряда
Составить алгоримт для нахождения суммы бесконечного сходящегося ряда: S= 1+1/2+1/4+1/8+1/16... . Суммирование прекратить при появлении в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru