Приближенное решение нелинейных уравнений

Автор работы: Пользователь скрыл имя, 04 Ноября 2014 в 19:54, лабораторная работа

Краткое описание

В качестве начального приближения корня возьмем точку c0 – середину отрезка: . Если f(с0)=0, то c0 – искомый корень уравнения, если , то из двух отрезков [a, c0] и [c0, b] выбираем тот, на концах которого функция принимает значение разных знаков.
Новый отрезок опять делим пополам и далее поступаем аналогично вышеизложенному. Длина каждого нового отрезка вдвое меньше длины предыдущего отрезка, т.е. за n шагов сократится в 2n раз.

Вложенные файлы: 1 файл

17_variant_lab1.docx

— 559.05 Кб (Скачать файл)

Лабораторная работа №1

Приближенное решение нелинейных уравнений

Вариант 17

Выполнил: Снегирев А. гр. 1/33

Решить уравнение

Методом половинного деления и методом хорд с точность ЕPS=0.0001

Для определения отрезка, на котором находится корень, построим график этой функции.

 

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

Метод половинного деления

 

Пусть корень уравнения отделен на отрезке [a, b], т.е. f(a)f(b)<0 и  f ’(x) сохраняет знак (рис. 2.6.).

 


 


 




 

            

               Рис. 2.6

 

В качестве начального приближения корня возьмем точку c0 – середину отрезка: . Если f(с0)=0, то c0 – искомый корень уравнения, если , то из двух отрезков [a, c0] и [c0, b] выбираем тот, на концах которого функция принимает значение разных знаков.

Новый отрезок опять делим пополам и далее поступаем аналогично вышеизложенному. Длина каждого нового отрезка вдвое меньше длины предыдущего отрезка, т.е. за n шагов сократится в 2n раз.

Вычисления прекращаем, если длина отрезка станет меньше заданной погрешности , т.е. .

Ручной счет:

Для дальнейших расчетов используем программу написанную на языке паскаль.

 program dihotomy;

uses crt;

function F(x:real):real;

begin

F:=2/x-pi*cos(pi*x);

end;

 

var a,b,c,x,e:real;

begin

clrscr;

a:=1;

b:=2;

repeat

write('Введите точность (0;1) e=');readln(e);

until (e>0)and(e<1);

writeln('Нахождение приближенного значения корня уравнения');

writeln('          2/x-pi*cos(pi*x)');

writeln('   на интервале [1;2] с точностью ',e:0:5);

if F(a)*F(b)<0 then

  begin

   repeat

   c:=(a+b)/2;

   if F(a)*F(c)<=0 then b:=c

   else a:=c;

   until b-a<e;

   x:=(a+b)/2;

  end

else x:=a-1;

if x<a then write('На данном интервале корней нет!')

else writeln('x=',x:0:5);

readln

end.

Расчетная часть:

 

 

 

Блок схема программы “dichotomy”

 

 

Метод хорд

Пусть на отрезке [a, b] функция f(x) непрерывна, принимает на концах отрезка значение разных знаков, а производная f ’(x) сохраняет знак. В зависимости от знака второй производной возможны следующие случаи расположения кривых (рис. 1., 2):

  1. f(a)<0, f(b)>0, f ‘(x)>0 – функция возрастает

а) f ’’(x)>0 (кривая вогнута вниз)   б) f ’’(x)<0 (кривая вогнута вверх)

 

 

 


 


 






 


            

 

 

Рис. 1

 

 

 

  1. f(a)>0, f(b)<0, f ‘(x)<0 – функция убывает

а) f ’’(x)>0                                                   б) f ’’(x)<0

 


 


 






 


            

Рис. 2

 

Рассмотрим случай, когда f ’(x) и f ’’(x) имеют одинаковые знаки. (рис. 3)

 

 

  1. f(a)<0, f(b)>0, f ‘(x)>0 – функция возрастает

а) f ’’(x)>0 (кривая вогнута вниз)   б) f ’’(x)<0 (кривая вогнута вверх)

 

 

 


 


     f(a)<0, f(b)>0


f ‘(x)>0, f ’’(x)>0

 





            

 

Рис. 3.

 

График функции проходит через точки A0(a, f(a)) и B(b, f(b)). Искомый корень уравнения (точка ξ) нам известен, вместо него возьмем точку x1 пересечения хорды A0B с осью абсцисс это и будет приближенное значение корня.

Уравнение хорды A0B: .

Найдем значение x=x1, для которого y=0

.

Теперь корень находится на отрезке [x1, b]. Применим метод хорд к этому отрезку. Проведем хорду, соединяющую точки A1(x1, f(x1)) и B и найдем точку x2 – точку пересечения хорды A1B с осью ox

,

Продолжая этот процесс, находим:

              и т.д.

                          (2.2)

В этом случае конец b отрезка [a, b] остается неподвижным, а конец a перемещается.

Формула (2.2) носит название формулы метода хорд.

Вычисление по формуле (2.2) продолжаем до тех пор, пока не достигнем заданной точности, т.е. должно выполняться условие: , где - заданная погрешность.

Теперь рассмотрим случай, когда первая и вторая производные имеют разные знаки, т.е. f ‘(x) f ’’(x)<0 (рис.4).

 


 


    


 




 


            

 

Рис.4

 

Соединим точки A(a, f(a)) и B0(b, f(b)) хордой AB0. Точку пересечения хорды AB0 с осью ox будем считать первым приближением корня. В этом случае, очевидно, неподвижным концом отрезка будет являться конец a.

Запишем уравнение хорды AB0:

Отсюда найдем x1, полагая y=0: .

Теперь корень . Применяя метод хорд к отрезку, получим

   (2.3)

Условие окончания вычислений: .

Итак, если f ‘(x) f ’’(x)>0 приближенное значение корня находят по формуле (2.2), если f ‘(x) f ’’(x)<0,  то по формуле (2.3).

Практически выбор той или иной формулы осуществляют, пользуясь следующим правилом: неподвижным концом отрезка является тот, для которого знак функции совпадает со знаком второй производной

 

Рассмотрим первую и вторую производную от нашей функции

 

 





  =

     =

 



    Обе производные сохраняют знак значит используем формулу:

 

Ручной счет:

 

 

     

 

 

 

 

Для дальнейших расчетов также используем программу написанную на языке паскаль:

program methodhord;

var a,b,c,EPS:real;

function f(x:real):real;

begin

f:=2/x-pi*cos(pi*x)

end;

begin

repeat

write('a=');

readln(a);

write('b=');

readln(b);

write('EPS=');

readln(EPS)

until (a>0) and (b>0) and (EPS>0);

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

        begin

        repeat

        c:=a-(b-a)/(f(b)-f(a))*f(a);

       

        if f(a)*f(c)<0 then b:=c else a:=c;

        until abs(f(c))<=EPS;

        writeln('C=',c:7:2)

        end

               else

writeln('>EPS');

readln

end.

 

Расчетная часть

a=1

b=2

EPS=0.0001

C=   1.63

 

 

 

Блок схема программы “Methodhord”

Вывод: Я локализовал наименьший положительный корень уравнения методом деления отрезка пополам и методом хорд c заданной точностью 0,0001.


Информация о работе Приближенное решение нелинейных уравнений