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

Численное решение нелинейного уравнения. Этапы решения.

f(x)=0, где f(x) – произвольная функция, наиболее распространенная в инж. Практике задача по отысканию корней.

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

Задача нахождения корней состоит из 2 этапов:

1. Отделение корней – определение числа корней и их примерного расположения на числовой оси.

Наиболее применим графический способ отделения корней, т. е. отыскание точек пересечения ф. f(x) с осью абсцисс:

[a;b] – интервал изоляции корня. Для каждого корня уравнения определяется интервал его изоляции [a;b]. На отрезке [a;b] должен находиться 1 корень.

2. Уточнение корней – вычисление каждого корня с заданной степенью точности.

Классификация методов уточнения корней :

1) Метод половинного деления отрезка(дихотомии).

Отрезок [a;b], содержащий единственный корень, делят пополам, отбрасывают ту половину, где нет корня. Процесс повторяется до тех пор, пока длина отрезка не станет меньше заданной погр. E.

Достоинства: прост и надежен, всегда сводится к решению независимо от вида ф. f(x). Недостаток: самый медленный из всех известных методов уточн. Корня.

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

Достоинство: простота. Недостаток: быстрота сходимости к решению сильно зависит от вида ф. f(x).

3) Метод касательных( метод Ньютона)

В качестве приближения к корню ищется точка пересечения касательной с осью абсцисс.

Достоинство: высокая скорость. Недостатки: ограничения на вид ф. (должна быть дифференцируема, f’(x) и f’’(x) не должны менять знак на интервале уточнения корня).

4) Комбинированный метод – объединение методов хорд и касательных.

Приближение к корню на каждой итерации происходит одновременно с 2 сторон интервала [a;b]. Одной стороны строится хорда, а с другой касательная.

Достоинство: работает быстрее, чем методы хорд и касательных. Недостатки: f(x) должна быть дифференцируема; f’(x) иf’’(x) не должны менять знак на интервале уточнения корня; трудности с дифф-ем f(x).

5) Метод простой итерации.

Исходное нелинейное уравнения заменяется равносильным уравнением x=g(x)и с помощью сходящегося итерационного процесса происходит приближение к корню, пока не достигнет предела заданной погрешности Е.

45)Уточнение корня нелинейного уравнения методом половинного деления(дихотомии). Алгоритм. Требуется вычислить корень уравнения f(x)=0 на [a;b] с заданной погрешностью Е. Отрезок [a;b], содержащий единственный корень, делят на 2 половины, отбрасывают ту из них, где нет корня. Процесс продолжается до тех пор, пока длина отрезка не станет меньше заданной погрешности Е. Алгоритм метода:

46)Уточнение корня нелинейного уравнения методом хорд. Схема алгоритма.Требуется вычислить корень уравнения f(x)=0 на [a,b] с заданной погрешностью е. Геометр-ки метод основан на построении последовательности хорд. Ур-е хорды . В данном методе процесс итерации состоит в том, что в качестве приближений к корню уравнение f(x)=0 принимаются значения х1, х2… хi точек пересечения хорды АВ с осью абсцисс. Если f(a)>0 , то левая граница a неподвижна, х0=b и из урав. хорды получим: Если f(a) 0 и f’’(x)>0 при a≤x≤b. Тогда для приближения к корню со стороны границы а используем построение хорды, а со стороны границы b – касательная. На 1й итерации строим хорду А0В0 и проводим касательную в точку В0. Левую границу а переносим в а1, правую – b1. На каждой итерации для вычисления новых границ интервала используют ф-лы хорд и касательных : , . Сужение интервала проводим до тех пор пока он не станет

Методические указания

Министерство образования И НАУКИ Российской Федерации

ДАГЕСТАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ В ЭКОНОМИКЕ

к выполнению лабораторного практикума

по дисциплине «Вычислительные методы»

Часть 1. Численное решение нелинейных уравнений

Махачкала, 2004 г.

