Метод итераций
Метод простых итераций для уравнения f (x) = 0 заключается в следующем: 1) Исходное уравнение преобразуют к виду, удобному для итераций: x = φ(x); (2.2) 2) Выбирают начальное приближение x 0 и вычисляют последующие приближения по итерационной формуле xk = φ(xk -1), k = 1, 2, … (2.3) Если существует предел итерационной последовательности , то он является корнем уравнения f (x) = 0, то есть f (ξ;) = 0.
Рис. 2.4. Сходящийся процесс итераций
На рис. 2.4 показан процесс получения очередного приближения по методу итераций. Последовательность приближений сходится к корню ξ. Теоретические основы для применения метода итераций дает следующая теорема [7] Теорема 2.3. Пусть выполняются условия: 1) корень уравнения x = φ(x) принадлежит отрезку [ a, b ]; 2) все значения функции φ(x) принадлежат отрезку [ a, b ], т.е. a ≤; φ(x) ≤ b; 3) существует такое положительное число q < 1, что производная во всех точках отрезка [ a, b ] удовлетворяет неравенству . Тогда: 1. Итерационная последовательность сходится при любом . 2. Предел итерационной последовательности является корнем уравнения , т.е. если , то ξ = φ(ξ). 3. Справедливо неравенство, характеризующее скорость сходимости итерационной последовательности . (2.4) Как мы видим, эта теорема ставит довольно жесткие условия, которые необходимо проверить перед применением метода итераций. Если производная функции φ(x) по модулю больше единицы, то процесс итераций расходится (рис.2.5). Рис.2.5. Расходящийся процесс итераций
Пример 2.5. Найти корень уравнения sin5 x + x 2 – 1 = 0 с точностью до Решение. Преобразуем уравнение f (x) = 0 к виду x = φ(x):
sin5 x + x 2 – 1 = 0, => sin5 x = 1 – x 2, => x = arcsin(1 – x 2)/5 φ(x) = arcsin(1 – x 2)/5
Проверим условия теоремы. Так как функция φ(x) монотонна на отрезке [0,2; 0,3], то нетрудно показать, что верны следующие неравенства:
Все условия теоремы выполнены, мы можем применить метод итераций.Выполним вычисления в программе Excel: 1) Вводим в ячейки обозначения и формулы, как показано в табл.2.6; 2) Ячейку B 3 с помощью маркера заполнения копируем вниз до ячейки B 6; аналогично копируем ячейку C 2до ячейки C6, ячейку D 2 —до ячейки D 6; Выделим диапазон A2:A3 и с помощью маркера заполнения копируем вниз, до ячейки A6. Таблица 2.6
Результаты расчетов приведены в табл. 2.7. Таблица 2.7
В качестве условия сходимости итерационных методов часто используется неравенство | xk – xk– 1| ≤ ε. (2.5) По этому критерию приближенным значением с точностью ε = 0,001 является x 5 = 0,244707 ≈ 0,245. Приведем текст программы-функции iter для решения уравнения методом итераций в программе Mathcad и результат вычисления корня: Параметры программы iter (φ, x 0, ε): φ — имя функции в правой части уравнения x = φ(x); x 0 — начальное приближение; ε — точность приближения соответствующая формуле (2.4.3). Результат расчета 0,244627588 ≈ 0,2446 с начальным значением 0,2 и точностью 0,0001 содержит больше верных знаков, чем корень, полученный в программе Excel с меньшей точностью 0,001. Приведем текст программы метода итераций на C ++:
#include <iostream.h> #include <math.h> double fi(double x); typedef double (*PF)(double); double Iter(PF fi, double x0, double eps, int Kmax); int main(){ double x, x0, eps; PF pf; int Kmax; cout << "\n x0 = "; cin >> x0; cout << "\n eps = "; cin >> eps; cout << "\n Kmax = "; cin >> Kmax; pf = fi; x = Iter(pf, x0, eps,Kmax); cout << "\n x = " << x; cout << "\n Press any key & Enter "; cin >> x; return 0; } double fi(double x){ double r; r = asin(1-x*x)/5; return r; } double Iter(PF fi, double x0, double eps, int Kmax){ double x1, xerr;int k; k = 0; do{ k = k + 1; if(k > Kmax) break; x1 = fi(x0); xerr = fabs(x1-x0); x0 = x1; }while (xerr > eps); return x1; }
Результат расчета приближенного значения корня для уравнения из примера 2.3:
x0 = 0.5 eps = 0.000001 Kmax = 1000 x = 0.24462 Press any key & Enter
|