1) Универсальный способ приведения уравнения F(x)=0 к виду x=f(x).
Уравнение F(x)=0 приводится к равносильному уравнению x = x – m F(x), таким образом, f(x) = x – m F(x).
Исходя из третьего условия теоремы: ($q) (" x Î[ a,b ]) [ |f’(x)|£q<1 ] следует, что должно выполняться неравенство: 0 < |1– mF’(x)| < 1.
Достаточно подобрать m так, чтобы выполнялось неравенство 0<mF’(x)<1, откуда следует и .
Тогда q можно принять .
Примечания:
· Если (" x Î[ a,b ]) f’(x)<0, то вместо уравнения F(x)=0 переходим к равносильному уравнению: – F(x)=0.
· Если при приведении уравнения F(x)=0 к итерационному виду x=f(x) получилось, что " x Î[ a,b ] | f’(x) |>1, то от функции вида y=f(x) переходят к функции x=g(y), обратной для f(x). При этом рассматривается уравнение y=g(y) или x=g(x), причем по свойству обратных функций .
2) Иногда удается преобразовать уравнение F(x)=0 к виду x=f(x) более простым способом, выразив x из уравнения.
Программа решения уравнения методом итераций:
program met_iter;
var x,y,e,q,a,p:real;
N:integer;
function f(x: real):real;
begin {записать, функцию в виде
f:=[математическое выражение], где f(x) удовлетворяет условиям сходимости итерационного процесса}
|
|
f:=x-1/11*(x*x*x-x+4)
end;
begin
write('Введите начальное приближение - x: ');readln(x);
write('Введите требуемую погрешность - e: ');readln(e);
write('Введите - q: '); readln(q);
a:=e*(1-q)/q;
N:=0;
repeat N:=N+1; y:=f(x);
p:=x-y; x:=y
until abs(p)<=a;
writeln('Приближенное значение корня - Х = ',x);
writeln('Число итераций - N = ',N);
readln
end.
Блок-схема метода итераций: | Результаты выполнения программы: | |||
| Введите начальное приближение - x: -2 Введите требуемую погрешность - e:.0001 Введите - q:.82 Приближенное значение корня - Х = -1.7963237043E+00 Число итераций - N = 7 |