logo search
методичка_1_05_ВНУ

Метод хорд

Методом хорд (його ще називають методом лінійного інтерполювання) нове значення х знаходять як абсцису точки перетину хорди, що проходить через точки

(u; f (u)), (v; f (v)), з віссю Ox. При цьому f(u) f(v) < 0.

Рівняння згаданої хорди матиме вигляд:

Звідси знаходимо абсцису точки перетину хорди з віссю Ох (рівняння якої у = 0):

Я кщо f(х) f(и) > 0, то корінь міститься на проміжку [х; v], тому щойно знайдений х беремо за нове значення лівого кінця проміжку, на якому міститься корінь. Якщо f(х) f(и) < 0, то корінь міститься на проміжку [u; х], тому х беремо за нове значення правого кінця проміжку, на якому міститься корінь. Якщо f(х)=0 або задовольняється умова

то можна вважати, що х - наближення кореня х* з точністю до , інакше для визначення нових и і v повторюємо обчислення.

Приклад.

Методом хорд знайти з точністю до 0,00005 корінь рівняння x3+1,76439x2+2,21584x – 3,31344 = 0, що лежить на проміжку [0;1].

Розв’язання.

Аналізуючи метод хорд з математичної точки зору, ми можемо однозначно сказати, що кожне наступне наближення все ближче і ближче доходить до реального кореня х*. Причому кожне наступне значення x-u буде меншим ніж попереднє. Отже, умовою припинення циклу можна вважати той момент, коли x-u стане меншим за необхідну точність визначення кореня. Один з варіантів програми реалізації поставленої задачі може виглядати так:

program horda;

const e = 0.00005;

var a, b, x, d, y1, у2: real;

begin

writeln (’ввести значення кінців проміжка локалізації кореня’);

readln (a, b);

repeat

y1:=a*a*a+1.76439*a*a+2.21584*a – 3.31344;

y2:=b*b*b+1.76439*b*b+2.21584*b – 3.31344;

x:=a-(b-a)/(y2-y1)*y1;

d:=x-a; a:=x;

until d >= e;

writeln (‘x*=’,x,’+-e’);

end.

Результатом розв’язку даної задачі буде х*=0,78543  0,00005;