Речовий корінь f (х)

Адачі 14. Нехай функція f (x) дійсної змінної x неперервна на відрізку [a, b] і f (a) × f (b) £ 0. Скласти рекурсивну програму перебування на [a, b] будь-якого речового кореня f ( x).

Рішення. По-перше, при перерахованих вище умовах принаймні один корінь f (x) на [a, b] існує. По-друге, домовимося про те, як розуміти слова "знайти корінь". Будемо вважати, що корінь шукається з точністю e> 0, тобто повинен бути знайдений відрізок [a. b] (b - a <2 ×e ), на котором корень имеется. Тогда в качестве приближенного значения корня может быть взята точка x0 =( b + a )/2.

Для відшукання вирішення багатьох завдань часто використовується метод дихотомії, званий також методом послідовного розподілу навпіл, бисекции або вилки. У деяких раніше розглянутих задачах ми вже стикалися з цим методом. У нашому випадку, коли шукається корінь рівняння, суть його в наступному. Нехай e> 0 задано. Ділимо відрізок [a, b] точкою з = (b + a) / 2 на дві рівні частини і в якості нового відрізка [a, b] беремо ту з його половин, для якої знову f (a) × f (b) £ 0 і т. д. Ясно, що на певному етапі матимемо відрізок [a, b] такий, що b-a <2 ×e и f (a ) ×f (b ) £ 0. Следовательно, приближенное решение найдено, и оно равно (b +a )/2.

А як записати запропонований алгоритм з використанням рекурсії? Виявляється, все досить просто.

Адачі 15. Нехай функція f (x) дійсної змінної x неперервна на відрізку [a, b]. Скласти рекурсивну програму перебування на [a, b] будь-якого дійсного кореня f (x). При відсутності коренів має бути видано значення ¥ (10 307).

Рішення. Відмінність постановки цього завдання від попередньої в тому, що тут апріорі нічого не відомо про знаках функції на кінцях відрізка і, отже, коренів f (x) вже може і не бути. Однак метод дихотомії з успіхом може бути застосований і в даному випадку. Відповідний алгоритм може бути записаний так:

Контрольні приклади. Розглянемо функції прикладів з попередньої задачі. маємо: