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

Методы решения уравнений — обзор

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

Метод введения новой переменной (замены переменной)

Метод введения новой переменной, он же метод замены переменной, позволяет решать уравнения f(g(x))=0 или f1(g(x))=f2(g(x)) , где f , f1 и f2 – некоторые функции, а x – неизвестная переменная, а также уравнения, которые могут быть приведены к указанному виду. Состоит метод во введении новой переменной t=g(x) . Введение переменной позволяет от исходного уравнения f(g(x))=0 или f1(g(x))=f2(g(x)) перейти к уравнению с новой переменной f(t)=0 или f1(t)=f2(t) соответственно. Дальше находятся корни полученного уравнения с новой переменной: t1, t2, …, tn . После этого осуществляется возврат к старой переменной, для чего составляется совокупность уравнений g(x)=t1, g(x)=t2, …, g(x)=tn . Решение этой совокупности дает интересующее нас решение исходного уравнения.

Например, метод введения новой переменной позволяет решить уравнение . Здесь стоит принять . Это позволяет перейти от исходного уравнения к квадратному уравнению t 2 −3·t+2=0 с новой переменной t , которое имеет два корня t1=1 и t2=2 . Обратная замена происходит путем составления совокупности двух уравнений и . Это рациональные уравнения. Решением первого является x=2 , а решением второго является x=1,5 . Так методом введения новой переменной получено решение исходного уравнения: 1,5 , 2 .

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

Метод разложения на множители

Метод разложения на множители предназначен для решения уравнений f1(x)·f2(x)·…·fn(x)=0 , где f1(x), f2(x),…, fn(x) – некоторые выражения, x – переменная. То есть, методом разложения на множители решаются уравнения, в левой части которых находится произведение нескольких выражений, а в правой – нуль. Суть метода состоит в замене решения уравнения f1(x)·f2(x)·…·fn(x)=0 решением совокупности уравнений f1(x)=0, f2(x)=0, …, fn(x)=0 на области допустимых значений (ОДЗ) для исходного уравнения.

Приведем простой пример. Уравнение может быть решено методом разложения на множители. Переходим от исходного уравнения к совокупности двух уравнений и . Иррациональное уравнение имеет единственное решение x1=1 . Логарифмическое уравнение тоже имеет единственное решение x2=4 . Значит, совокупность уравнений имеет два решения x1=1 , x2=4 . Но области допустимых значений для исходного уравнения, которой является множество (3, +∞) , принадлежит лишь одно из решений x1=1 , x2=4 , а именно, x2=4 . Оно и является единственным корнем уравнения .

Подробное описание этого метода и решения других характерных примеров смотрите в статье «метод разложения на множители».

Метод решения уравнений «дробь равна нулю»

Из названия понятно, что этот метод используется при решении уравнений f(x)/g(x)=0 . Например, он позволяет решить уравнение . Метод состоит в переходе от решения уравнения f(x)/g(x)=0 к решению уравнения f(x)=0 на ОДЗ для исходного уравнения. Следовательно, чтобы решить уравнение , надо решить уравнение (x−1)·(x 2 −4)=0 на ОДЗ для исходного уравнения.

Обоснование метода и примеры с решениями смотрите здесь.

Метод решения уравнений через преобразования

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

Например, для решения уравнения 3·x 4 −48=0 последовательно проводятся два преобразования: переносится слагаемое −48 из левой части уравнения в правую с противоположным знаком, после чего проводится деление обеих частей уравнения на число 3 . В результате получается равносильное уравнение x 4 =16 , причем очень простое в плане решения. Оно имеет два корня x1=−2 и x2=2 . Они и составляют решение исходного уравнения.

Вот другой пример. Замена выражения в левой части уравнения тождественно равным выражением (x−1)·(x+2) дает уравнение-следствие (x−1)·(x+2)=0 , имеющее два корня x1=1 и x2=−2 . Проверка показывает, что только первый корень является корнем исходного уравнения, а второй корень – посторонний.

Какие преобразования используются при решении уравнений? Когда нужно делать проверку для отсеивания посторонних корней, а когда такую проверку делать необязательно? Ответы на эти и многие другие вопросы по теме есть в этом материале.

Метод решения уравнений, сводящихся к числовым равенствам

Иногда в результате преобразования уравнений получаются числовые равенства. Например, уравнение сводится к верному числовому равенству 0=0 , а уравнение сводится к неверному числовому равенству 0=5 . Решением уравнений, сводящихся к верным числовым равенствам, является множество, совпадающее с ОДЗ для исходного уравнения. Так, решением уравнения является множество x≥0 . А уравнения, сводящиеся к неверным числовым равенствам, не имеют решений. То есть, уравнение не имеет решений.

Здесь есть один нюанс. Если среди преобразований, приводящих уравнение к верному числовому равенству, есть возведение обеих частей уравнения в одну и ту же четную степень, то нельзя утверждать, что решением уравнения является любое число из ОДЗ. Этот нюанс разобран в статье «решение уравнений, сводящихся к числовым равенствам».

Функционально-графический метод

Обзор методов решения уравнений продолжаем функционально-графическии методом. Этот метод предполагает использование функций, отвечающих частям решаемого уравнения, а точнее, их графиков и свойств. Можно выделить три основных направления функционально-графического метода:

  • Графический метод
  • Метод, базирующийся на возрастании-убывании функций
  • Метод оценки

Давайте рассмотрим их.

Графический метод

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

Например, графически можно решить уравнение . Из чертежа, приведенного ниже, видно, что графики имеют единственную точку пересечения с абсциссой 2 . Это единственный корень уравнения.

Метод, базирующийся на возрастании-убывании функций

Второе направление в своей основе имеет использование свойств возрастающих и убывающих функций. Соответствующий метод используется тогда, когда есть возможность подобрать корень уравнения и доказать возрастание функции, отвечающей одной из частей уравнения, и убывание функции, отвечающей другой части уравнения. В этом случае подобранный корень является единственным.
Приведем пример. Для уравнения 3 (1−x) 3 +1=2 x несложно подобрать корень, им является число 1 . Также несложно обосновать убывание функции, соответствующей левой части уравнения, и возрастание функции, отвечающей правой части уравнения. Это доказывает единственность подобранного корня.

За более полной информацией следуйте сюда

Метод оценки

Третье направление основано на использовании свойств ограниченности функций. Это так называемый метод оценки. Согласно этому методу, в первую очередь нужно оценить значения выражений, находящихся в левой и правой части уравнения. Если множества, соответствующие полученным оценкам, не пересекаются, то уравнение не имеет корней. Если множества имеют конечное число общих элементов t1 , t2 , …, tn , то решение уравнения f(x)=g(x) заменяется решением совокупности систем , , …, . Если же множества, соответствующие оценкам имеют бесконечно много общих элементов, то надо либо уточнять оценки, либо искать другой метод решения.

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

Метод освобождения от внешней функции

Метод освобождения от внешней функции используется для решения уравнений h(f(x))=h(g(x)) , где f , g и h – функции, причем функция y=h(t) принимает каждое свое значение по одному разу, в частности, строго возрастает или строго убывает, а x – независимая переменная. Этот метод состоит в переходе от уравнения h(f(x))=h(g(x)) к уравнению f(x)=g(x) на ОДЗ для исходного уравнения.

Например, методом освобождения от внешней функции можно решить уравнение . Здесь в качестве внешней функции выступает y=h(t) , где . Эта функция возрастающая как сумма двух возрастающих функций и , значит, каждое свое значение она принимает по одному разу. Это позволяет перейти от исходного уравнения к уравнению . Равносильные преобразования позволяют привести последнее уравнение к квадратному уравнению x 2 +x−2=0 , которое имеет два корня x1=−2 и x2=1 . Из этих корней только x1=−2 принадлежит ОДЗ для исходного уравнения. Следовательно, x1=−2 – единственный корень исходного уравнения.

Рекомендуем детально разобраться с этим методом решения уравнений, обратившись к материалу статьи «метод освобождения от внешней функции».

