Вычисление конечной суммы нахождению суммы некоторого количества слагаемых i

advertisement
Вычисление конечной суммы сводится к
нахождению суммы некоторого количества слагаемых
S = = f (1) + f (2) + …+ f (n),
где i – номер слагаемого, f (i) – слагаемое с номером i.
Вычисление суммы ряда организуется в виде
циклического процесса, когда при каждом
прохождении цикла номер слагаемого увеличивается
на единицу, а сумма – на величину i-го слагаемого,
равного f (i). Т. о., s = s + f (i), где s и s – суммы
первых i и i−1 слагаемых соответственно. Процесс
повторяется до тех пор, пока не будут
просуммированы все n слагаемых.
1. Какая величина будет параметром
цикла при вычислении конечной
суммы?
2. Чему равны начальное и конечное
значения параметра цикла?
3. Сколько раз необходимо повторить
цикл?
ПРИМЕР
Составить программу вычисления суммы
cos (2 i  1) x
S 
2 i 1
i 1
50
ФОРМУЛА СУММИРОВАНИЯ
Формула суммирования должна быть записана
в программе следующим образом:
S := S + f (i).
Это означает, что к предыдущему значению
суммы добавляется i-е слагаемое и
вычисленное значение присваивается той же
переменной S (старое значение S при этом
стирается). Если начальное значение S
приравнять нулю, то после первого выполнения
цикла значение S будет равно значению первого
слагаемого: S = 0 + f (1).
ПРОГРАММА РЕШЕНИЯ ЗАДАЧИ
PROGRAM Summa;
CONST n : integer = 50;
VAR x, S : real;
i : integer;
BEGIN
readln (x);
S := 0.;
FOR i := 1 TO n DO
S := S + (cos ((2 * i + 1) * x)) / (2 * i + 1);
writeln (‘S = ‘, S);
END.
ВОПРОС
Что
нерационально
в этой
программе?
ОТВЕТ
ОТВЕТ
Дважды вычисляется величина 2 * i + 1, и
поэтому программа тратит лишнее время. Для
исправления этой ошибки следует ввести
дополнительную переменную, например, k, и
присвоить этой переменной значение 2i + 1.
КАК ИСПРАВИТЬ ПРОГРАММУ?
ИСПРАВЛЕННАЯ ПРОГРАММА
PROGRAM Summa;
CONST n : integer = 50;
VAR x, S : real;
i, k : integer;
BEGIN
readln (x);
S := 0.;
FOR i := 1 TO n DO
BEGIN
k := 2 * i + 1;
S := S + cos (k * x) / k;
END;
writeln (‘S = ‘, S);
END.
ПРИМЕЧАНИЯ
1. Оператор присвоения начального значения
суммы S := 0. расположен до начала цикла, т. к.
это присваивание необходимо сделать только
один раз, до начала вычисления суммы.
2. Поскольку результат вычислений – одно
число (окончательное значение суммы,
вычисленное в цикле), то оператор вывода
стоит после цикла и выполняется один раз.
ПРАКТИЧЕСКАЯ РАБОТА
Составить программу вычисления суммы
a
S      2 (k 1)
k 0  x 
20
КОНТРОЛЬНЫЕ ВОПРОСЫ
1) По какой формуле вычисляется конечная сумма?
2) Чему равно начальное значение суммы?
3) Что прибавляется к сумме при очередном прохождении
цикла?
4) Попробуйте догадаться, каким образом следует вычислять
конечное произведение вида
n
P=
 f (i)
i 1
= f (1) · f (2) · … · f (n) ?
ДОМАШНЕЕ ЗАДАНИЕ
Составить программу
вычисления
произведения
n
cos (2 i  1) x
P =
.
i 1 sin ( 2 i  1) x
Числa n и x вводится с
клавиатуры.
Download