
-
Комбинированный метод хорд и касательных.
Тема: Решение нелинейного уравнения методом хорд и касательных.
Постановка
задачи:
Найти корень нелинейного уравнения
методом
хорд с точностью
.
Краткая теория:
Дано
нелинейное уравнение, где функция
определена и непрерывно-дифференцируема
для всех
,
причем функция меняет знак на концах
этого отрезка, т.е.
.
Найти
приближенное решение данного уравнения
с точностью
.
Приближенное
решение
и погрешность приближения
находятся по следующей схеме:
если
на
,
то
,
,
,
;
если
на
,
то
,
,
,
,
.
Приближенное
решение
и погрешность приближения
:
,
.
Блок-схемы:
Отделение
корней
Комбинированный
метод хорд и касательных
Текст программы:
Program Metod_KiH;
Const Eps=0.0001;h=0.25;
Var alfa,beta,X,dX, x1,x2,y1,y2:Real;
Function F(xf:Real):Real;
Begin
F:=xf*xf*xf-5*xf*xf+xf-3.2;
End;
Function dF(xf:Real):Real;
Begin
dF:=3*xf*xf-10*xf+1;
End;
Function ddF(xf:Real):Real;
Begin
ddF:=6*xf-10;
End;
Procedure MC(a,b:Real;Var x1,dx1:Real);
Var xn1, xn2,xp1,xp2:Real;
Begin
If F(a)*ddF(a)>0
Then
Begin
xn1:=b; xn2:=a;
End
Else
Begin
xn1:=a; xn2:=b;
End;
dx1:=1;
While Abs(dx1)>EPS do
Begin
xp1:=xn1; xp2:=xn2; xn1:=xp1-(F(xp1)/(F(xp2)-F(xp1)))*(xp2-xp1);
xn2:=xn2-F(xp2)/dF(xp2); dx1:=Abs((xn2-xn1)/2);
End;
x1:=(xn1+xn2)/2;
End;
Begin {Отделение корней}
Write('Введите промежуток : '); ReadLn(Alfa,Beta);
x1:=alfa; x2:=x1+h;
y1:=F(x1);
While x2<=beta do
Begin
y2:=F(x2);
If y1*y2<=0
Then
Begin
WriteLn('Корень определен на промежутке ( ',x1:0:2,' ; ',x2:0:2,' )');
MC(x1,x2,X,dX);
WriteLn('X = ',X:10:8,' +- ',dX:10:8);
End;
If y1*y2=0
Then
Begin
x2:=x2+h; y2:=F(x2);
End;
x1:=x2; x2:=x1+h; y1:=y2;
End;
If X=0 Then WriteLn('На этом промежутке корней НЕ СУЩЕСТВУЕТ.');
End.
Тестовый пример:
Найти
корень нелинейного уравнения
0
x1=2.00
& x2=-1+i&
x3=-1-i
.
Протокол:
Протокол:
Введите промежуток : -5 5
Корень определен на промежутке (1.75;2,0)
X = 2.0000000 +- -0.000000002
Проверка и вывод
Проверка и вывод:
Решение
задачи:
Протокол:
Введите промежуток: -5 5
Корень определен на промежутке (4.75; 5.0)
X = 4.92883397 +- 0.00000276
График уравнения:
Отделим
корни уравнения графически. Для этого
построим график функции
и
и найдем абсциссы точек пересечения
графиков этих функций:
.
Уточним корни методом касательных:
1).
Для этого определим знаки функции
и второй её производной
на этом отрезке
-8,825<0
,
8,940625>0
.
Тогда
Применяем
формулы
,
,
,
.
Процесс
продолжаем до выполнения условия |,
тогда за приближенное значение корня
можно взять значение
Оценим
погрешность приближения. Так как
не меняет свой знак на данном отрезке,
то
достигает своего наибольшего и наименьшего
значения на концах отрезка
,
поэтому
для любого
.
Тогда используя оценку погрешности
для
любого
.
Получим
,
Следовательно, приближенное значение корня равно
.
Запишем приближенное значение корня только верными значащими цифрами в узком смысле.
.
Округлим
до
.
Получим
,
с погрешностью округления
.
.
Найдем
число верных знаков для
.
.
Следовательно,
.
Ответ:.