Вычисление суммы бесконечного ряда




Цель работы.

Программирование итерационных процессов. Использование конструкций циклов языка Си.

Конструкции циклов в языке Си

Цикл с фиксированным числом операций for

Цикл, это конструкция структурного программирования, повторяющая определенные действия (итерации) несколько раз. При заданном количестве итераций в Си используется конструкция for. Синтаксис:

for(секция инициализации значения; секция проверки условия; секция коррекции)

Значение, инициализируемое в первой секции, называется счетчиком цикла. Повторяемые действия называются телом цикла. Если тело цикла состоит из двух и действий, тело цикла заключается в фигурные скобки.

Секция инициализации выполняется один раз, поэтому может содержать описание переменной. На каждом шаге значение счетчика подставляется в условное выражение второй секции, если выражение истинно, то управление передается в тело цикла, в противном случае, управление передается за цикл. После каждого выполнения тела цикла выполняется операция из секции коррекции.

Например, цикл

for(int i=0;i<3;i++)

printf(“%d \n”,i);

будет работать следующим образом – счетчик i примет значение 0. Условное выражение второй секции при таком значении счетчика истинно, на экран выведется значение переменной i, равное 0. Управление передается в секцию коррекции и переменная i увеличивается на единицу. При этом условие все еще истинно, на экран выводится значение 1. В ходе следующей итерации переменная-счетчик принимает значение 2. Условное выражение остается истинным. На экран выводится значение счетчика. После этой итерации переменная i становится равной 3. Условие при таком значении становится ложным, цикл заканчивает свою работу, управление передается следующей части программы.

Циклы while и do while

Существует множество задач, при выполнении которых циклические действия необходимо проводить до тех пор, пока истинно какое-либо условие. Для реализации таких алгоритмов возможно использовать циклы по условию while и do while.

Синтаксис: while (условное выражение)

{ тело цикла

}

Тело цикла while выполняется до тех пор, пока истинно условное выражение. Этот цикл называется циклом с предусловием. Цикл while может ни разу не выполниться (то есть, на входе в цикл условие ложно).

Синтаксис do {

тело цикла

} while (условное выражение)

Тело цикла do while выполняется пока условие истинно. Этот цикл называют циклом с постусловием. Такой цикл выполниться хотя бы один раз.

Операторы безусловной передачи управления continue и break

Оператор break досрочно завершает выполнение цикла. Управление передается оператору, следующему за циклом.

int n =15;

for(int i=0;i<n;i++)

{ int z = rand()%200;

if (z>100) break;}

Цикл должен выполняться 15 раз. В переменную z записывается случайное значение в интервале от 0 до 199 (функция rand(), случайные числа от 0 до RAND_MAX (32767)). Если получено случайное значение, большее 100, цикл заканчивает свою работу.

Оператор continue пропускает все последующие операторы тела цикла и передает управление на начало цикла.

int f = 1;

do

{

int z = rand()%100;

if (z>30) continue;

if (z<10) f = 0;

printf(“%d”,z);

} while(f);

Описанный выше цикл работает следующим образом – цикл будет работать, пока переменная f равна единице. Если полученное случайное значение будет больше 30, то вторая проверка условия и функция печати полученного значения будут пропущены. Если полученное значение будет меньше 10, то переменной f будет присвоено значение 0. Значение выведется на экран и цикл закончит свою работу.

В итоге, на экран будут выводиться числа, не больше тридцати и как только будет получено число, меньшее десяти, цикл закончит свою работу.

Вычисление суммы бесконечного ряда

Задание. Найти сумму ряда с заданной точностью. Точность и значение переменной х вводить с клавиатуры. Осуществить проверку ошибок ввода. Считать ошибочными значения х, которые приводят к расхождению ряда.

 

Найти сумму бесконечного ряда сзаданной точностью e.

Решение. Определим, что значит, найти сумму с заданной точностью. По виду общего элемента ряда (обозначим ) видно, что элементы ряда при определенных значениях x убывают при увеличении n. Таким образом, начиная с какого-то n, элементы ряда будут меньше заданной точности. А это, в свою очередь, говорит о том, что, начиная с этого элемента, приращение суммы никогда не станет больше заданной точности.

Таким образом, найти сумму бесконечного ряда с заданной точностью , значит просуммировать все значения, , пока не найдется такое n, при котором станет меньше заданного . Для того, чтобы составленный алгоритм был наиболее эффективным принято выражать (следующий) член ряда через (предыдущий). Для вывода итерационной формулы разделим на :

 

.

 

Из полученного отношения выразим

При программировании воспользуемся свойством сложения: если элемент ряда положительный, то прибавим его к общей сумме, иначе отнимем его от общей суммы.

Тогда алгоритм вычисления суммы бесконечного ряда можно записать следующим образом:

 

1. Задать точность , задать ;

2. ;

3. Задать значение x

4. Задать значение overflow = 0

5. Вычислить значение при ,

6. Вычислить значение .

7. ПОКА ()

7.1.ЕСЛИ -четное ТО

ИНАЧЕ

КОНЕЦ ЕСЛИ

7.2. ;

7.3. ЕСЛИ в переменной q возникает переполнение ТО overflow = 1,

перейти на 8.

7.3.

7.4.

КОНЕЦ ЦИКЛА

8. ЕСЛИ overflow ТО Печать «Ряд расходящийся»

ИНАЧЕ Печать количества итераций , значение суммы .

9. Конец

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: