Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа 2.docx
Скачиваний:
8
Добавлен:
17.05.2015
Размер:
701.24 Кб
Скачать

Контрольная работа №2

Вариант № 7.

Иштыганов Андрей 31 группа

  1. Метод хорд.

Тема: Решение нелинейного уравнения методом хорд.

Постановка задачи: Найти корень нелинейного уравнения методом хорд с точностью .

Краткая теория: Дано нелинейное уравнение , где функция определена и непрерывно-дифференцируема для всех , причем функция меняет знак на концах этого отрезка т.е. .

Найти приближенное решение данного уравнения с точностью Приближенное решение и погрешность приближения находятся по следующей схеме:

если на , то , , ;

если на , то , ,

Приближенное решение и погрешность приближения : , Первый способ вычисления погрешности: ,.

Другой способ: , .

Блок-схемы:

Отделение корней Метод хорд

Текст программы:

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], поэтому для любого .

Тогда используя оценку погрешности

для любого .

Получим ,

Следовательно, приближенное значение корня равно

.

Запишем приближенное значение корня только верными значащими цифрами в узком смысле.

Имеем . Округлим до . Получим , , .

Найдем число верных знаков для . Имеем . Так как , то получим приближенное значение корня с числом верных знаков .

Ответ:.