Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Итерационный цикл организуется




когда число итераций определяется в процессе вычислений, в зависимости от получаемых результатов; например, вычисления выполняются по одинаковым формулам с использованием при очередной итерации в качестве исходных данных результатов предыдущей итерации:

  x, y, z на очередной итерации(очередные значения переменных!!!) à пересчитываются в зависимости от значенийэтих переменных x, y, z на предыдущем этапе;

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

 

Итерационные циклы тесно связаны с итерационными методами решения уравнений и систем.

Примеры алгоритмов с итерационными циклами:

• вычисление корня нелинейного уравнения (методом итераций, методом касательных (Ньютона), методом деления отрезка пополам и т.д.),

•  вычисление суммы бесконечного числа слагаемых (функции путем разложения ее в бесконечный ряд (ряд Тейлора), интеграла и т.д.)

 

Если изобразить общую схему итерационного цикла, то в нем обязательно будут переменные, сохраняющие результат предыдущего (х1) и еще более ранних (х2,...) шагов, а также переменная х – результат текущего шага:

for (х1=..., х2=...; условие(х1,х2); х2=х1,х1=х)

{...х = f (x 1, x 2);...}

 

Например, вычислить у = √х  как предельное значение последовательности, определяемой рекуррентной формулой: yk=(yk-1 + x/yk-1)/2  для k = 1, 2,.…     

нач
вещ
Х, Ynew, Yold;
вещ epsilon;
ввод X, epsilon;        //
ввод значения переменной х и точности epsilon
Yold = X;
Ynew = (Yold + X/ Yold)/2;
пока  (abs (Ynew – Yold) >= epsilon)
  цикл
                                     Yold= Ynew;
                                          Ynew= (Yold + X/ Yold)/2;
кцикл
вывод Ynew;

кон

 

-----------------------------------------------------------------------------------------

 

Рассмотрим вычисление числа π.

 

π/4 =1-1/3+1/5-1/7+1/9-….                                

π = 4 * π/4;                                                            

 

Найдем выражение для пересчета значения последующего слагаемого через предыдущее:

                 
 
 
 

 

 


#define _USE_MATH_DEFINES

#include <math.h>  

#include <iostream> //включение заголовков для ввода/вывода в поток в стиле С++

#include <iomanip>

using namespace std; //подключение стандартного пространства имен              

 

int main()

{

     int k = 1;

     double x = 1.0, sum = x, eps = 0.000001;

         

     while (abs(x) > eps)

     {        

           x = -x *(2 * k - 1)/(2 * k + 1);

           sum += x;

           k++;

     }

     cout << setiosflags(ios::fixed) << setprecision(7);

     cout << "summa:" << setw(11) << sum << endl;

     cout << endl;

     cout << "PI:" << setw(11) << sum * 4 << endl;

     system("pause");         

     return 0;

  }

 

Директива #include <iomanip> подключает заголовочный файл с объявлениями манипуляторов, определяющих форматирование вывода:

  • setw(n) – значение   n задает минимальную ширину поля вывода;
  • setprecision(m) – значение   m задает точность представления вещественных чисел (максимальное количество цифр дробной части при вводе и выводе);
  • setiosflags(ios:: fixed) – устанавливает форматный флаг потока ввода-вывода для представления вещественных чисел в формате с фиксированной точкой;
  • setiosflags(ios:: scientific) – устанавливает форматный флаг потока ввода-вывода для представления вещественных чисел в формате с мантиссой и порядком.

Результат:
summa: 0.7853987

 

PI: 3.1415947

Напомним, что точность  eps = 0.00000 1.

-----------------------------------------------------------------------------------------





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 166 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

4284 - | 4170 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.006 с.