![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
VAR
xp, e, x0, x:REAL;
Function f(x:real): real;
Begin
f:= x*x-2;
End;
Begin
writeln('введите начальное приближение х и точность');
Read(x0,e);
x:=x0;
REPEAT
xp:=x;
x:=f(x);
UNTIL ABS(x-xp)<e;
writeln('корень уравнения =', x);
End.
В данной программе используется подпрограмма функция f, которая вычисляет левую часть преобразованного уравнения:
.
Переменная xp используется в программе для сохранения предыдущего значения х.
Численное решение нелинейных уравнений
методом бисекции
Метод состоит в построении последовательности вложенных отрезков, на концах которых F(х) имеет разные знаки. Каждый последующий отрезок получают делением пополам предыдущего. Этот процесс построения последовательности вложенных отрезков позволяет найти нуль функции (F(х) = 0) с любой заданной точностью.
Опишем подробно один шаг итерации (рис. 28). Пусть на k-м шаге найден отрезок [аk, bk], на концах которого F(х) меняет знак. Заметим, что обязательно [аk, bk] Î [а, b].
1. Разделим теперь отрезок [аk, bk] пополам и выделим F(ck), где ck – середина [аk, bk].
2. Здесь возможны два случая:
§ первый, когда F(ck) = 0, тогда мы говорим, что корень найден;
§ второй, когда F(ck) ¹ 0, тогда сравниваем знак F(ck) с F(аk) и F(bk) и из двух половин [аk, ck] и [ck, bk] выбираем ту, на концах которой функция меняет свой знак. Таким образом, аk+1 = аk, bk+1 = ck, если F(ck)F(аk) < 0 (рис. 27), и аk+1 = ck, bk+1 = bk, если F(ck)F(bk) < 0.
При заданной точности e деление пополам продолжают до тех пор, пока длина отрезка не станет меньше 2e, тогда координата середины последнего найденного отрезка и есть значение корня требуемой точности.
Рисунок 28 – Геометрическая интерпретация решения уравнения методом бисекции
a) k–й шаг; b) k+1-й шаг.
Приведём программу, реализующую итерационный метод уточнения корня уравнения:
.
Дата публикования: 2014-11-26; Прочитано: 239 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!