ВУЗ:
Составители:
Рубрика:
106
Решение. Для начала запишем заданную формулу при различных значениях n.
Для n=3 получим y=cos(1+cos(2+cos(3))).
Для n=5 получим y=cos(1+cos(2+cos(3+cos(4+cos(5))))).
Прежде всего заметим, что в заданном выражении используются натуральные
числа. Обозначим их переменной i, которая изменяется от 1 до n, или, что одно и
то же, от n до 1. Чтобы вычислить это выражение без компьютера, «вручную»,
нужно начать вычисления с самых вложенных
скобок:
1. y
1
=cos(5)
2. y
2
=cos(4+cos(5)) или с учетом первого шага cos(4+y
1
)
3. y
3
=cos(3+y
2
)
4. y
4
=cos(2+y
3
)
5. y
5
=cos(1+y
4
)
Если учесть обозначение i и переписать первый шаг как y
1
=cos(5+y
0
), где y
0
=0,
то в теле цикла будет повторяться оператор y=cos(i+y). Количество повторений
известно заранее и равно n, следовательно, цикл - арифметический. Здесь в
качестве счетчика можно использовать переменную i.
{ фрагмент 15 }
y:=0;
for i:=n downto 1 do y:=cos(i+y).
Пример 10.15. Вычислить для произвольного натурального n
y = n + n -1+...+ 2 + 1
.
Решение. Этот пример очень похож на предыдущий, однако здесь вместо
функции cos(x) используется квадратный корень и натуральные числа под корнями
уменьшаются. Поскольку структура задач одинакова, они обе должны иметь
одинаковые решения. Отсюда получаем фрагмент программы.
{ фрагмент 16 }
y:=0;
for i:=1 to n do y:=sqrt(i+y).
Пример 10.16. Вычислить выражение для n умножений. Например, для n=5
y=(((((x+a)x+a)x+a)x+a)x+a)x+a.
Решение. Этот пример также похож на предыдущий, где используется функция
умножения, а вместо отрезка натурального ряда - константа а. Однако для
начинающих обнаружить это сходство довольно трудно, поэтому установим
оператор, повторяющийся в теле цикла, рассмотрев любые два соседних значения
y, вычисленные «вручную».
y
1
=x+a.
y
2
=(x+a)x+a или y
2
=y
1
x+a.
По индукции делаем вывод о том, что в теле цикла для получения нового
значения нужно старое умножить на х и прибавить а. Если заметить, что y
0
=1,
y
1
=y
0
x+a, то тело цикла будет выполняться n+1 раз.
{ фрагмент 17 }
y:=1;
for i:=1 to n+1 do y:=y*x+a.
Другое решение можно получить, если заметить, что y
0
=x, y
1
=(y
0
+a)x. В этом
случае тело цикла выполняется n раз и после завершения цикла нужно прибавить а.
106
Решение. Для начала запишем заданную формулу при различных значениях n.
Для n=3 получим y=cos(1+cos(2+cos(3))).
Для n=5 получим y=cos(1+cos(2+cos(3+cos(4+cos(5))))).
Прежде всего заметим, что в заданном выражении используются натуральные
числа. Обозначим их переменной i, которая изменяется от 1 до n, или, что одно и
то же, от n до 1. Чтобы вычислить это выражение без компьютера, «вручную»,
нужно начать вычисления с самых вложенных скобок:
1. y1=cos(5)
2. y2=cos(4+cos(5)) или с учетом первого шага cos(4+y1)
3. y3=cos(3+y2)
4. y4=cos(2+y3)
5. y5=cos(1+y4)
Если учесть обозначение i и переписать первый шаг как y1=cos(5+y0), где y0=0,
то в теле цикла будет повторяться оператор y=cos(i+y). Количество повторений
известно заранее и равно n, следовательно, цикл - арифметический. Здесь в
качестве счетчика можно использовать переменную i.
{ фрагмент 15 }
y:=0;
for i:=n downto 1 do y:=cos(i+y).
Пример 10.15. Вычислить для произвольного натурального n
y = n + n -1+...+ 2 + 1 .
Решение. Этот пример очень похож на предыдущий, однако здесь вместо
функции cos(x) используется квадратный корень и натуральные числа под корнями
уменьшаются. Поскольку структура задач одинакова, они обе должны иметь
одинаковые решения. Отсюда получаем фрагмент программы.
{ фрагмент 16 }
y:=0;
for i:=1 to n do y:=sqrt(i+y).
Пример 10.16. Вычислить выражение для n умножений. Например, для n=5
y=(((((x+a)x+a)x+a)x+a)x+a)x+a.
Решение. Этот пример также похож на предыдущий, где используется функция
умножения, а вместо отрезка натурального ряда - константа а. Однако для
начинающих обнаружить это сходство довольно трудно, поэтому установим
оператор, повторяющийся в теле цикла, рассмотрев любые два соседних значения
y, вычисленные «вручную».
y1=x+a.
y2=(x+a)x+a или y2=y1x+a.
По индукции делаем вывод о том, что в теле цикла для получения нового
значения нужно старое умножить на х и прибавить а. Если заметить, что y0=1,
y1=y0x+a, то тело цикла будет выполняться n+1 раз.
{ фрагмент 17 }
y:=1;
for i:=1 to n+1 do y:=y*x+a.
Другое решение можно получить, если заметить, что y0=x, y1=(y0+a)x. В этом
случае тело цикла выполняется n раз и после завершения цикла нужно прибавить а.
Страницы
- « первая
- ‹ предыдущая
- …
- 102
- 103
- 104
- 105
- 106
- …
- следующая ›
- последняя »
