Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Проверте пожалуйста задачу в паскале!!!

Автор: smile51 16.11.2009, 0:32

Проверьте пожалуйста задачу которую я решил в паскале, так как я изучаю паскаль очень мало времени и самостоятельно!!!
Задача: Составьте программу для вычисления суммы ряда S=1/2²+3/4²+5/6²+7/8²+9/10²+... с точностью до члена ряда, не превышающего по абсолютной величине 0.001.

Решение:
Var s,h,d:real;
i:integer;
begin
d:=0.001;
s:=0;
i:=0;
repeat
i:=i+1;
h:=((2*i)-)1/sqr(2*i);
s:=s+h;
until h<d;
writeln('Сумма ряда: ',s:10:10);
writeln('Количество членов ряда: ',i);
readln;
end.

Ответ выдаваемый программой:
Сумма ряда: 2.1272298361
Количество членов ряда: 91

P.S. Знаю пока тока один циклический оператор, так что если можно будет её решить короче и быстрее прошу написать как ещё можно её решить, если вам будет не трудно!!

Заранее огромное спасибо!!!

Автор: Евгений М. 16.11.2009, 2:08

Цитата(smile51 @ 16.11.2009, 5:32) *

h:=((2*i)-)1/sqr(2*i);


h:=(2*i-1)/sqr(2*i)

Хочу учесть, когда говорится "абсолютная величина" - это имеется ввиду модуль числа. Здесь это конечно не нужно, но если в членах ряда будут отрицательные числа, они и так будут меньше 0.001 и цикл прерывается в вовремя.

Автор: Виктор 18.11.2009, 6:52

Цитата(Евгений М. @ 16.11.2009, 2:08) *

h:=(2*i-1)/sqr(2*i)

Хочу учесть, когда говорится "абсолютная величина" - это имеется ввиду модуль числа. Здесь это конечно не нужно, но если в членах ряда будут отрицательные числа, они и так будут меньше 0.001 и цикл прерывается в вовремя.

объясните,пожалуйста откуда взялся минус?

Автор: Julia 18.11.2009, 9:27

Какой минус?
Формула из вашего решения, только правильно расставлены скобки.

Автор: Виктор 18.11.2009, 10:17

это решение не моё, h:=(2*i-1) вот этот минус?

Автор: граф Монте-Кристо 18.11.2009, 11:06

В числителе стоит арифметическая прогрессия с первым членом,равным 1 и разностью, равной 2. Следовательно, i-тый член последовательности будет таким:
a[i]=a[1]+(i-1)*d=1+(i-1)*2=2*i-1,
что и стоит в программе.

Автор: Виктор 20.11.2009, 9:52

а если сделать шаг не 1 а 2 то и не надо будет умножать i на 2

Автор: smile51 22.11.2009, 16:39

Ты имеешь ввиду сделать i:=i+2? тогда h:=i-1/sqr(i) и ответ выдаваемый программой будет:
Сумма ряда: 2.5356700972
Количество членов ряда: 182

ТАК КАКОЙ ЖЕ ПРАВЕЛЬНЫЙ????

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)