Решение
задач на тему:
«Методы
решения нелинейных уравнений».
Задание:
1. отделить корни каждого из уравнений
графически;
2. уточнить значение корней каждого их
уравнений методом половинного деления отрезка с точностью до 0,001;
3.Уточнить какой-нибудь корень уравнения
методом Ньютона с точностью до 0,001.
Уравнения:
I.
;
II.
.
Уравнения должны быть рассмотрены на
I.
|
(1.1)
|
10.
Приближенное решение уравнения состоит из двух
этапов:
1. Отделение корней;
2. Уточнение корней до заданной
точности.
Этап I.
Отделим
корни графически, для этого запишем наше уравнение в сл. виде .
Построим графики
этих функций. (т.е. и )
Из графика вы видим, что абсцисса точки
пересечения этих графиков принадлежит отрезку .
Проверим, правильно ли мы нашли отрезок
изоляции корня. Для этого подставим в уравнение (1.1) граничные значения
отрезка. Тогда получим
.
То есть,
Применим аналитическое отделение корней,
основанное на следующей теореме:
Теорема 1.1.:
Если непрерывная на отрезке [a, b] функция
y = f(x) принимает на концах отрезка значения разных знаков, т.е. f(a)·f(b)
< 0, то внутри этого отрезка находится хотя бы один корень уравнения;
если при этом производная сохраняет знак внутри
отрезка [a, b], то корень является единственным.
В нашем случае Значит,
по теореме представленной выше, мы получаем, что внутри отрезка находится хотя бы один корень уравнения.
Таким образом, корень отделен правильно.
20.Воспользуемся методом
половинного деления отрезка (дихотомии).
Этап II.
Уточнение корней заключается в сужении
интервала изоляции корня и выполняется одним из методов решения нелинейных уравнений.
Найдем корни уравнения (1.1) методом половинного деления.
1) Определим интервал на котором будем
работать. В данном случае он задан: [-10;10]. (см.задание).
Найдем значения функции на концах этого
интервала
2) Теперь мы будем искать середину нашего
отрезка. Середина отрезка [a;
b]
находится по сл.формуле
|
(1.2)
|
Если с=0, то нами найден корень уравнения.
Если f(c) ≠ 0, то в качестве нового отрезка изоляции корня [a1;
b1] выбираем ту половину [a, c] или [c, b], на
концах которой f(x) принимает значения разных знаков. Другими словами,
если
f(a) ∙ f(c) < 0, то корень
принадлежит отрезку [a, c],
|
(1.3)
|
если
f(a)
∙ f(c)>
0 - отрезку [c, b]
|
(1.4)
|
Полученный отрезок снова делим пополам,
находим c1,вычисляем f(c1), выбираем
отрезок [a2, b2] и т.д. Длина каждого нового
отрезка вдвое меньше длины предыдущего, то есть за n шагов отрезок
сократится в 2n
раз. Как только будет выполнено условие ,
то в качестве приближенного значения корня, вычисленного с точностью ε,
можно взять .
Начнем вычислять отрезки.
Шаг 1.
Замечание1: при
вычислениях значений нам важен знак, а не само
значение, поэтому при больших вычислениях можно исследовать функцию на знак, не
вычисляя ее значения.
Шаг 2.
Шаг 3.
Шаг 4.
Шаг 5.
Шаг 6.
Шаг 7.
Шаг 8.
Шаг 9.
Шаг 10.
Шаг 11.
Шаг 12.
Шаг 13.
Шаг 14.
Шаг 15.
Ответ:
Для того, чтобы закрепить материал,
составим алгоритм выполнения уточнения значения корней методом положительного
деления отрезка.
Для проверки вычислений можно
воспользоваться следующей программой (Pascal).
program equation1.2;
uses crt;
var
a,b:
real; { Концы отрезка }
c: real; { Середина отрезка }
e: real; { Точность }
function f(x: real): real;
begin
f: = 5^x+3*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.
30. Метод Ньютона (метод
касательных).
Этот метод применяется, если уравнение f(x) = 0 имеет
корень xÎ
[a;b], и выполняются
условия:
1) функция y=f(x) определена и
непрерывна при xÎ(- ¥; + ¥)
2)f(a)·f(b)<0 (функция принимает значения разных знаков на концах отрезка [a;b]);
3)производные f¢(x) и f²(x) сохраняют
знак на отрезке [a;b]
(т.е. функция f(x) либо возрастает, либо убывает на отрезке [a;b], сохраняя при этом направление выпуклости).
4) f¢(x) ¹ 0 при xÎ[a;b]
Основная идея метода заключается в следующем:
на отрезке [a;b]
выбирается такое число x0, при котором f(x0) имеет тот же
знак, что и f²(x0), т. е. выполняется условие f(x0)·f²(x)>0. Таким образом, выбирается точка с абсциссой x0, в которой касательная к кривой y=f(x) на отрезке [a;b] пересекает ось Ox. За точку x0 сначала удобно выбирать один из концов
отрезка.
Алгоритм решения задач с помощью метода Ньютона
- определяем интервал (если он не задан),
которому будет принадлежать корень уравнения. Сужение интервала можно
производить методом половинного деления.
- находим f¢(x) и f²(x), причем f¢(x) ¹ 0 при xÎ[a;b], f¢(x) и f²(x) должны сохранять знак на отрезке [a;b]
- выбираем один из концов отрезка [a,b] за x0,
исходя из того, что должно выполняться следующее условие
- вычисляем
|
(1.6)
|
пока
не будет достигнуто совпадение десятичных знаков, которые необходимы в ответе,
или заданной точности e - до выполнения неравенства
Решим уравнение данным методом.
Проверим,
можем ли мы воспользоваться данным методом решения нелинейных уравнений.
1) функция (1.1) определена и непрерывна при xÎ(- ¥; + ¥)
2)
f(a)·f(b)<0 (функция
принимает значения разных знаков на концах отрезка [a,b]);
3)
производные f¢(x) и f²(x) сохраняют
знак на отрезке [a;b].
4) f¢(x)
¹ 0 при xÎ[a;b]
Начнем
наши вычисления.
1)
Определим интервал на котором мы будем работать. В данном случае, он нам задан:
[-10,10]. (см. задание)
2)
Найдем f¢(x) и f²(x)
f¢(x)
и f²(x)
сохраняют знак на отрезке [-10;10].
3) Выберем один из концов отрезка за х0
так, чтобы выполнялось условие (1.5)
Тогда за х0примем 10.
4) По формуле (1.6) последовательно
вычислим х1,х2…xn
.
Шаг 1.
Шаг 2.
Шаг 3.
Шаг 4.
Шаг 5.
Шаг 6.
Шаг 7.
Шаг 8.
Шаг 9.
Шаг 10.
Шаг 11.
Шаг 12.
Шаг 13.
Шаг 14.
Шаг 15.
Шаг 16.
Шаг 17.
Шаг 18.
Таким
образом, .
Ответ:
Блок-схема
метода Ньютона
Для проверки вычислений можно
воспользоваться следующей программой (Pascal).
programequation1.3;
function f(x:real):real; {Исходнаяфункция}
begin
f:=x^5+3*x;
end;
functionf1(x:real):real;
{Первая производная функции}
begin
f1:=5^x*ln(5)+3;
end;
var a,b,x,e,en:real;
i:integer;
begin
clrscr; {очиститьэкран}
writeln ('Решение нелинейного уравнения
методом Ньютона');
writeln ('Уравнение 5^x+3*x=0');
write ('Введите левую и правую границы
интервала:');
read (a,b);
write ('Введите требуемую точность
решения:');
read (e);
writeln ('Решение:');
writeln ('Номер шага Значение X');
en:=abs(a-b);
x:=b;
i:=1;
while (abs(en)>e) do begin {Пока не
достигнута точность}
x:=x-f(x)/f1(x); {выполнить шаг метода}
writeln (i:10,x:20:14); {вывести
значение X с шага}
en:=abs(x-b); {Новая точность}
b:=x; {Значение границы для следующего
шага}
i:=i+1; {Номершага}
end;
end.
II.
|
(2.1)
|
Проделаем те же исследования с уравнением
(2.1), какие были сделаны для уравнения (1.1).
10.
Отделим корни уравнения (2.1) графически, для этого запишем наше уравнение в
сл. виде .
Построим графики
этих функций. (т.е. и )
Из графика вы видим, что корни
принадлежат отрезкам:
Проверим, правильно ли мы нашли отрезок
изоляции корней. Для этого подставим в уравнение (2.1) граничные значения
отрезков. Тогда получим
.
В нашем случае Тогда,
по теореме 1.1, мы получаем, что внутри отрезка находится
корень уравнения.
Из теореме 1.1
следует, что на отрезке [1;1,5] есть корень.
Таким образом, корни отделены правильно.
20. Определим корни уравнение
(2.1) методом половинного деления отрезка.
Т.к. у нас два корня, то пусть
Сначала рассмотрим .
Шаг 1.
Шаг 2.
Шаг 3.
Шаг 4.
Шаг 5.
Сведем результаты вычислений в таблицу.
N
|
a
|
b
|
|b-a|
|
c
|
f(a)
|
f(c)
|
f(a)f(c)
|
1
|
-10
|
0
|
10
|
-5
|
10009
|
629
|
>0
|
2
|
-5
|
0
|
5
|
-2,5
|
629
|
40,563
|
>0
|
3
|
-2,5
|
0
|
2,5
|
-1,25
|
40,563
|
2,691
|
>0
|
4
|
-1,25
|
0
|
1,25
|
-0,625
|
2,6914
|
-0,2224
|
<0
|
5
|
-1,25
|
-0,625
|
0,625
|
-0,9314
|
2,6914
|
0,7010
|
>0
|
6
|
-0,9375
|
-0,625
|
0,3125
|
-0,7813
|
0,7010
|
0,1539
|
>0
|
7
|
-0,7813
|
-0,625
|
0,1563
|
-0,70315
|
0,1539
|
-0,0524
|
<0
|
8
|
-0,7813
|
-0,7032
|
0,0781
|
-0,7423
|
0,1539
|
0,0459
|
>0
|
9
|
-0,7423
|
-0,7032
|
0,0391
|
-0,72275
|
0,0459
|
-0,0044
|
<0
|
10
|
-0,7423
|
-0,72275
|
0,0195
|
-0,7325
|
0,0459
|
0,0204
|
>0
|
11
|
-0,7325
|
-0,72275
|
0,00975
|
-0,7276
|
0,0204
|
0,0079
|
>0
|
12
|
-0,7276
|
-0,72275
|
0,005
|
-0,725175
|
0,0079
|
0,00172
|
>0
|
13
|
-0,72518
|
-0,72275
|
0,00243
|
-0,72397
|
0,00172
|
-0,00133
|
<0
|
Таким
образом, один из корней уравнения .
Теперь рассмотрим .
Шаг 1.
Шаг 2.
Шаг 3.
Шаг 4.
Шаг 5.
Сведем результаты вычислений в таблицу.
N
|
a
|
b
|
|b-a|
|
c
|
f(a)
|
f(c)
|
f(a)f(c)
|
6
|
0,9375
|
1,25
|
0,3125
|
1,09375
|
-1,16502
|
-0,66264
|
>0
|
7
|
1,09375
|
1,25
|
0,15625
|
1,17188
|
-0,66264
|
-0,28592
|
>0
|
8
|
1,17188
|
1,25
|
0,4688
|
1,21094
|
-0,28592
|
-0,06068
|
>0
|
9
|
1,21094
|
1,25
|
0,039906
|
1,23047
|
-0,06068
|
0,06190
|
<0
|
10
|
1,21094
|
1,23047
|
0,01953
|
1,22071
|
-0,06068
|
-0,00021
|
>0
|
11
|
1,22071
|
1,23047
|
0,00976
|
1,22559
|
-0,00021
|
0,03063
|
<0
|
12
|
1,22071
|
1,22559
|
0,00488
|
1,22315
|
-0,00021
|
0,01515
|
<0
|
13
|
1,22071
|
1,22315
|
0,00244
|
1,22193
|
-0,00021
|
0,00747
|
<0
|
Таким
образом, второй корень уравнения .
Ответ:,
Блок-схема
Для проверки вычислений можно
воспользоваться следующей программой (Pascal).
program equation2.2;
uses crt;
var
a,b:
real; { Концы отрезка }
c: real; { Середина отрезка }
e: real; { Точность }
function f(x: real): real;
begin
f: = х^4-x-1; { Функция 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.
30. Решим уравнение (2.1)
методом Ньютона.
1) Определим интервал на котором мы будем работать. В данном случае,
имеем
2)
Найдем f¢(x) и f²(x)
f¢(x)
и f²(x)
сохраняют знак на выбранных отрезках.
3) Выберем один из концов отрезка за х0
так, чтобы выполнялось условие (1.5)
Тогда за х0примем в
одном случае -10 и 10.
4) По формуле (1.6) последовательно
вычислим х1,х2…xn
для x=
- 10.
Шаг 1.
Шаг 2.
Шаг 3.
Шаг 4.
Шаг 5.
N
|
xi-1
|
f(x0)/f’(x0)
|
xi
|
|
6
|
-2,35263
|
0,60256
|
-1,75007
|
0,60256
|
7
|
-1,75007
|
0,45145
|
-1,29862
|
0,45145
|
8
|
-1,29862
|
0,32199
|
-0,97663
|
0,32199
|
9
|
-0,97663
|
0,18755
|
-0,78908
|
0,18755
|
10
|
-0,78908
|
0,05961
|
-0,72947
|
0,05961
|
11
|
-0,72947
|
0,00495
|
-0,72452
|
0,00495
|
12
|
-0,72452
|
0,00017
|
-0,72469
|
0,00017
|
Таким образом, х1=-0,247.
Теперь вычислимх1,х2…xn
для x=
10.
Шаг 1.
Шаг 2.
Шаг 3.
Шаг 4.
Шаг 5.
N
|
xi-1
|
f(x0)/f’(x0)
|
xi
|
|
6
|
2,4163
|
0,5533
|
1,863
|
0.5533
|
7
|
1,863
|
0,369
|
1,494
|
0,369
|
8
|
1,494
|
0,2026
|
1,292
|
0,202
|
9
|
1,292
|
0,065
|
1,227
|
0,065
|
10
|
1,227
|
0,006
|
1,221
|
0,006
|
11
|
1,221
|
0,0003
|
1,2207
|
0,0003
|
Таким образом, х2=1,221.
Ответ:,
х1=- 0,247,х2=1,221
Блок-схема
метода Ньютона
Для проверки вычислений можно
воспользоваться следующей программой (Pascal).
programequation1.3;
function f(x:real):real; {Исходнаяфункция}
begin
f:=x^4-x-1;
end;
functionf1(x:real):real;
{Первая производная функции}
begin
f1:=4*x^3-1;
end;
var a,b,x,e,en:real;
i:integer;
begin
clrscr; {очиститьэкран}
writeln ('Решение нелинейного уравнения
методом Ньютона');
writeln ('Уравнение 5^x+3*x=0');
write ('Введите левую и правую границы
интервала:');
read (a,b);
write ('Введите требуемую точность
решения:');
read (e);
writeln ('Решение:');
writeln ('Номер шага Значение X');
en:=abs(a-b);
x:=b;
i:=1;
while (abs(en)>e) do begin {Пока не
достигнута точность}
x:=x-f(x)/f1(x); {выполнить шаг метода}
writeln (i:10,x:20:14); {вывести
значение X с шага}
en:=abs(x-b); {Новая точность}
b:=x; {Значение границы для следующего
шага}
i:=i+1; {Номершага}
end;
end.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.