Метод решения уравнений через ОДЗ

Через ОДЗ решаются уравнения, области допустимых значений которых являются либо пустыми множествами, либо состоят из конечного количества чисел. Когда ОДЗ есть пустое множество, уравнение не имеет решений. Когда ОДЗ состоит из конечного количества чисел, то следует по очереди проверить эти числа через подстановку. Те из них, которые удовлетворяют решаемому уравнению являются его корнями, остальные – не являются.

Например, уравнение не имеет решений, так как ОДЗ для него есть пустое множество. А для уравнения ОДЗ состоит из двух чисел −1 и 7 . Проверка подстановкой показывает, что −1 является корнем уравнения, а 7 – не является.

Более полная информация по этому методу решения уравнений содержится в этой статье.

Метод возведения обеих частей уравнения в одну и ту же степень

Этот метод, в основном, используется для решения иррациональных уравнений. Он заключается в возведении обеих частей уравнения в одну и ту же степень с целью избавления от корней. Например, возведение обеих частей уравнения в квадрат дает уравнение без корня 1−5·x=(x−3) 2 . Возведение в нечетную степень дает равносильное уравнение. Возведение в четную степень в общем случае дает уравнение-следствие, поэтому, при этом необходимо позаботиться об отсеивании посторонних корней. Причем отсеивание следует проводить способом, не связанным с ОДЗ, обычно, через проверку подстановкой, так как возведение частей уравнения в четную степень может приводить к появлению посторонних корней в рамках ОДЗ.

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

Метод решения уравнений по определению логарифма

По определению логарифма, как правило, решают уравнения следующего вида logh(x)f(x)=g(x) , например, log2(x 2 +4·x+3)=3 , log2(9−2 x )=3−x , logx(3·x lgx +4)=2·lgx и т.п.

Согласно методу решения уравнений по определению логарифма, решение уравнения logh(x)f(x)=g(x) заменяется решением уравнения f(x)=(h(x)) g(x) на ОДЗ переменной x для исходного уравнения. Например, от уравнения logx(3·x lgx +4)=2·lgx можно перейти к уравнению 3·x lgx +4=x 2·lgx на ОДЗ для исходного уравнения.

Более полная информация содержится в основной статье.

Метод потенцирования

Методом потенцирования решаются логарифмические уравнения, обе части которых являются логарифмами по одному и тому же основанию, например, lgx=lg(3·x+5) , и т.п. Метод заключается в замене решения уравнения logh(x)f(x)=logh(x)g(x) решением уравнения f(x)=g(x) на ОДЗ для исходного уравнения. По этому методу от уравнения lgx=lg(3·x+5) следует перейти к уравнению x=3·x+5 на ОДЗ для исходного уравнения, которая определяется двумя условиями: x>0 , 3·x+5>0 .

Обоснование метода и примеры с подробными решениями смотрите в этой статье.

Метод логарифмирования

Метод подразумевает логарифмирование обеих частей уравнения по одному и тому же основанию. К нему следует прибегать тогда, когда логарифмирование позволяет избавиться от степеней с переменной в показателях. В частности, его можно использовать для решения показательных уравнений, обе части которых являются степенями с одинаковыми основаниями, например, 5 1−x =5 2·x+1 . Почленное логарифмирование этого уравнения дает очень простое уравнение 1−x=2·x+1 , решение которого дает решение исходного уравнения.

Также метод подходит для решения показательных уравнений, степени в которых имеют разные основания и отличающиеся показатели, например, . Более того, метод логарифмирования является чуть ли не основным методом решения показательно-степенных уравнений, вроде таких x lgx−1 =100 , .

Более детальная информация и примеры с решениями есть в этом материале.

Численные методы решения систем нелинейных уравнений

Введение

Многие прикладные задачи приводят к необходимости нахождения общего решения системы нелинейных уравнений. Общего аналитического решения системы нелинейных уравнений не найдено. Существуют лишь численные методы.

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

Для численного решения применяются итерационные методы последовательных приближений (простой итерации) и метод Ньютона в различных модификациях. Итерационные процессы естественным образом обобщаются на случай системы нелинейных уравнений вида:

