Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.04.2024
Сообщений: 2

Напишите программу нахождения суммы ряда

17.04.2024, 14:51. Показов 728. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу нахождения суммы ряда. Суммирование пре кращается, когда слагаемое становится меньше экспоненты, равной 2.718 . В программе может использоваться максимум один цикл и не могут использоваться
собственные подпрограммы, а так же встроенные подпрограммы для
вычисления степеней с целым показателем. Обозначения: fi – после довательность Фибоначчи (f1 = 1, f2 = 1, fn+1 = fn + fn−1, n! –факториал числа n (произведение всех целых чисел от 1 до n),
n!! –двойной факториал n (если n нечетно, то произведение всех нечетных
чисел от 1 до n; если n четно, то произведение четных чисел от 1 до
n): (f1·2^1)/1! + f(2·2^2)/2! + (f3·2^3)/3! + ...
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
program zxcursed;
var
  a, b, n, zero, f1, f2, f3, factorial, i: integer; //a= число, b= степень, n = число факториала, factorial = результат факториала e = slagaemoe, sum = sum slagaemix, zero = нулевая переменная
  e, sum, exp: double;
begin
  f1:= 1;
  f2:=1;
  a:=2;
  f3:= f2 + f1;
  n:=1;
  b:=1;
  exp:= 2.718;
  zero:= 0;
  factorial := 1;
  while e >= exp do 
  begin
    for i := 1 to n do
        factorial := factorial * i;
    e:= (f3 * a * b) / factorial;
    b:=b*2;
    f2:= f1;
    f1:= f3;
    f3:= f1 + f2;
    n:=n+1;
    sum:= e + zero;
  end;
  writeln(sum);
end.
Решение вышло с двумя циклами, но я без понятия как сделать с одним, учитывая что нам нужен цикл для суммы ряда и цикл для определения факториала. Основная проблема в том, что этот код выдает 0 почему-то, не удивлюсь если ошибка глупая, я новичок)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2024, 14:51
Ответы с готовыми решениями:

Напишите программу для нахождения суммы десяти первых элементов ряда
an =2*n+1/n^2!

Исправить программу нахождения суммы ряда
Вот условие: Хочу найти ошибку в программе, программу прикреплю ниже program lb3; const eps=0.0001; x=0.12; var...

Составить программу нахождения суммы ряда с точностью
Прошу, помогите! Необходимо составить программу нахождения суммы ряда с точностью e=0,0001 для Паскаля Буду очень благодарен ...

4
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
17.04.2024, 15:53
Лучший ответ Сообщение было отмечено vyacheslave как решение

Решение

Вам не нужно на каждой итерации цикла while вычислять факториал с нуля. Достаточно взять значение факториала предыдущей итерации и умножить на n.
2
0 / 0 / 0
Регистрация: 17.04.2024
Сообщений: 2
17.04.2024, 19:05  [ТС]
А почему программа 0 выдает?
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
17.04.2024, 21:30
Жмите F8 кучу раз чтобы шагать выполнение по 1 строчке, и смотрите значения переменных, наводя на них мышку.
1
Модератор
10373 / 5660 / 3398
Регистрация: 17.08.2012
Сообщений: 17,298
17.04.2024, 23:06
Sun Serega, программа у ТС - сплошная алгоритмическая ошибка.

vyacheslave, уточните задание. Вы его неверно поняли, скорее всего, из-за того, что не уделяли достаточного внимания изучению материала.

Имеется ввиду НЕ exp=2.718, а некоторое малое число ε (эпсилон, eps), являющееся, или принимаемое за, точность вычисления. Типичное значение ε находится в пределах 0.000000001 - 0.1.

Думаете, что я ошибаюсь? Судите сами. При exp=2.718 ничего вычислено не будет, поскольку первый член ряда

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

так как 2 < 2.718, цикл while не будет выполнен ни разу. Ну, и что это за бессмысленное задание получается?

Да, собственно, в Вашей программе цикл while из-за Ваших ошибок и так не будет выполнен ни разу, поскольку глобальная переменная "e" не инициализирована, и по умолчанию равна нулю, и условие вхождения в цикл e >= exp не выполнится. Иными словами, цикл while не выполнится ни разу, к счастью, со всеми алгоритмическими ошибками, который этот цикл содержит.

Насчёт выдачи программой 0. Так как переменная "sum" глобальная и ничем не инициализирована, то она тоже по умолчанию равна нулю, а поскольку цикл не выполнится ни разу, значение sum никак не изменится. Ваша программа честно 0 и выдаёт.

Ну да ладно. Будем считать, что задание выглядит так:

Имеется ряд

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

где F(n) - соответствующее число Фибоначчи.

Найти сумму членов ряда, бОльших некоторого числа eps.
Так как рекуррентные соотношения для F(n) аддитивное, а для 2n и n! мультипликативные, то разобъём слагаемое ряда на два сомножителя F(n) и 2n/n!, и будем находить рекуррентное соотношение для сомножителей. Обозначим 2n/n! как an.

Рекуррентное соотношение для F(n) известно. Для того, чтобы было удобнее вычислять F(n) в цикле, дополним ряд Фибоначчи членом F(0)=0.

Найдём рекуррентное соотношение для an=2n/n!.

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

a1 найдено, an выражено через an-1. Рекуррентное соотношение найдено.

Будем считать, что точность вычислений eps=0.000001. Член ряда обозначим как у Вас, то есть, e=F(n)2n/n!=F(n)an.

Пишем программу.

Для любого диалекта паскаля:
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
const
  eps = 0.000001;
var
  s, e, a, f, ff, fff: real;
  n: integer;
begin
  f := 1; //F(1)
  ff := 0; //F(0)
  n := 1; //начальный номер члена ряда
  a := 2; //a_1
  e := a; //e_1=F(1)*2^1/1!
  s := e; //начальное значение суммы равно e_1
  while e > eps do //цикл, пока текущий член ряда больше eps
    begin
      inc(n); //номер текущего члена ряда
      a := 2 * a / n; //текущее a_n
      fff := ff; //F(n-2)
      ff := f; //F(n-1)
      f := ff + fff; //F(n)
      e := f * a; //текущий член ряда
      s := s + e //добавляем текущий член ряда к сумме
    end;
  writeln('S = ', s:0:6);
  readln
end.
И ещё. Кроме того, что не уделяли достаточного внимания изучению материала, Вы даже не удосужились узнать, которому диалекту паскаля Вас обучают. Открою Вам страшную тайну: Вас обучают Turbo Pascal, в крайнем случае, Pascal ABC (древнему, без суффикса .NET), а в качестве бесплатного компилятора порекомендовали среду Pascal ABC.NET.

Не пишите больше в раздел Pascal ABC.NET, пишите в раздел того паскаля, которому Вас обучали. Например, в Turbo Pascal. Иначе можете получить программу, которую не поймёте не только Вы, но и Ваш преподаватель.

На всякий случай, для Pascal ABC.NET моя вышеприведённая программа может выглядеть, например, так:
Pascal
1
## $'S = {SeqWhile(|1, 1, 0, 2.0|, x -> |x[0] + 1, x[1] + x[2], x[1], x[3] * 2 / (x[0] + 1)|, x -> x[1] * x[3] > 1e-6).Select(x -> x[1] * x[3]).Sum:N6}'.Println
Эта одна строчка и есть вся программа. Целиком. Ничего добавлять не нужно, вставляете эту строчку в среду Pascal ABC.NET, и наслаждаетесь.

Если Вы понимаете, что в этой строчке написано, то пишите сюда. Если нет - то смотрите мои рекомендации выше.

Скорее всего, Sun Serega может написать для Pascal ABC.NET чуть покороче и с меньшими излишествами, я по сравнению с ним - так, подмастерье.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2024, 23:06
Помогаю со студенческими работами здесь

Создайте алгоритм и программу для нахождения суммы ряда
Не понимаю какие ошибки в программе Условие: Создайте алгоритм и программу для нахождения суммы ряда: S=x^1+x^3+x^5+x^7+...+x^1^3 ...

Составить алгоритм и программу нахождения суммы ряда с заданной точностью E
Помогите пожалуйста написать программу, не понимаю ничего;(

Составить алгоритм нахождения значения заданной функции, как суммы ряда
Составить алгоритм нахождения значения заданной функции, как суммы ряда: при заданном значении x вычислить сумму с точностью до h, т.е...

По заданной формуле члена ряда с номером k составить программу вычисления суммы всех членов ряда, не меньших заданного ε
Помогите с кодом пожалуйста. По заданной формуле \frac{1}{(2k-1)(2k+1)} члена ряда с номером k составить программу вычисления суммы всех...

Дана формула члена ряда с номером k, составить программу вычисления суммы всех членов ряда, не больших заданного числа
По заданной формуле ((k+1)^2+3)/k члена ряда с номером составить программу вычисления суммы всех членов ряда, не больших заданного...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru