Вычисление суммы ряда - пример использования цикла while.
Требуется вычислить в цикле сумму вещественного ряда и сравнить её со значением, вычисляемым по контрольной формуле. Рассмотрим на примере знакопеременного ряда
В этом ряде у каждого следующего члена меняется знак. Известно, что погрешность частичной суммы этого ряда не превосходит модуль последнего члена суммы. То есть
Поэтому для вычисления суммы ряда можно составить следующую программу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream.h> // подключаем ввод/вывод - функции cin/cout #include <math.h> // подключаем exp и fabs #include <conio.h> // подключаем getch int main() { double x; // точка, в которой будет высчитываться значение ряда double eps = 0.001; // погрешность, с которой будет вычисляться значение ряда double an, sum; // текущий an и текущая сумма ряда double n; // текущий номер cin>>x;//вводим с клавиатуры x an = 1; sum = 1; n = 0; // значение ряда будем вычислять в цикле while while (fabs(an)>eps) { n = n + 1.0; an = -an * x / n; sum = sum + an; } cout << sum << " "; // выводим сумму cout << exp(-x); // выводим значение, подсчитанной по контрольной формуле exp(x) getch(); // ждём нажатия клавиши } |
В этой программе есть подключение заголовочных файлов (#include), объявление переменных вещественного типа (double), ввод и вывод с клавиатуры (cin/cout), getch. Но, пожалуй, самым основным является кусок кода:
13 14 15 16 17 18 19 20 21 22 |
an = 1; sum = 1; n = 0; // значение ряда будем вычислять в цикле while while (fabs(an)>eps) { n = n + 1.0; an = -an * x / n; sum = sum + an; } |
В первых трех строках этого куска кода переменным присваиваются значения. Затем начинается цикл while. Этот цикл идёт пока значение модуля члена ряда an больше погрешности эпсилон.
На каждом шаге цикла увеличивается на 1 значение n. Затем считается значение очередного члена ряда an. Стоит отметить, что используется следующее наблюдение Вычисленное значение an приплюсовывается к сумме.