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

4). Метод хорд

В этом методе нелинейная функция f(х) на отделенном ин­тервале [а, b]

заменяется линейной, в качестве которой берется хорда — прямая,

стягивающая концы нелинейной функции. Эта хорда определяется как прямая, проходящая через точки с координатами (а, f(a)) и (b,f(b)). Имея уравнение хорды у = сх + d, можно легко найти точку ее пересечения с горизонтальной осью, подставив в уравнение у = 0 и найдя из него х. Естественно, в по­лученной таким путем точке x1 не будет решения, ее принимают за новую границу

отрезка, где содержится корень. Через эту точку с координатами (x1, f(x1)) и соответствующую границу предыду­щего интервала опять проводят хорду, находят х2 и т.д. несколько раз, получая последовательностьх3 , х4 ,х5,..., сходящуюся к корню.

Метод хорд применим только для монотонных функций.

Алгоритм метода зависит от свойств функции f(х). Если f(b)*f ”(b) > 0, то строящаяся на каждом этапе хорда имеет правый фиксированный ("закрепленный") конец, и алгоритм выглядит следующим образом:

xi+1=xi-(f(xi)/(f(b)-f(xi)))*(b-xi);

при этом последовательность х1 ,х2,,…будет приближаться к кор­ню слева.

Если f(а)f"(а) > 0, то строящаяся на каждом этапе хорда име­ет левый фиксированный ("закрепленный") конец, и алгоритм выглядит следующим образом: xi+1 = a +( f(a) / (f(a) – f(xi)))*(xi – a);

Рис.7

при этом последовательность х12,… будет приближаться к корню справа.

На рисунке 7 приведен один из вариантов применения ме­тода хорд. В рассматриваемом случае "закрепленным" является правый конец. При­ведено пять шагов (пять хорд), при этом к решению приближаемся слева.

Теоретически доказано, что если первые производные на кон­цах интервала при монотонной и выпуклой функции f(х) не раз­личаются более чем в 2 раза, то справедливо соотношение |х* - хi| < |хi – хi-1| и условием прекращения пополнения после­довательности может быть |хi+1 - хi| <= ε, а в качестве корня принято xi+1 (можно также окончить процесс и при достижении f(хi) <= δ, о чем указывалось в концепции методов). На практике указанные условия можно применять и без предварительной про­верки производных, отклонение погрешности результата при по­логих функциях не будет существенным.

x – sin(x + 2) = 0

[0; 1]

10 -5

a=0

b=1

F(x) = x – sin(x + 2) - исходная функция

G (x) = sin(x + 2) - приведенная функция

F1 (x) = 1 + cos(x + 2) 1-ая ПРОИЗВОДНАЯ ОТ F

F2 (x) = sin(x + 2) 2-ая ПРОИЗВОДНАЯ ОТ F

G1(x)=- cos(x + 2) 1-ая ПРОИЗВОДНАЯ ОТ G

e = 0.00001

DECLARE FUNCTION G1! (x!)

DECLARE SUB iter (x0!, e!, kol!, root!)

DECLARE SUB dix (a!, b!, e!, root!)

DECLARE SUB kas (a!, b!, x!, e!, root!)

DECLARE FUNCTION F! (x!)

DECLARE FUNCTION G! (x!)

DECLARE FUNCTION F1! (x!)

DECLARE FUNCTION F2! (x!)

DECLARE FUNCTION G2! (x!)

CLS

PRINT "proverka sushestvovania kornia"

PRINT " y = x - sin( x + 2)"

REM

DO

INPUT "nachalo otrezka"; a

INPUT "konec otrezka "; b

INPUT "Tochnist"; e

LOOP WHILE F(a) * F(b) > 0

CALL dix(a, b, e, root)

PRINT "koren po metodu dihotomii"; root

PRINT "F(x)=";

PRINT USING " ##.######"; F(root)

PRINT "-------------------------------------------"

INPUT "Nachalnoe znachenie kornia X0="; x

IF F(x) * F2(x) > 0 THEN

PRINT "metod kasatelnih primenim"

a = 1: b = 3

CALL kas(a, b, x, e, root)

PRINT "koren po metodu kasatelnih"; root

PRINT " F(x)=";

PRINT USING " ##.######"; F(root)

ELSE

PRINT "metod kasatelnih ne primenim"

END IF

PRINT "-------------------------------------------"

INPUT "XO="; x0

IF ABS(G1(x)) > 1 THEN

PRINT "metod ne primenim"

ELSE

a = 1: b = 3

CALL iter(x0, e, kol, root)

PRINT "koren po metodu iteracii="; root

PRINT "kolichestvo interachii"; kol

PRINT " F(x) = ";

PRINT USING " ##.######"; F(root)

END IF

END

SUB dix (a, b, e, root)

x = (a + b) / 2

DO

IF F(x) * F(a) < 0 THEN

b = x

ELSE

a = x

END IF

x = (b + a) / 2

LOOP UNTIL (b - a) < e

root = (b + a) / 2

END SUB

FUNCTION F (x)

F = x - SIN(x + 2)

END FUNCTION

FUNCTION F1 (x)

F1 = 1 + COS(x + 2)

END FUNCTION

FUNCTION F2 (x)

F2 = SIN(x + 2)

END FUNCTION

FUNCTION G (x)

G = SIN(x + 2)

END FUNCTION

FUNCTION G1 (x)

G1 = -COS(x + 2)

END FUNCTION

SUB iter (x0, e, kol, root)

kol = 0

x = x0

DO

y = F1(x)

kol = kol + 1

c = x - y

x = y

LOOP UNTIL ABS(c) < e

root = y

END SUB

SUB kas (a, b, x, e, root)

DO

x = x - F(x) / F1(x)

LOOP UNTIL ABS(F(x) / F1(x)) < e

root = x

END SUB

Проверка существования корня

Y= x – sin( x + 2 )

Начало отрезка? 0

Конец отрезка? 1

Точность? 0.000001

Корень по методу дихотомии 0.5541954

F(x) = -0.000001

--------------------------------------------------------------------

Начальное значение корня Хо=? 1.5

Метод касательных не применим

--------------------------------------------------------------------

Хо=? 1.5

Корень по методу итерации = 0.319387

Количество итераций 37

F(x) = -0.413262

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИФСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПИЩЕВЫХ ПРОИЗВОДСТВ»

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

«Уточнение корня уравнения»

Выполнила: студентка группы 11-ТПМ-3

Маркина Алёна Сергеевна

Принял: Вертелова Елена Евгеньевна

Москва 2011