Приближенное решение алгебраических и трансцендентных уравнений в Wolfram|Alpha

Как приближенно найти действительные корни алгебраических и трансцендентных уравнений с помощью процессора вычисляемых знаний Wolfram|Alpha.

Приближенные методы отыскания корней алгебраических и трансцендентных уравнений - иначе, численные методы решения алгебраических и трансцендентных уравнений (numerical root finding) - часто применяются в инженерных расчетах, поскольку такие уравнения, возникающие при решении практических задач, в большинстве случаев нельзя решить точными методами. Даже когда поиск их точного решения все же возможен, то при этом он, как правило, сопряжен со значительными затратами усилий и времени. Применение численных методов для приближенного решения алгебраических и трансцендентных уравнений полезно и оправдано во всех случаях, когда не важен ход решения уравнения, а нужно лишь найти хотя бы приближенное решение уравнения с заданной точностью.

Wolfram|Alpha реализует алгоритмы основных численных методов решения алгебраических и трансцендентных уравнений, таких, как метод половинного деления (bisection method), метод хорд (метод секущих - secant method), метод касательных (метод Ньютона - Newton's method, Newton-Raphson method).

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

Сначала ищем интервалы изоляции корней уравнения, поскольку все численные методы позволяют искать лишь изолированные корни уравнений. Действительные корни уравнения f(x)=0 соответствуют точкам пересечения графика функции f(x) с осью абсцисс. Поэтому, чтобы найти интервалы изоляции действительных корней заданного уравнения достаточно с помощью Wolfram|Alpha построить график функции f(x). Подробнее об этом - в статье
Изоляция корней и графическое решение уравнений в Wolfram|Alpha.

После того, как интервалы изоляции корней уравнения будут найдены, можно применить тот или иной численный метод для отыскания приближенного значения корней на каждом из интервалов изоляции. Как увидим далее, в Wolfram|Alpha эта процедура несколько упрощается.

Рассмотрим далее трансцендентное уравнение 5cos(x)-ln(x)-1=0.

По виду этого уравнения можно сразу предположить, что оно имеет несколько непериодических решений. Сколько именно, пока неизвестно.

Казалось бы, с помощью Wolfram|Alpha проще всего найти эти решения, используя стандартный запрос solve (без параметров). Пробуем. И вот, что получаем:

solve 5cos(x)-ln(x)-1=0



В ответ на наш запрос Wolfram|Alpha выводит 9 приближенных корней данного уравнения. Однако, можно предположить, что это не все его корни. И в самом деле, кроме указанных выше корней, данное уравнение также имеет еще действительные корни большие 30, которые отсутствуют в выдаче Wolfram|Alpha по запросу solve. В том, что такие корни действительно существуют, легко убедиться графическим методом, воспользовавшись следующим запросом на построение графика:

plot 5cos(x)-ln(x)-1=0 for x=0..50



Чтобы обсуждение и графический анализ были более наглядными, можно повторить предыдущий запрос, переписав данное уравнение в эквивалентном виде 5cos(x)=ln(x)+1:

plot 5cos(x)=ln(x)+1 for x=0..50



Так или иначе, по этим графикам можно оценить приблизительное количество корней уравнения и их расположение на числовой оси. Как видим, после значения 30 имеется по крайней мере 7 корней уравнения, которые обычный запрос solve не выводит.

Если вдруг понадобится, то приближенное значение корней данного уравнения вблизи точки 30 можно графически оценить и более точно, приблизительно указав в запросе числовой интервал, внутри которого находится данный корень:

plot 5cos(x)-ln(x)-1=0 x=30..31



Таким образом, нам легко было убедиться, что обычный запрос solve без дополнительных параметров, имеет недостатки. А именно: он не позволяет находить решение уравнений с заданной точностью (точность решения определяется системой автоматически); требуется уточнение запроса, если нужно использовать какой-то конкретный численный метод; наконец, простой запрос solve f(x)=0, как оказалось, выводит не все корни данного уравнения f(x)=0.

Вот почему процедуру отыскания корней алгебраических и трансцендентных уравнений в Wolfram|Alpha следует обязательно начинать с предварительного графического анализа наличия и расположения таких корней. Графический анализ также поможет изолировать корни уравнения, что необходимо для дальнейшего применения численных методов.

Как же правильно указать параметры запроса solve в Wolfram|Alpha при приближенном решении алгебраических и трансцендентных уравнений численными методами?

В общем случае, запрос solve с параметрами, уточняющими и конкретизирующими нашу задачу выглядит следующим образом (в круглых скобках указаны необязательные параметры запроса):

solve [уравнение] (метод) (начальная точка=начальное приближение, интервал изоляции корня) (требуемая точность=количество цифр)

Дополнительные параметры запроса можно указывать следующим образом.

Метод - этот параметр может принимать следующие значения: bisection method, secant method, Newton's method, Newton-Raphson method.

Для метода половинного деления (bisection method) и метода хорд (секущих, secant method) нужно указывать интервал изоляции корня, например, так: at a=1 and b=4, x0=1 and x1=4 или же 1<=x<=4.

Для метода Ньютона (метод касательных, Newton's method, Newton-Raphson method) обязательно указывается начальное приближение корня - точка, ближайшая к искомому значению корня на интервале изоляции корня (легко определяется графически): x0=1, start x=1, at x=1 и т. п.

В случае, когда вычисления по алгоритму численного метода выполняются "вручную", крайне важно правильно выбрать точку начального приближения - справа или слева от искомого корня - от этого зависит сходимость процесса итераций. Выбрать начальное приближение помогает форма графика функции f(x) вблизи корня. К счастью, в Wolfram|Alpha об этом можно не беспокоится - системе нужно лишь дать подсказку - указать любое начальное приближение на интервале изоляции корня, как справа, так и слева, и она сама делает правильный выбор. Можно указать и интервал изоляции корня, тогда начальное приближение система Wolfram|Alpha определит автоматически.

Желаемая точность решения (количество цифр в ответе) указывается так: to 50 digits или же with 50 digits precision.

Рассмотрим приближенное решение данного трансцендентного уравнения в Wolfram|Alpha численным методом Ньютона (Newton's Method), который также известен, как метод касательных. И сравним его с другими методами.

Для начала, явно укажем только численный метод решения уравнения, оставив остальные параметры запроса на усмотрение системы Wolfram|Alpha.

solve 5cos(x)-ln(x)-1=0 Newton's method



Как видим, тут система Wolfram|Alpha автоматически выбрала начальное приближение х=1.3 и, соответственно, вычислила по методу Ньютона, ближайший к этому значению наименьший корень уравнения с точностью 16 знаков запятой. Кроме того, система выводит уравнение процесса итераций по методу Ньютона (Symbolic form of Newton iteration) и диаграмму процесса итераций (Iteration diagram).

Данное решение получено системой по методу Ньютона за 3 шага. Имеется возможность просмотреть детали процесса итераций по шагам - для этого в секции жмите кнопки "More" и "Show details":



Это позволяет получить таблицу значений последовательных приближений x, остатков (residual) и значений производной (derivative), которая определяет наклон касательной к графику функции на каждом шаге итеративного процесса:



Нужно иметь ввиду, что если в Wolfram|Alpha применить другой численный метод для решения того же самого уравнения, то результаты на первый взгляд могут показаться неожиданными.

Например, испытаем метод половинного деления (bisection method):

solve 5cos(x)-ln(x)-1=0 bisection method



Тут система автоматически выбрала интервал изоляции корня от 19 до 20, и, соответственно, вычислила по методу половинного деления приближенное значение корня данного уравнения, расположенного на данном интервале с точностью 16 знаков за 48 шагов итеративного процесса.

Попробуем теперь выбрать метод хорд или секущих (secant method), не указывая явно иных параметров запроса. Полученный результат вновь может отличаться от двух предыдущих:

solve 5cos(x)-ln(x)-1=0 secant method



Как и предполагалось, метод секущих действительно дал другой результат. В качестве интервала изоляции корня система Wolfram|Alpha самостоятельно выбрала промежуток от 11 до 13, и за 10 итераций вычислила расположенное в этом интервале приближенное значение корня данного уравнения с точностью 16 цифр.

Полученные результаты вовсе не означают, что система Wolfram|Alpha в чем-то ошибается. Если нужно вычислить приближенное значение какого-то конкретного корня уравнения, то в запросе следует явно указать интервал изоляции этого корня (для метода половинного деления, метода хорд) или его начальное приближение (start point), взятое из интервала изоляции этого корня - начальную точку от которой будет начинаться процесс итераций (для метода Ньютона).

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

Начнем с метода половинного деления (bisection method). На интервале от 1 до 2 за 50 итераций получаем:

solve 5cos(x)-ln(x)-1=0 bisection method 1<x<2



То же самое значение корня уравнения на интервале 1<x<2 за 6 итераций дает и метод хорд (секущих, secant method)

solve 5cos(x)-ln(x)-1=0 secant method 1<x<2



Если захотите, то можете самостоятельно посмотреть и сравнить, какие результаты дают методы половинного деления, хорд и Ньютона на интервалах 11<x<13 и 19<x<20. Ответы, конечно совпадают. Только количество итераций для получения решения у каждого метода будет разным: меньше всего итераций требуется для отыскания приближенного решения уравнения методом Ньютона, на втором месте идет метод хорд (секущих) и больше всего итераций требуется методу половинного деления.

Что касается корней уравнения, больших 30, то их тоже можно для сравнения найти тремя указанными методами. Например, как видно из предыдущего, на интервале 30.5<x<31.5 данное уравнение имеет один корень. Вычислим его приближенно тремя методами, а потом сравним полученные результаты.

Метод Ньютона (метод касательных, Newton's method)

solve 5cos(x)-ln(x)-1=0 Newton's method 30.5<x<31.5



Метод хорд (метод секущих, secant method)

solve 5cos(x)-ln(x)-1=0 secant method 30.5<x<31.5



Метод половинного деления (bisection method)

solve 5cos(x)-ln(x)-1=0 bisection method 30.5<x<31.5



Как и ожидалось, убеждаемся, что приближенные значения корня данного трансцендентного уравнения на интервале 30.5<x<31.5, полученные тремя разными методами, полностью совпадают. Отличие наблюдается лишь в количестве итераций, которые потребовалось разным методам для получения данного решения: метод Ньютона - 6 итераций, метод хорд - 9, метод половинного деления - 48.

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

Например, вычислим приближенное значение корня данного уравнения на интервале 11<x<13 с точностью 8 знаков тремя методами

solve 5cos(x)-ln(x)-1=0 Newton's method 11<x<13 to 8 digits



solve 5cos(x)-ln(x)-1=0 secant method 11<x<13 to 8 digits



solve 5cos(x)-ln(x)-1=0 bisection method 11<x<13 to 8 digits



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

Надеюсь, эта статья была Вам полезна.