- •Решение задач о нахождении суммы ряда
- •Var s:Real; {значение суммы}
- •Использование формулы общего члена ряда
- •Var a,s:Real; I:Integer;
- •Использование рекуррентного соотношения
- •X,s,eps,a,d,e:Real;
- •Вложенные циклы
- •Var I,n:integer;
- •X,a,s:real;
- •Одновременное использование формулы общего члена и рекуррентного соотношения
- •Var I:integer;
- •Var n,k,y,s,I,j:integer;
- •Var n,k,s:LongInt;
- •Var a,a1:Integer; b:Boolean; answer:Char;
- •Var a,b,c,d:Integer;
Var I,n:integer;
X,a,s:real;
Begin
Write(’Введите число членов ряда ’);ReadLn(N);
Write(’Введите x ’);ReadLn(x);
a:=1;
S:=0;
For i:=1 To N Do
Begin
S:=S+a;
a:=-a*x*x/(2*i-1)/2/i;
End;
WriteLn(‘S=’,S)
End.
Одновременное использование формулы общего члена и рекуррентного соотношения
Оба рассмотренных
выше способа: использование формулы
общего члена и построение рекуррентного
соотношения не исчерпывают всего
многообразия числовых рядов. Может
возникать ситуация, когда формула общего
члена не является эффективно вычислимой
и при этом невозможно построить
рекуррентное соотношение. Часто такая
ситуация находит свое разрешение, если
каждый член ряда представить в виде
произведения ai=bi∙ci
и отдельно
рассмотреть последовательности из bi
и ci.
При этом одна из последовательностей
будет эффективно вычислима через общий
член ряда, а другая через рекуррентное
соотношение. Рассмотрим ряд
.
Формула общего члена
.
Представим ai=bi∙ci ,
bi=xi,
.
Последовательность
из bi
выражается рекуррентным соотношением
,
а последовательность из ci
эффективно вычислима через формулу
общего члена.
Пример 2.3.
Найти сумму
ряда
c
точностью ε. Определить сколько членов
ряда требовалось просуммировать для
достижения заданной точности.
Определим общий
вид слагаемого ряда:
,
,
,
.
Выведем рекуррентное соотношение для bi :
b1= –x2,
b2=x4,
b3=
–x8,
,
.
Получаем
.
Однако, полученное рекуррентное
соотношение так же породит вложенные
циклы, т.е. не является эффективно
вычислимым. Попробуем bi
так же представить в виде произведения.
Пусть bi=di∙ei ,
,
.
Рекуррентные соотношения для новых
последовательностей:
,
.
Var I:integer;
X,s,eps,a,d,e:Real;
Begin
Write(’Введите x ’);ReadLn(x);
Write(’Введите точность вычислений ’);ReadLn(eps);
S:=0; a:=1; i:=0; d:=1;
While abs(a)>eps do begin
S:=S+a; {Добавляем очередной член в сумму}
i:=i+1; {Учитываем сколько членов просуммировали}
d:=-d; {Вычисляем знак очередного члена}
if i=1 then e:=x*x {Вычисляем}
else e:=e*e; {очередной}
a:=d*e/(i+1); {член ряда}
end;
WriteLn(’Сумма ряда ’,S);
writeLn(’Для достижения точности ’,eps,’требовалоcь’);
WriteLn(’просуммировать ’,i,’ членов ряда.’);
End.
Если все три рассмотренных способа не позволят получить эффективное вычисление очередного члена ряда, тогда необходимо будет использовать механизм вложенных циклов.
Вложенные циклы
Для решения задач часто приходится использовать две и более циклические конструкции, одна из которых располагается внутри другой. Такие конструкции называются вложенными циклами. При этом сочетание циклов For, While, Repeat могут быть любыми. Цикл, который содержит в себе другой – называется внешним. Цикл, находящийся в теле первого – внутренним (вложенным). Правила организации как внешнего, так и внутреннего циклов такие же, как и для простого цикла каждого из этих видов. Использовать вложенные циклы рекомендуется только в тех случаях, когда более эффективной (приводящей к выполнению меньшего числа действий) программу сделать не удается. Например, пусть некоторую задачу можно решить, используя два вложенных цикла, каждый из которых делает n действий, общее число действий будет равно n2. Если, решая эту же задачу, удастся обойтись одним циклом с числом действий равным даже 2n, это все равно будут эффективнее использования вложенных циклов.
При вложении циклов для каждой итерации внешнего цикла внутренний цикл выполняется полностью. Например, для вложенных циклов For:
На первой итерации внешнего цикла внутренний цикл выполняется полностью от начального до конечного значения, при неизменном значении параметра внешнего цикла.
После этого значение параметра внешнего цикла изменяется (например, увеличивается на 1), и опять от начала до конца выполняется вложенный цикл.
И так повторяется до тех пор, пока значение параметра внешнего цикла не станет больше конечного значения, определяемого во внешнем цикле.
Пример 3.4. Даны натуральные числа n и k. Составить программу вычисления выражения 1k+2k+3k+…+nk.