Методические указания к выполнению лабораторного практикума по дисциплине «Вычислительные методы». Часть 1 — Численное решение нелинейных уравнений. Махачкала, ДГТУ, 2004,

Методические указания предназначены для студентов дневной и заочной форм обучения специальностей 351401 — «Прикладная информатика в экономике» и 351403 — «Прикладная информатика в юриспруденции».

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

Составители: зав. кафедрой ИСЭ, д. э.н., проф. ;

ст. преп. кафедры ИСЭ, к. ф.-м. н.

научно-исследовательского и технологического

института при Правительстве Республики,

, зав. кафедрой высшей

математики ДГТУ, профессор

Печатается по решению Совета Дагестанского технического университета

от «______»______________2004 г.

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

Данные методические указания посвящены вопросам практического использования вычислительных методов.

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

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

В нумерации формул первая цифра соответствует номеру лабораторной работы, а вторая – порядковому номеру формулы в лабораторной работе.

Решение задач ориентировано на использование ПЭВМ. Указания являются полезными при выполнении лабораторных работ по курсам:

— прогнозирование социально-экономических процессов в Дагестане;

— имитационное моделирование экономических процессов;

— статистика правонарушений и экономические преступления в РД;

— анализ и прогнозирование правонарушений;

Структура отчета по лабораторной работе

1. Постановка задачи.

2. Теоретические сведения о методе решения задачи.

3. Блок-схема алгоритма решения задачи.

4. Текст программы.

5. Результаты и их анализ.

Отчет по лабораторной работе студент пишет от руки в ученической тетради и защищает его перед преподавателем.

Лабораторная работа №1

РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

методом половинного деления

В общем случае нелинейное уравнение можно записать в виде:

(1.1.)

где функция определена и непрерывна на конечном или беско­нечном интервале .

Всякое число , обращающее функцию в нуль, т. е. такое, при котором , называется корнем уравнения (1.1). Число x называется корнем k-й кратности, если при вместе с функцией равны нулю ее производные до (k-1)-го порядка вклю­чительно:

Однократный корень называется простым.

Два уравнения F(x) и G(x) называются равносильными (экви­валентными), если всякое решение каждого из них является реше­нием и для другого, т. е. множества решений этих уравнений сов­падают.

Нелинейные уравнения с одним неизвестным подразделяются на алгебраические и трансцендентные.

Уравнение (1.1) называется алгебраическим, если функция является алгебраической функцией. Путем алгебраических преоб­разований из всякого, алгебраического уравнения можно получить уравнение в канонической форме:

где ,,…, коэффициенты уравнения, а неизвестное. Показатель п называют степенью алгебраического уравнения.

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

При приведении алгебраического уравнения (1.1) к канони­ческой форме будем иметь те же корни, что и для исходного урав­нения. Однако при этом могут появиться некоторые лишние корни. Например, уравнение

может быть приведено к канонической форме:

.

Если функция F(x) не является алгебраической — показательной, логарифмической, тригонометрической, то уравнение (1.1) называется трансцендентным. Примерами трансцендентных урав­нений являются:

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

Поскольку подавляющее большинство нелинейных уравнений с одной переменной не решается путем аналитических преобразо­ваний (точными методами), на практике их решают только числен­ными методами. Решить такое уравнение — это значит: установить, имеет ли оно корни, сколько корней, и найти значения корней с за­данной точностью. Задача численного нахождения действитель­ных и комплексных корней уравнения (1.1) обычно состоит из двух этапов: отделение корней, т. е. нахождение достаточно малых окрестностей рассматриваемой области, в которых содержится одно значение корня, и уточнение корней, т. е. вычисление корней с заданной степенью точности в некоторой окрестности.

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

Остановимся подробно на наиболее часто используемых на ЭВМ методе половинного деления

1.2. ОТДЕЛЕНИЕ КОРНЕЙ

