Приближенное решение уравнений

Download Report

Transcript Приближенное решение уравнений

Приближенное решение
уравнений
Найти корень уравнения x3 – cosx = 0
приближенными методами
(графическим и численным методом
деления числового отрезка аргумента
пополам)
Графический метод
• Построение графиков функций может
использоваться для грубо приближенного
решения уравнений. Для уравнений вида
f(x) = 0, где f(x) - некоторая непрерывная
функция, корень (или корни) этого
уравнения являются точкой (или точками)
пересечения графика функции с осью х.
Графический метод
• График функции
пересекает ось X один
раз и, следовательно,
уравнение имеет один
корень. По графику
грубо приближенно
можно определить,
что x  0,8.
Численный метод половинного
деления
• Для решения уравнений с заданной точностью
применим численный метод решения
уравнений путем последовательных
приближений методом половинного деления:
• Пусть область определения на отрезке [a;b].
f(a) и f(b) имеют разные знаки. Делим отрезок
пополам c=(b-a)/2, находим f(c), продолжаем
работать с той половинкой, на которой
функция меняет знак. Точность вычислений Е.
Численный метод половинного
деления
• Из графика функции видно, что
корень находится на отрезке
[0;1]. Вводим значения концов
числового отрезка, а также
точность вычислений
(E=0,0001).
• Вычислить корень уравнения
методом половинного деления
(до тех пор, пока выполняется
условие (b-a)/2>E)
Задание:
• Найти корни уравнения x3
= sin(x)
Поиск корня уравнения делением отрезка пополам
var
a, b, x1, x2, x3, y1, y2, y3, x0: real;
flag: boolean;
function f (x: real): real; {функция, чей корень мы ищем}
begin
f:=x*x-2;
end;
begin
readln (a, b); {границы отрезка, на котором мы ищем корень}
if a>b
then
begin
x1:=b;
x2:=a;
end
else
begin
x1:=a;
x2:=b;
end;
Поиск корня уравнения делением отрезка пополам
flag:=true;
while flag do {пока корень не найден}
begin
x3:=(x2+x1)/2; {делим отрезок пополам}
y3:=f(x3);
y1:=f(x1);
y2:=f(x2);
if y1*y3<0 {если на границах отрезка значения функции имеют
разный знак}
then
x2:=x3 {то выбираем этот отрезок}
else
x1:=x3;
if abs(x1-x2)<1e-6 {точность нахождения корня с точностью до 6
знаков после запятой}
then
begin
x0:=x1;
flag:=false;
end;
end;
writeln (x0:8:6);
end.