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

Объяснение кода листинга программы

  1. Объявляются и инициализируются переменные:
    • e - считается равным 0.00001
    • x - введенное значение с клавиатуры
    • s, a, b, t - временные переменные для вычислений
    • n - устанавливается в начальное значение 1
  2. Программа запрашивает ввод значения x с клавиатуры и умножает его на 0.3.
  3. Вычисляются начальные значения для a и b:
    • a устанавливается в -0.25
    • b вычисляется как -x * x * x / 24
  4. Вычисляется значение суммы s равное a + b.
  5. Выполняется цикл repeat-until для расчета суммы ряда:
    • Увеличивается счетчик n на 1
    • Вычисляются новые значения a и b по формулам
    • Новое значение t устанавливается как a + b
    • Новое значение s прибавляется к сумме t
    • Цикл выполняется до тех пор, пока абсолютное значение t не будет меньше или равно e
  6. Выводится значение вычисленной суммы s с точностью до 5 знаков после запятой и количество terms (членов ряда) n.
  7. Конец программы. В цикле repeat-until выполняются формулы для вычисления суммы ряда. Ошибка в цикле не присутствует, но для правильного вычисления суммы ряда нужно убедиться, что формула для b соответствует уравнению ряда.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5