
Контрольная работа №2
Вариант № 7.
Иштыганов Андрей 31 группа
-
Метод хорд.
Тема: Решение нелинейного уравнения методом хорд.
Постановка
задачи:
Найти корень нелинейного уравнения
методом
хорд с точностью
.
Краткая
теория: Дано
нелинейное уравнение
,
где функция
определена и непрерывно-дифференцируема
для всех
,
причем функция меняет знак на концах
этого отрезка т.е.
.
Найти
приближенное решение данного уравнения
с точностью
Приближенное
решение
и погрешность приближения
находятся по следующей схеме:
если
на
,
то
,
,
;
если
на
,
то
,
,
Приближенное
решение
и погрешность приближения
:
,
Первый
способ вычисления погрешности:
,
.
Другой
способ:
,
.
Блок-схемы:
Отделение
корней
Метод
хорд
Текст программы:
Program MetodHord;
Const Eps=0.0001; h=0.1;
Var alfa,beta,X,dX, x1,x2,y1,y2:Real; k:integer;
Function F(xf:Real):Real;
Begin
F:=Sqr(xf)*xf-1.2*xf+1;
End;
Function d2F(x1,x2:Real):Real;
Function ddF(xf:Real):Real;
Begin
ddF:=6*xf
End;
Var s:Real;
Begin
S:=0;
While x1<=x2 do
Begin
S:=S+ddF(x1); x1:=x1+h/2;
End;
d2F:=S;
End;
Function XA(a,xn:Real):Real;
Begin
XA:=Xn-(F(Xn)/( F(a)-F(Xn) ))*(a-Xn)
End;
Function XB(b,Xn:Real):Real;
Begin
XB:=Xn-(F(Xn)/(F(b)-F(Xn)))*(b-Xn)
End;
Procedure MH(a,b:Real; Var Xn,dX1:Real;var k:integer);
Var y,Xn1:Real;
Begin
If F(b)*d2F(a,b)>0
Then
Begin
Xn:=a; y:=F(Xn);
Repeat
Xn1:=Xb(b,xn); y:=F(Xn1); Xn:=Xn1;inc(k);
Until Abs(Xn-Xn1)<=Eps;
dX1:=Abs(Xn-Xn1);
End;
If F(a)*d2F(a,b)>0
Then
Begin
Xn:=b; y:=F(Xn);
Repeat
Xn1:=Xa(a,xn); y:=F(Xn1); Xn:=Xn1; inc(k);
Until Abs(Xn-Xn1)<=Eps ;
dX1:=Abs(Xn-Xn1);
End
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:4:1,' ; ',x2:4:1,' )');
MH(x1,x2,X,dX,k);
WriteLn('X = ',X:10:8,' +- ',dX:10:8); WriteLn(k);
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.
Тестовый пример:
Найти корень нелинейного уравнения F(x) ≡ x2-4 = 0
x1=-2 & x2=2.
Протокол:
Введите промежуток : -5 5
Корень определен на промежутке ( -2.10; -2,00)
X = -2.00000000 +- 0.00000012
k=2
Корень определен на промежутке ( 1,90; 2,00)
X = 2.00000000 +- 0.00000000
k=4
Проверка и вывод:
Решение
задачи:
Протокол:
Введите промежуток: -10 7
Корень определен на промежутке (-1.4; -1.3 )
X = -1.38 601171 +- 0.00000000
Проверка и вывод:
График
функции пересекает ось абсциссы на
[-2;-1]. Уточним его методом хорд. Для этого
определим знаки функции
и второй её производной
на этом отрезке [-2;-1].
;
,
для
любого x
из [-2;-1].
Поскольку
,
то применяем формулу
где
– неподвижная точка,
.
Получим следующую таблицу.
Где
Приблизительная схема применения метода:
Оценим
погрешность приближения. Так как
не меняет свой знак на данном отрезке,
то
достигает своего наибольшего и наименьшего
значения на концах отрезка [-2;-1], поэтому
для любого
.
Тогда используя оценку погрешности
для
любого
.
Получим
,
Следовательно, приближенное значение корня равно
.
Запишем приближенное значение корня только верными значащими цифрами в узком смысле.
Имеем
.
Округлим
до
.
Получим
,
,
.
Найдем
число верных знаков для
.
Имеем
.
Так как
,
то получим приближенное значение корня
с числом верных знаков
.
Ответ:.