(1)

Обозначим через вектор неизвестных и определим вектор-функцию Тогда система (1) записывается в виде уравнения:

(2)

Теперь вернёмся к всеми любимому Python и отметим его первенство среди языков программирования, которые хотят изучать [1].

Этот факт является дополнительным стимулом рассмотрения числительных методов именно на Python. Однако, среди любителей Python бытует мнение, что специальные библиотечные функции, такие как scipy.optimize.root, spsolve_trianular, newton_krylov, являются самым лучшим выбором для решения задач численными методами.

С этим трудно не согласится хотя бы потому, что в том числе и разнообразие модулей подняло Python на вершину популярности. Однако, существуют случаи, когда даже при поверхностном рассмотрении использование прямых известных методов без применения специальных функций библиотеки SciPy тоже дают неплохие результаты. Иными словами, новое- это хорошо забытое старое.

Так, в публикации [2], на основании проведенных вычислительных экспериментов, доказано, что библиотечная функция newton_krylov, предназначенная для решения больших систем нелинейных уравнений, имеет в два раза меньшее быстродействие, чем алгоритм TSLS+WD
(two-step least squares), реализованный средствами библиотеки NumPy.

Целью настоящей публикации является сравнение по числу итераций, быстродействию, а главное, по результату решения модельной задачи в виде системы из ста нелинейных алгебраических уравнений при помощи библиотечной функции scipy.optimize.root и методом Ньютона, реализованного средствами библиотеки NumPy.

Возможности решателя scipy.optimize.root для численного решения систем алгебраических нелинейных уравнений

Библиотечная функция scipy.optimize.root выбрана в качестве базы сравнения, потому что имеет обширную библиотеку методов, пригодных для сравнительного анализа.

scipy.optimize.root(fun, x0, args=(), method=’hybr’, jac=None, tol=None,callback=None, ptions=None)
fun — Векторная функция для поиска корня.
x0 –Начальные условия поиска корней

method:
hybr -используется модификация Пауэлл гибридный метод;
lm – решает системы нелинейных уравнений методом наименьших квадратов.
Как следует из документации [3] методы broyden1, broyden2, anderson, linearmixing, diagbroyden, excitingmixing, krylov являются точными методами Ньютона. Остальные параметры являются «не обязательными» и с ними можно ознакомится в документации.

Методы решения систем нелинейных уравнений

Приведенный далее материал действительно можно прочитать в литературе, например в [4], но я уважаю своего читателя и для его удобства приведу вывод метода по возможности в сокращенном виде. Те, кто не любит формулы, этот раздел пропускают.

В методе Ньютона новое приближение для решения системы уравнений (2) определяется из решения системы линейных уравнений:

(3)

Определим матрицу Якоби:

(4)

Запишем(3) в виде:

(5)

Многие одношаговые методы для приближенного решения (2) по аналогии с двухслойными итерационными методами для решения систем линейных алгебраических уравнений можно записать в виде:

(6)

где — итерационные параметры, a — квадратная матрица n х n, имеющая обратную.

При использовании записи (6) метод Ньютона (5) соответствует выбору:

Система линейных уравнений (5) для нахождения нового приближения может решаться итерационно. В этом случае мы имеем двухступенчатый итерационный процесс с внешними и внутренними итерациями. Например, внешний итерационный процесс может осуществляться по методу Ньютона, а внутренние итерации — на основе итерационного метода Зейделя

При решении систем нелинейных уравнений можно использовать прямые аналоги стандартных итерационных методов, которые применяются для решения систем линейных уравнений. Нелинейный метод Зейделя применительно к решению (2) дает:

(7)

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

Основные вычислительные сложности применения метода Ньютона для приближенного решения систем нелинейных уравнений связаны с необходимостью решения линейной системы уравнений с матрицей Якоби на каждой итерации, причем от итерации к итерации эта матрица меняется. В модифицированном методе Ньютона матрица Якоби обращается только один раз:

(8)

Выбор модельной функции

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

