Другие языки программирования и технологии

Найти сумму числового ряда с заданной точность епсилон (вводится пользователем): S = 1+1/22+ 1/32+ 1/42+ 1/52+ …

Паскаль. Очень желательно через цикл While
Для ряда Σ(n=1;∞)¹/n², сходящегося к π²/6, можно составить программу с циклом, прерывающимся тогда, когда очередное слагаемое не станет меньше заданного значения ε, а потом результат несколько скорректировать и посмотреть, что в итоге получается:
 uses crt; 
const sum = pi * pi / 6;
var eps, n, s, x: real;
begin
clrscr();
while true do
begin
write('ε = ');
readln(eps);
n := 0;
s := 0;
x := 1e303;
while x > eps do
begin
n := n + 1;
x := sqr(1 / n);
s := s + x
end;
s := s + 1 / n;
writeln(s, ', err=', s - sum);
end
end.
А ряд из задания вообще-то расходящийся...
Сумму же быстро сходящегося ряда
S = Σ(n=0;∞)¹/(3n)!
надо вычислять так:
 var eps, n, s, p: real; 
begin
while true do
begin
write('ε = ');
readln(eps);
n := 0;
s := 1;
p := 1;
while p > eps do
begin
n := n + 3;
p := p / (n*(n-1)*(n-2));
s := s + p;
writeln(round(n/3), ' ', s: 20: 16)
end;
writeln('S = ', s);
end
end.
Oleg
Oleg
66 572
Лучший ответ
Мда, задание то другое. Но то ладно. но смысл, вот смотри ввели
Введите значение точности epsilon:
0.1
1.04545454545455 0.0454545454545455
Сумма ряда с точностью 0.1 равна 1.045455
Это значит, что сумма ряда 1.04±0.1 а по факту:

1.04545454545455 0.0454545454545455
1.07670454545455 0.03125
1.10051406926407 0.0238095238095238
1.11974483849484 0.0192307692307692
1.1358738707529 0.0161290322580645
1.14976275964179 0.0138888888888889
1.16195788159301 0.0121951219512195
1.1728274468104 0.0108695652173913
1.18263136837903 0.00980392156862745
1.1915599398076 0.00892857142857143
1.19975666111908 0.00819672131147541
1.20733241869483 0.00757575757575758
1.21437467221596 0.00704225352112676
1.22095361958438 0.00657894736842105
1.22712645909055 0.00617283950617284
1.23294041257893 0.00581395348837209
1.23843491807343 0.00549450549450549
1.24364325140677 0.00520833333333333
1.24859374645627 0.00495049504950495
1.25331072758835 0.00471698113207547
1.25781523209285 0.0045045045045045
1.26212557692044 0.00431034482758621
1.2662578083254 0.00413223140495868
1.27022606229365 0.00396825396825397
1.27404285618678 0.00381679389312977
1.27771932677501 0.00367647058823529
1.28126542606579 0.00354609929078014
1.28469008360004 0.00342465753424658
1.28800134187819 0.0033112582781457

За 30 циклов уже дошли до 1.28 :)
ВРЁТ КОД ВЫШЕ так как сумма там накапливающаяся и за 10000 будет уже
1.866612

Для 100 000 000 выходит
Сумма ряда равна 2.787639

Вот такая кривая для n=10000000000000000000000000000000000
(+1 добавить к этой сумме)
ES
Erbol Siguatov
58 119
program SumOfSeries;

var
S, term, epsilon: Real;
n: Integer;

begin
{ Вводим значение точности epsilon }
writeln('Введите значение точности epsilon:');
readln(epsilon);

{ Инициализируем переменные }
S := 1;
term := 1;
n := 2;

{ Вычисляем сумму ряда с заданной точностью }
while term > epsilon do
begin
term := 1 / (n * n);
S := S + term;
n := n + 1;
end;

{ Выводим результат }
writeln('Сумма ряда с точностью ', epsilon, ' равна ', S:0:6);
readln;
end.
Имам Авраменко А вдруг задание не как ты его понял, а как оно тут написано? :)
Timur Burundukovskij А сможете ещё с таким числовым рядом?
Найти сумму числового ряда с заданной точность епсилон (вводится
пользователем): S = 1+1/3!+1/6!+1/9!+…

Похожие вопросы