Прогамма вычисления суммы ряда, в чем может быть ошибка? - Pascal
Формулировка задачи:
создать проект для вычисления выражения S с заданной точностью ε.
ε = 10-5; x = 0.3
Ответ: S=0.008838
program bars;
const eps=0.000001;
var s,x:real;
i:integer;
begin
writeln('Введите число Х=');
readln(x);
writeln('Введите I=');
readln(i);
s:=0;
i:=1;
while s>eps do begin
s:=s+(power((-1),(i+1))*exp((2*i+1)*ln(x)))/(4*i*i-1);
i:=i+1;
end;
writeln(s:0:8);
end.Решение задачи: «Прогамма вычисления суммы ряда, в чем может быть ошибка?»
textual
Листинг программы
const eps = 1e-5;
var a, s, x: double;
n: integer;
begin
repeat
write('|x| <= 1; x = ');
readln(x)
until abs(x) <= 1;
a := x * x * x / 3;
x := x * x;
s := a;
n := 1;
while abs(a) >= eps do
begin
inc(n);
a := -x * a / (n + 0.5) * (n - 1.5);
s := s + a
end;
writeln('S = ', s:0:8);
readln
end.
Объяснение кода листинга программы
- Объявляются константа
epsсо значением1e-5и переменныеa,s,xс типом данныхdoubleиnс типом данныхinteger. - Начинается цикл
repeat- until, который предотвращает ввод пользователя значенияx, не превышающего по модулю 1. - После выполнения цикла
repeat-until, переменнойaприсваивается значениеx * x * x / 3,xумножается на само себя, иsприсваивается значениеa. - Переменной
nприсваивается значение1. - Начинается цикл
while, который выполняется до тех пор, пока значение по модулю переменнойaбольше или равноeps. - Внутри цикла выполняются следующие действия:
- Увеличивается значение переменной
nна 1. - Переменной
aприсваивается значение-x * a / (n + 0.5) * (n - 1.5). - К переменной
sдобавляется значениеa.
- Увеличивается значение переменной
- После завершения цикла
whileвыводится значение переменнойsс точностью до 8 знаков. - Происходит ожидание ввода пользователя.