Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 2

.doc
Скачиваний:
24
Добавлен:
30.04.2013
Размер:
122.88 Кб
Скачать

Численные методы и оптимизация.

Лабораторная работа №2 по теме:

«Методы решения нелинейных уравнений»

Студент: Востропятов Н. А.

Группа: УИ0301

Вариант: №9

Условие.

Отделение корней.

Из графика видно, что корень находится в интервале [1;2].

Решение методом итераций.

Приведём данное уравнение к виду : - рекуррентное уравнение.

Найдём : .

Проверим на сходимость ():

Выбираем произвольное начальное приближение: .

Для оценки абсолютной погрешности: .

Условие окончания процесса уточнения корня: .

Вычислим 3 первые итерации:

n

xn

f(x)

0

1

-1

1

1.11893

-0.07504

2

1.12918

0.00237

3

1.12886

-0.0000724

Оценим погрешность: .

Результаты выполнения программы:

E

n

x

f(x)

0.01

2

1.13315

0.03225

0.001

3

1.12873

0.01010

0.0001

4

1.12887

0.00003

n

2

3

4

lg(E)

-2

-3

-4

Решение методом касательных (Ньютона).

Найдём и :

Проверим на сходимость ():

- выполняется.

Выберем начальное приближение ():.

Для оценки абсолютной погрешности: .

Рекуррентное уравнение ():

Вычислим 3 первые итерации:

n

xn

f(x)

0

1

-1

1

1.125

-0.02916

2

1.12910

0.001766

3

1.12885

-0.0001774

Оценим погрешность: .

Результаты выполнения программы:

E

n

x

f(x)

0.01

1

1.125

-0.02916

0.001

2

1.12910

0.00180

0.0001

3

1.12885

-0.00012

n

1

2

3

lg(E)

-2

-3

-4

Корень, найденный с помощью математического пакета Mathcad 11 – x=1.1288656118.

Программа на ПК.

Вырезка из модуля для программы, содержащего процедуры нахождения приближённого корня (язык программирования - Паскаль):

Метод итераций:

procedure iter(a,b,E:real;var res:real;var it:integer);

var t:real;

begin

it:=0;

res:=b;t:=a;

if f(a)*f(b)=0 then

begin

if f(a)=0 then res:=a else if f(b)=0 then res:=b

end

else

while (abs(res-t)>E)and(abs(f(res)-fi(res))>E) do

begin

res:=t;

t:=fi(res);

inc(it);

writeln('n=',it,' x=',res:0:5,' f(x)=',f(res):0:5);

end;

end;

Метод касательных (Ньютона:)

procedure touch(a,b,m,E:real;var res:real;var it:integer);

begin

it:=0;

if f(a)*f(b)=0 then

begin

if f(a)=0 then res:=a else if f(b)=0 then res:=b

end

else

if (f(a)*f(b)>0)or(diffI(a)*diffI(b)<=0)or(diffII(a)*diffII(b)<=0)

then it:=-1

else

begin

if diffII(a)*f(a)>0 then res:=a else res:=b;

while (abs(f(res)/diffI(res))>E)and(abs(f(res))/m>E) do

begin

res:=res-f(res)/diffI(res);

inc(it);

writeln('n=',it,' x=',res:0:5,' f(x)=',f(res):0:5);

end;

end;

end;

4

Соседние файлы в папке Лабы