Вычисление суммы ряда, подскажите, где в цикле ошибка - 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
соответствует уравнению ряда.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д