Первый этап численного решения уравнения (1.1) состоит в отделении корней, т. е. в установлении «тесных» проме­жутков, содержащих только один корень. Отделение корней во многих случаях можно произвести графически. Принимая во вни­мание, что действительные корни уравнения (1.1)—это точки пересечения графика функции F(x) с осью абсцисс, достаточно построить график F(x) и отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив уравнение (1.1) равносильным ему уравнением

(1.2)

В этом случае строятся графики функций f1(x) и f2(x), а потом на оси Ох отмечаются отрезки, локализующие абсциссы точек пересечения этих графиков.

ПримерДля графического отделения корней уравнения sin – lnx = 0 выгодно отдельно построить графики функций sin2x и ln (х) (рис. 1).

Из графика следует, что уравнение имеет корень, принадле­жащий отрезку [1; 1,5|.

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

1) если непрерывная на отрезке [а; b] функция F(x) принимает на его концах значения разных знаков (т. е. F(a)∙F(b) 0, так что отрезком отделения корней можно считать [1,3; 1,5].

Для отделения корней можно эффективно использовать ЭВМ.

Пусть имеется уравнение F(x)=0, причем можно считать, что все интересующие нас корни находятся на отрезке [A; B], в котором функция F(x) определена, непрерывна и F(A)∙F(B) -10

при x 1. Тогда вместо функции у = φ(х) рассмот­рим функцию х = g(у), обратную для φ(х). Будем теперь решать урав­нение у = g(у) (или, в старых обозначениях, х = g(х)). По свойству производных обратных функций теперь на отрезке [а; b] будет иметь место:

,

так что для уравнения х=g(х), равносильного исходному, условие (3) теоремы 2.1 оказывается выполненным.

Для ручных вычислении (с помощью калькулятора) корня по методу итераций может ис­пользоваться расчетная таблица, содержащая обычную поопера­ционную запись формулы φ(х) (табл. 2.1). Полученное в результате одного «прохода» вычислений в правом столбце очередное прибли­жение корня сразу же переносится в следующую строку столбца хп и процесс повторяется.

Пример 2.1. Уточнить с помощью калькулятора корень урав­нения sin2x lnx = 0 на отрезке [1,3;1,5] методом итераций с точностью до 10-4.

Исходное уравнение можно привести к итерационному виду несколькими способами, например:

Исследуем возможность применения к полученным представле­ниям метода итераций.

1. В первом случае φ(х) = ехр (sin2х). Функция f(x) определена и дифференцируема на отрезке [1,3; 1,5|, однако второе условие теоремы 1.1 не выполняется: с помощью калькулятора получаем f(1,3)= 1,674478, т. е. уже в левом конце отрезка значение функции выходит за пределы отрезка.

2. Рассмотрим второе представление. Уравнение, равносильное исходному на отрезке [1,3; 1,5], получается при

Здесь φ(х) =(π – arcsin lnx)/2. Замечаем, что для всех х отрезка [1,3; 1,5], будет , следовательно, функция f(х) монотонно убывает на этом отрезке.

Вычислим ее значение в концах отрезка [1,3; 1,5]:

Так как полученные значения входят в отрезок [1,3; 1,5], а функ­ция φ(x) монотонна, то отсюда следует, что второе условие теоре­мы 2.1 выполняется.

Для проверки третьего условия исследуем модуль производ­ной функции φ(x) на отрезке [1,3; 1,5]:

.

Найдем производную функции

.

Заметим, что φ1′(х) на отрезке [1,3; 1,5] всюду отрицательна. Это значит, что φ1(х) = |f‘(x)| на этом отрезке убывает и достигает мак­симума на левом конце: | φ'(1,3)| =0,3846153.

Таким образом, условие (3) теоремы 2.1 будет выполнено, если принять q = 0,39. Уточнение корня уравнения (2.13) с нулевым значением x0 =1,4 на калькуляторе приведено в таблице 2.2.

Используя оценочную формулу (2.11) и принимая во внимание исходные значения ε = 10-4 и (q = 0,39, уже для третьего прибли­жения имеем: х3 — x2

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

Введение

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

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

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

(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


источники:

http://pandia.ru/text/77/381/21900.php

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