Паскаль. Основы программирования


Решение уравнений с одной переменной методом половинного деления


Здесь мы очень кратко рассмотрим один из простых методов решения нелинейных уравнений - метод половинного деления, так как другие методы будут рассмотрены позже, после изучения последовательностей, массивов и множеств.

Главная цель этого небольшого раздела - показать использование функций, создаваемых пользователем в программах.

Отделение корней

Первый этап численного решения уравнения f(x) = 0 состоит в отделении корней, т.е. в установлении "тесных" промежутков, содержащих только один корень.

При отделении корней на некотором промежутке [a, b], мы потребуем, чтобы функция f(x) была непрерывна на этом промежутке и будем считать, что все интересующие нас корни находятся на промежутке [a, b], в котором f(a)*f(b) < 0.

Будем вычислять значения функции f(x), начиная с точки x = a, двигаясь вправо с некоторым шагом h. Как только обнаружится пара соседних значений f(x), имеющих разные знаки, и функция f(x) монотонна на этом отрезке, тогда значения аргумента x (предыдущее и последующее) можно считать концами отрезка, содержащего корень. Результатом решения этой задачи будет вывод значений концов промежутка.

Очевидно, что надежность рассмотренного подхода к отделению корней зависит как от характера функции f(x), так и от выбранной величины шага h. Действительно, если при достаточно малом значении h на концах текущего отрезка

 функция f(x) принимает значение одного знака, естественно ожидать, что уравнение f(x) = 0 корней на этом отрезке не имеет. Однако, это не всегда так: при несоблюдении условия монотонности функции f(x) на отрезке
 могут оказаться корни уравнения. Не один, а несколько корней могут оказаться на отрезке
 и при соблюдении условия
 Смотрите рисунки 24 и 25, иллюстрирующие эти случаи.

Рис. 24

Рис. 25

Предвидя подобные ситуации, следует выбирать при отделении корней достаточно малые значения h.

Давайте посмотрим как будет выглядеть программа отделения корней для функции

 на промежутке [-10; 10].

Ясно, что необходимо завести функцию, которая бы при необходимости обращения к ней вычисляла ее значения.


Начало  Назад  Вперед