Вычисление суммы ряда, подскажите, где в цикле ошибка - Pascal
Формулировка задачи:
Помогите пожалуйста найти ошибку, не знаю почему, но при запуске не считает сумму
Вычислить сумму элементов бесконечного ряда с заданной точностью
e = 0,00001. Условием окончания вычислений считать Sn <= e.
Значение x задать самостоятельно.
∞
∑ ((-1)^n )*(6+(0,3x)^(3+n))/(2n+2)!
n=1
Program rediska; var c,n:integer; s,a,x,s1,delta,e,h,y:real; f:longint; begin write('Введите х ='); readln(x); //начальные значения s:=0; n:=0; y:=0.3*x; a:=exp(3*ln(y)); f:=1*2; e:=0.00001; repeat s1:=s; //в s1 хранится значение s для сравнения n:=n+1; //cчетчик слагаемых c:=-c; //значение (-1) для первого n-го слагаемого a:=a*y; //вычисление 0,3*х в степени (3+n) n-го слагаемого h:=a+6; f:=f*(2*n+1)*(2*n+2); //факториала n-го слагаемого s:=s+c*h/f; //добавление n-го слагаемого к общей сумме delta:=abs(s-s1); //проверка условия окончания цикла until delta<=e; //вывод результата на экран writeln('при x=',x,' сумма ', n, 'элементов=',s); end.
Решение задачи: «Вычисление суммы ряда, подскажите, где в цикле ошибка»
textual
Листинг программы
const e = 0.00001; var x, s, a, b, t: double; n: integer; begin write('x = '); readln(x); x := 0.3 * x; n := 1; a := -0.25; b := -x * x * x / 24; s := a + b; repeat inc(n); a := -a / 4 / (n + 0.5) / (n + 1); b := -x * b / 4 / (n + 0.5) / (n + 1); t := a + b; s := s + t until abs(t) <= e; write('Sum = ', s:0:5, ', terms: ', n); readln end.
Объяснение кода листинга программы
- Объявляются и инициализируются переменные:
e
- считается равным0.00001
x
- введенное значение с клавиатурыs
,a
,b
,t
- временные переменные для вычисленийn
- устанавливается в начальное значение1
- Программа запрашивает ввод значения
x
с клавиатуры и умножает его на 0.3. - Вычисляются начальные значения для
a
иb
:a
устанавливается в-0.25
b
вычисляется как-x * x * x / 24
- Вычисляется значение суммы
s
равноеa + b
. - Выполняется цикл
repeat-until
для расчета суммы ряда:- Увеличивается счетчик
n
на 1 - Вычисляются новые значения
a
иb
по формулам - Новое значение
t
устанавливается какa + b
- Новое значение
s
прибавляется к суммеt
- Цикл выполняется до тех пор, пока абсолютное значение
t
не будет меньше или равноe
- Увеличивается счетчик
- Выводится значение вычисленной суммы
s
с точностью до 5 знаков после запятой и количествоterms
(членов ряда)n
. - Конец программы.
В цикле
repeat-until
выполняются формулы для вычисления суммы ряда. Ошибка в цикле не присутствует, но для правильного вычисления суммы ряда нужно убедиться, что формула дляb
соответствует уравнению ряда.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д