Функция f создаёт систему из n нелинейных уравнений, решение которой не зависит от числа уравнений и для каждой из n переменных равно единице.

Программа для тестирования на модельной функции c результатами решения системы алгебраических нелинейных уравнений с помощью библиотечной функции optimize.root для разных методов отыскания корней

Только один из методов, приведенных в документации [3] прошёл тестирование по результату решения модельной функции, это метод ‘krylov’.

Решение для n=100:

Solution:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1.]
Krylov method iteration = 4219
Optimize root time 7.239 seconds:

Вывод: С увеличением числа уравнений вдвое заметно появление ошибок в решении. При дальнейшем увеличении n решение становится не приемлемым, что возможно из-за автоматической адаптации к шагу, эта же причина резкого падения быстродействия. Но это только моё предположение.

Программа для тестирования на модельной функции c результатами решения системы алгебраических нелинейных уравнений с помощью программы написанной на Python 3 с учётом соотношений (1)-(8) для отыскания корней по модифицированному методу Ньютона

Решение для n=100:

Solution:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1.]
Newton iteration = 13
Newton method time 0.496 seconds

Решение для n=200:

Solution:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1.]
Newton iteration = 14
Newton method time 1.869 seconds

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

Получим:
Solution:
[ 0.96472166 0.87777036 0.48175823 -0.26190496 -0.63693762 0.49232062
-1.31649896 0.6865098 0.89609091 0.98509235]
Newton iteration = 16
Newton method time 0.046 seconds

Вывод: Программа работает и при изменении модельной функции.

Теперь вернёмся к начальной модельной функции и проверим более широкий диапазон для n, например в 2 и 500.
n=2
Solution:
[1. 1.]
Newton iteration = 6
Newton method time 0.048 seconds
n=500

Численные методы решения нелинейных уравнений

В этом разделе приведены примеры решенных задач по теме нахождения корней нелинейных уравнений численными методами. На первом этапе обычно происходит локализация (отделение) корней (графически или аналитически), на втором — уточнение (поиск) корней разными методами: Ньютона, Стеффенсена, секущих, хорд, касательных, простой итерации.

Примеры приближенных решений нелинейных уравнений онлайн

Задача 1. Методом бисекции найти решение нелинейного уравнения на отрезке $[a;b]$ с точностью $\varepsilon = 10^<-2>$. Выбрав полученное решение в качестве начального приближения, найти решение уравнения методом простой итерации с точностью $\varepsilon=10^<-4>$. Для метода простой итерации обосновать сходимость и оценить достаточное для достижения заданной точности число итераций.

Задача 2. Отделить корни нелинейного уравнения аналитически $2 arcctg x -x+3=0$.

Задача 3. Отделить корни нелинейного уравнения аналитически и уточнить один из них методом проб с точностью до 0,01. $$3x^4-8x^3-18x^2+2=0.$$

Задача 4. Отделить корни нелинейного уравнения графически (например, в среде EXCEL) уточнить один из них методом проб с точностью до 0,01. $$x^2-20 \sin x =0.$$

Задача 5. Отделите корни уравнения графически и уточните один из них методом хорд с точностью до 0,001. Уточните один из корней этого уравнения методом касательных с точностью до 0,001. $$ \sqrt — \cos 0.387 x =0.$$

Задача 6.Отделить корни уравнения графически и уточнить один из них методом итераций с точностью до 0,001. $$\sqrt=\frac<1>.$$

Задача 7. На отрезке $[0;2]$ методом Ньютона найти корень уравнения $-x^3-2x^2-4x+10=0$ с точностью 0,01.

Задача 8. Методом хорд найти отрицательный корень уравнения $x^3-2x^2-4x+7=0$ с точностью 0,0001. Требуется предварительное построение графика функции и отделение корней.

Задача 9. Решить нелинейные уравнения с точностью до 0.001. $$1)\, x^3-12x-5=0\, (x \gt 0), \, 2)\, \tan x -1/x=0. $$


источники:

http://habr.com/ru/post/419453/

http://www.matburo.ru/ex_cm.php?p1=cmnu