1.
Приближенное решение нелинейных
уравнений
Пусть
дано уравнение с одним неизвестным
,
(1.1)
где f(x) - заданная алгебраическая или трансцендентная
функция.
Функция
называется алгебраической, если для получения её значения нужно выполнить
арифметические операции и возведение в степень с рациональным показателем.
Примеры трансцендентных функций - показательная,
логарифмическая, тригонометрические, обратные тригонометрические.
Решить
уравнение - значит найти все его корни, то есть те значения х,
которые обращают уравнение в тождество, или доказать, что корней нет.
В
общем случае не существует формул, по которым определяются точные значения корней
уравнения (1.1). Для отыскания корней используют приближенные методы, при
этом корни находятся с некоторой заданной точностью ε.
Это означает, что если x - точное значение корня уравнения, а x’-
его приближенное значение с точностью ε, то |x - x’|
≤ ε. Если корень найден с точностью ε, то принято писать x = x ± ε.
Будем
предполагать, что уравнение (1.1) имеет лишь
изолированные корни, то есть для каждого корня существует окрестность,
не содержащая других корней этого уравнения.
Приближенное
решение уравнения состоит из двух этапов:
1.
Отделение
корней, то есть нахождение интервалов из области определения функции f(x), в каждом из
которых содержится только один корень уравнения (1).
2.
Уточнение
корней до заданной точности.
Отделение
корней можно проводить графически и аналитически.
Для
того, чтобы графически отделить корни уравнения
(1.1), строят график функции y = f(x). Абсциссы
точек его пересечения с осью Ox есть
действительные корни уравнения (рис. 1). Практически бывает удобнее заменить
уравнение (1.1) равносильным ему уравнением
, (1.2)
где Φ(x) и
Ψ(x) - более простые функции, чем f(x). Абсциссы
точек пересечения графиков функций y =
Φ(x) и y = Ψ(x) дают корни
уравнения (1.2), а значит и исходного уравнения (1.1) (рис.2).
Аналитическое отделение
корней основано на следующей теореме: если непрерывная на отрезке
[a, b] функция y = f(x) принимает на
концах отрезка значения разных знаков, т.е. f(a)·f(b) < 0, то
внутри этого отрезка находится хотя бы один корень уравнения f(x) = 0; если при этом производная f’(x) сохраняет
знак внутри отрезка [a, b], то корень является единственным.
Уточнение
корней заключается в сужении
интервала изоляции корня и выполняется одним из специальных методов. Рассмотрим
самый простой из них - метод половинного деления.
Пусть
корень отделён и принадлежит отрезку [a, b]. Находим середину отрезка [a, b] по формуле
Если
f(c) = 0, то с -
искомый корень. Если f(c) ≠ 0, то в качестве нового отрезка изоляции
корня [a1, b1]
выбираем ту половину [a, c] или [c, b], на концах которой f(x) принимает
значения разных знаков. Другими словами, если f(a) ∙ f(c) < 0, то
корень принадлежит отрезку [a, c], если f(a) ∙ f(c) < 0 -
отрезку [c, b]. Полученный отрезок снова делим пополам,
находим c1,
вычисляем f(c1),
выбираем отрезок [a2, b2] и т.д. Длина каждого нового отрезка вдвое меньше длины
предыдущего, то есть за n шагов отрезок сократится в 2n
раз. Как только будет выполнено условие
то в качестве приближенного значения корня,
вычисленного с точностью ε, можно взять
Пример. Пусть требуется
решить уравнение
с точностью ε = 0,0001. Отделим корень
графически. Для этого преобразуем уравнение
к виду
и построим графики функций (рис. 4):
Из рисунка видно, что абсцисса точки пересечения этих
графиков принадлежит отрезку [0; 1].
Подтвердим
аналитически правильность нахождения отрезка изоляции корня. Для отрезка [0; 1] имеем:
. Следовательно, корень отделён правильно.
Уточнение корня выполним методом половинного деления.
Первый шаг.
Корень принадлежит отрезку
Второй шаг.
Корень принадлежит отрезку
Третий шаг.
Корень принадлежит отрезку
Сведём
результаты вычислений в таблицу.
Таблица 1 |
||||||
a |
b |
|b-a| |
c |
f(a) |
f(c) |
f(a) ∙ f(c) |
0 |
1 |
1 |
0.5 |
0.5 |
-0.57436 |
<0 |
0 |
0.5 |
0.5 |
0.25 |
0.5 |
-0.07951 |
<0 |
0 |
0.25 |
0.25 |
0.125 |
0.5 |
0.19905 |
>0 |
0.125 |
0.25 |
0.125 |
|
|
|
|
Дальнейшие вычисления проведём с помощью программы.
program equation;
{Решение уравнения методом половинного деления}
uses crt;
var
a,b: real; { Концы отрезка }
c: real; { Середина отрезка }
e: real; { Точность }
function f(x: real): real;
begin
f: = sqr(x-1) - 0.5*exp(x); { Функция
f(x) }
end;
begin
writeln (' Введите концы отрезка : ');
write (' a = '); readln ( a );
write (' b = '); readln( b );
write (' Введите
точность e = '); readln ( e );
writeln(' Результат :
');
while abs ( b - a ) > 2*e
do
begin
c: = ( a + b ) / 2;
if f( c ) = 0 then
begin
writeln( ' c
= ' , c : 8 : 6 , ' f( c ) = ' ,
f( c ) : 8 : 6 );
readln ;
exit ;
end;
if f(a) * f(c) <
0 then b: = c else a: = c;
end;
c: = ( a + b ) / 2;
writeln( ' c = ' , c : 8 : 6, 'f( c ) = ' ,
f( c ) : 8 : 6 );
readln;
end.
Были введены следующие значения: a = 0, b = 1, e = 0.0001.Получены результаты: с = 0.213287; f (c) = 0.000047.
Ответ: Корень уравнения равен 0,2133 ± 0,0001.
Задания. Найти корень уравнения (если корней несколько, взять
наименьший положительный) с точностью 0,0001.
Таблица 2 |
|||
№ варианта |
Уравнение |
№ варианта |
Уравнение |
0 |
|
5 |
|
1 |
|
6 |
|
2 |
|
7 |
|
3 |
|
8 |
|
4 |
|
9 |
|