Автор работы: Пользователь скрыл имя, 04 Ноября 2014 в 19:54, лабораторная работа
В качестве начального приближения корня возьмем точку c0 – середину отрезка: . Если f(с0)=0, то c0 – искомый корень уравнения, если , то из двух отрезков [a, c0] и [c0, b] выбираем тот, на концах которого функция принимает значение разных знаков.
Новый отрезок опять делим пополам и далее поступаем аналогично вышеизложенному. Длина каждого нового отрезка вдвое меньше длины предыдущего отрезка, т.е. за n шагов сократится в 2n раз.
Лабораторная работа №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):
а) f ’’(x)>0 (кривая вогнута вниз) б) f ’’(x)<0 (кривая вогнута вверх)
Рис. 1
а) f ’’(x)>0
Рис. 2
Рассмотрим случай, когда f ’(x) и f ’’(x) имеют одинаковые знаки. (рис. 3)
а) 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.
Информация о работе Приближенное решение нелинейных уравнений