Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 31

Вычислить приближенно значение бесконечной суммы

08.11.2021, 14:18. Показов 1758. Ответов 2

Студворк — интернет-сервис помощи студентам
Вычислить приближенно значение бесконечной суммы 1-1/3+1/5-1/7+..., сравнивая ее значение с точным ответом π/4. Нужное приближение считается полученным если абсолютное значение разности между вычисленной суммой нескольких первых слагаемых и точным ответом окажется меньше заданной точности эпсилон (0 < ε < 1).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2021, 14:18
Ответы с готовыми решениями:

Вычислить приближенно значение бесконечной суммы
Программирование циклических алгоритмов Цель работы: закрепить практические навыки работы с системой Borland Pascal, научиться...

Вычислить приближенно значение бесконечной суммы
Вычислить приближенно значение бесконечной суммы p.s. справа от каждой суммы дается ее точное значение, с которым можно сравнить...

Вычислить значение бесконечной суммы
Для х, изменяющегося от х0 до xk с шагом h, вычислить значения бесконечной суммы S(x) с точностью e=0.00001 и функции y(x). ...

2
0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 31
20.12.2021, 13:09  [ТС]
В формуле нет рекуррентности, помогите сделать формулу с рекуррентностью, пожалуйста.
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
var n,z:integer;
    s,eps,x:real;
begin
n:=1;
z:=1;
s:=1;
x:= pi/4;
write('введите эпсилон ');
readln(eps);
if (eps < 0) or (eps > 1) then 
begin
  writeln('введено неверное значение эпсилон')
end
else
  begin
while abs(pi/4-s)>=eps do
 begin
  n:=n+1;
  z:=-z;
  s:=s+z/(2*n-1);
 end;
writeln('приближенное значение бесконечной суммы = ',s);
writeln('значение pi/4 = ',x);
writeln('разница между значением суммы и pi/4 = ',s-x)
end;
end.
0
Модератор
10440 / 5729 / 3405
Регистрация: 17.08.2012
Сообщений: 17,438
24.12.2021, 17:08
Отчего же это "нет рекуррентности"? Вообще-то, рекуррентные вычисления в Вашей программе имеют место быть в строках 18 и 19.

Это ряд ряд Мадхавы-Лейбница, он же ряд Грегори-Лейбница:

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

Ряд знакопеременный, модули членов ряда монотонно убывают. По признаку Лейбница для знакопеременных рядов, модуль суммы остатка ряда не превышает последнего отброшенного члена ряда. Вычисление суммы ряда можно прекратить, когда модуль последнего члена ряда станет меньше ε. Так и нужно будет поступить. В Вашей же программе сделано смешно и нелепо: для того, чтобы найти приближённое значение π/4, Вы его сравниваете с π/4.

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

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\boxed{a_1=1};\ \ a_n=\frac{(-1)^{n+1}}{2n-1};\ \ a_{n-1}=\frac{(-1)^{(n-1)+1}}{2(n-1)-1}=\frac{(-1)^n}{2n-3};<br />

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{a_n}{a_{n-1}}=\frac{\frac{(-1)^{n+1}}{2n-1}}{\frac{(-1)^n}{2n-3}}=\frac{(-1)(2n-3)}{2n-1}=\frac{1.5-n}{n-0.5}\ \Rightarrow \ \boxed{a_n=\frac{(1.5-n)a_{n-1}}{n-0.5}}<br />

Первый член ряда известен, последующий член ряда выражен через предыдущий.
Замечание: Ряд сходится очень медленно. В рекуррентном соотношении сокращение числителя и знаменателя на 2 сделано умышленно для уменьшения риска целочисленного переполнения.

Теперь можно подрихтовать Вашу немного кривую программу кувалдой:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const
  x = pi / 4;
var
  n: integer;
  a, s, eps:real;
begin
  repeat
    write('              Введите 0 < eps < 1;  eps =  ');
    readln(eps)
  until (eps > 0) and (eps < 1);
  n := 1;
  a := 1;
  s := 0;
  while abs(a) >= eps do
    begin
      s := s + a;
      inc(n);
      a := a * (1.5 - n) / (n - 0.5)
    end;
  writeln('Приближённое значение бесконечной суммы = ', s:18:15);
  writeln('                          Значение pi/4 = ', x:18:15);
  writeln('   Разница между значением суммы и pi/4 = ', s - x :18:15)
end.
Можно чуть-чуть ускорить программу, если заранее вычислить, сколько членов ряда нужно просуммировать. В этом случае проверка окончания вычислений на каждой итерации цикла не потребуется, и для вычисления суммы можно будет использовать предопределённый цикл.

Из условия окончания вычислений

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{1}{2n_{max}-1}\leq \varepsilon<br />

получим

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
n_{max}\geq \frac{\frac{1}{\varepsilon}-1}{2}<br />

Вариант программы с предопределённым циклом:
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
const
  x = pi / 4;
var
  n: integer;
  a, s, eps:real;
begin
  repeat
    write('              Введите 0 < eps < 1;  eps =  ');
    readln(eps)
  until (eps > 0) and (eps < 1);
  a := (1 / eps - 1) / 2;
  n := trunc(a);
  if frac(a) > 0 then inc(n);
  a := 1;
  s := 0;
  for n := 1 to n do
    begin
      a := a * (1.5 - n) / (n - 0.5);
      s := s + a
    end;
  writeln('Приближённое значение бесконечной суммы = ', s:18:15);
  writeln('                          Значение pi/4 = ', x:18:15);
  writeln('   Разница между значением суммы и pi/4 = ', s - x :18:15)
end.
Вообще, ввести такое ε, чтобы (1/ε-1)/2 не имело дробной части, затруднительно. На ум приходит разве что ε=0.2. Так что программу можно немного сократить:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const
  x = pi / 4;
var
  n: integer;
  a, s, eps:real;
begin
  repeat
    write('              Введите 0 < eps < 1;  eps =  ');
    readln(eps)
  until (eps > 0) and (eps < 1);
  a := 1;
  s := 0;
  for n := 1 to trunc((1 / eps - 1) / 2) + 1 do
    begin
      a := a * (1.5 - n) / (n - 0.5);
      s := s + a
    end;
  writeln('Приближённое значение бесконечной суммы = ', s:18:15);
  writeln('                          Значение pi/4 = ', x:18:15);
  writeln('   Разница между значением суммы и pi/4 = ', s - x :18:15)
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2021, 17:08
Помогаю со студенческими работами здесь

Вычислить значение бесконечной суммы
задание ягту первый курс для х, изменяющегося в пределах от x0 до xk с шагом h, вычеслить значение безконечной суммы S(x) с точностью...

Вычислить значение бесконечной суммы S(x) по формуле
Помогите пожалуйста написать код программы для задачи 1) Ввести ОДНО значение х (например, х=1) и вычислить значение бесконечной суммы...

Вычислить приближенное значение бесконечной суммы
Дано действительное. Вычислить приближенное значение бесконечной суммы: cos(x)=1-x^2/2!+x^4/4!-x^6/6!+ На печать выдавать значения...

Вычислить приближенное значение бесконечной суммы с заданной точностью e
Вычислить приближенное значение бесконечной суммы с заданной точностью e. Помогите пожалуйста

Цикл с постусловием: вычислить значение бесконечной суммы по формуле
1) Ввести ОДНО значение х (например, х=1) и вычислить значение бесконечной суммы S(x) по формуле из первого столбца с точностью е=0.001...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru