Метод простых итераций

advertisement
Метод простых итераций
Предположим, что уравнение f(x) = 0 при помощи некоторых тождественных
преобразований приведено к виду x = φ(x).
Заметим, что такое преобразование можно вести разными способами, и при этом будут
получаться разные функции φ(x) в правой части уравнения. Уравнение f(x) = 0
эквивалентно уравнению x =x + λ(x) f(x) при любой функции λ(x) ≠ 0. Таким образом,
можно взять φ(x) = x + λ(x) f(x) и при этом выбрать функцию (или постоянную) λ(x) так,
чтобы функция φ(x) удовлетворяла тем свойствам, которые понадобятся нам для
обеспечения нахождения корня уравнения.
Для нахождения корня уравнения x = φ(x) выберем какое-либо начальное приближение
x0 (расположенное, по возможности, близко к корню x*). Далее будем вычислять
последующие приближения
x1, x2,… ,xi, xi+1,…
по формулам
x1 = φ(x0); x2 = φ(x1);…; xi = φ(xi-1); xi+1 = φ(xi); …
то есть используя каждое вычисленное приближение к корню в качестве аргумента
функции φ(x) в очередном вычислении. Такие вычисления по одной и той же формуле
xi+1 = φ(xi), когда полученное на предыдущем шаге значение используется на
последующем шаге, называются итерациями. Итерациями называют часто и сами
значения xi, полученные в этом процессе (то есть, в нашем случае, последовательные
приближения к корню).
Для практической реализации метода важны утверждения следующей теоремы.
Теорема. Если функция φ(x) имеет производную в некоторой окрестности E корня
x* уравнения x = φ(x), причём |φ'(x)| ≤ γ <1 при x є E, то последовательность итераций
xi+1 = φ(xi), полученных при i = 1, 2, 3…, начиная с x0 є E, сходится к корню x*.
При этом скорость сходимости задаётся неравенствами
|xi – x*| ≤ γi|x0 – x*|, i = 1, 2, 3…,
|xi+1 – xi | ≤ 4δ γi,
где 2δ – длина окрестности E, а точность i-го приближения – оценкой
|xi – x*| ≤ 2δ γi.
Таким образом, для достижения необходимой погрешности нужно использовать
последнее неравенство этой теоремы. Если выполнено 2δ γ i < ε, то и |xi – x*|< ε.
Константа γ может быть получена путём нахождения максимума модуля производной
функции φ(x) на начальном интервале E.
Задание № 5
отлично
Реализуйте программу поиска корней функционального уравнения f(x) = 0 методом
простых итераций. Программа должна вести расчёт для заданной последовательности
погрешностей – εi таких, что найденный приблизительно корень xi отличается от точного
корня уравнения на величину меньшую εi.
Результаты всех вычислений выводить на монитор в следующем формате
ε 1 = 0.1;
корень = 0.4654; число итераций – 16
ε 2 = 0.01;
корень = 0.4784; число итераций – 20
ε 3 = 0.001; корень = 0.4760; число итераций – 40
ε 4 = 0.0001; корень = 0.4762; число итераций – 54
…. и т.п.
хорошо
Реализуйте программу поиска корней функционального уравнения f(x) = 0 методом
простых итераций. В программе задается последовательность числа итераций – 8; 16; 32;
64; 128.
Результаты всех вычислений выводить на монитор в следующем формате
i=8; корень = 0.4654
i=16; корень = 0.4784
i=32; корень = 0.4760
i= 64; корень = 0.4762
…. и т.п.
ЗАМЕЧАНИЕ
Обычно, если определена область [a;b], содержащая единственный корень, то начальное
приближение x0 обычно выбирают в соответствии со следующей формулой
x0 = (a+b)/2
вариант 1
3,8  3 sin( x )
 x  0 , единственный корень уравнения находится в области [2; 3],
0,35
с точностью ε = 5e–2; 2e–3; 1e–4;5e–5; 2e–6
вариант 2
1
 x  0 , единственный корень уравнения находится в области [0; 1]
3  sin( 3,6 x)
с точностью ε = 1e–1; 1e–2; 1e–3; 1e–4; 1e–5;
вариант 3
cos( 1  0,3x 3 )  x  0 , единственный корень уравнения находится в области [0; 1]
с точностью ε = 2e–2; 8e–4; 8e–5; 1e–5; 1e–6;
вариант 4
sin( 1  0,4 x 2 )  x  0 , единственный корень уравнения находится в области [0; 1]
с точностью ε = 8e–2; 1e–2; 1,2e–3; 1,5e–4; 1,8e–5;
вариант 5
1
2  sin( )  x  0 , единственный корень уравнения находится в области [1,2; 2]
x
с точностью ε = 6e–2; 5e–3; 4e–4; 3e–5; 2e–6;
вариант 6
1  sin( x)  ln( 1  x)  x  0 , единственный корень уравнения находится в области [0; 1,5]
с точностью ε = 1e–1; 0,8e–2; 0,7e–3; 0,6e–4; 0,5e–5;
Метод Ньютона (метод касательных)
Необходимо найти корень уравнения
f(x) = 0.
Формула итераций имеет следующий вид
f ( xi )
xi 1  xi 
,
f ( xi )
где f ( xi ) – производная функции f(x) в точке xi .
Сколько нужно выполнить итераций, чтобы нас могла устроить точность приближение
xi+1 к значению корня x* (то есть |xi+1 - x*| <  )?
Обычно считают, что требуемая точность достигнута, если после вычисления xi+1 при
выполнении очередной итерации соблюдается условие
|xi+1 – xi |<  .
В случае, когда значение производной функции f(x) в точке xi неизвестно, можно
применить формулы для численного вычисления производной.
Пример :
Решим методом Ньютона уравнение x 3  2 x 2  3x  5  0 , взяв в качестве начального
приближения x0  2 и задав точность   0,000001 . Поскольку f ( x)  3x 2  4 x  3 , то
итерационная формула метода Ньютона будет такой:
xi  2 xi  3 xi  5
3 xi3  4 xi  3
3
xi 1  xi 
Применяя эту формулу, последовательно находим:
x1  1,857143; x2  1,843842; x3  1,843734; x3  1,843734;
так что корень уравнения x  1,843734 с точностью  . Как мы видим, значение корня с
нужной нам точностью было получено уже на третьем шаге. (Четвёртый шаг понадобился
для того, чтобы можно было убедиться, что с нужной нам точностью значение перестало
изменяться.)
Задание № 6
Реализуйте программу поиска корней функционального уравнения f(x) = 0 методом
Ньютона. В программу с клавиатуры должна вводиться последовательность
погрешностей – εi такая, что найденный приблизительно корень xi отличается от точного
корня уравнения на величину меньшую ε.
Результаты всех вычислений выводить на монитор в следующем формате
для ε 1 – корень = 0.4654
для ε 2 – корень = 0.4784
для ε 3 – корень = 0.4760
для ε 4 – корень = 0.4762
…. и т.п.
Для оценки ОТЛИЧНО необходимо самим придумать модификацию метода Ньютона для
случая, когда значения производной нам неизвестны. Модификация программы должна
быть легко программируемой и иметь меньшую трудоёмкость, чем метод простых
итераций
вариант 1
0,1x2– x ln(x) = 0, единственный корень уравнения находится в области [1; 2],
с точностью ε = 1e–1; 1e–2; 1e–3; 1e–4; 1e–5;
вариант 2
x – cos(x) = 0, единственный корень уравнения находится в области [0; 1]
с точностью ε = 6e–2; 5e–3; 4e–4; 3e–5; 2e–6;
вариант 3
e x  ln x  10 x  0 , единственный корень уравнения находится в области [3; 4]
с точностью ε = 6e–2; 5e–3; 4e–4; 3e–5; 2e–6;
вариант 4
3x  14  e x  e x  0 , единственный корень уравнения находится в области [1; 3]
с точностью ε = 1e–1; 0,8e–2; 0,7e–3; 0,6e–4; 0,5e–5;
вариант 5
2 ln 2 x  6 ln x  5  0 , единственный корень уравнения находится в области [1; 3]
с точностью ε = 1e–2; 1e–3; 1e–4;1e–5; 1e–6;
вариант 6
2x sin x  cos x  0 , единственный корень уравнения находится в области [0,4; 1]
с точностью ε = 2e–2; 5e–3; 2e–4; 5e–5; 2e–6.
Download