1. Знакомство с численными методами решения нелинейных алгебраичесмких уравнений и их систем.
2. Разработка численной ММ, реализующей один из методов.
3. Решение систем нелинейных уравнений при помощи средств MATLAB.
Во многих случаях применение линейных моделей даже для приближенного описания реальных явлений уже недостаточно. Одной из наиболее известных классических нелинейных задач является нахождение нулей полинома. Среди источников систем нелинейных уравнений можно выделить задачи вычисления интегралов (квадратурные формулы Гаусса для вычисления площадей), задачи минимизации функции, задачи интерполяции данных в нелинейных моделях, усложненные модели популяций и т.д. [3]. При этом между линейными и нелинейными уравнениями можно выделить следующие фундаментальные отличия:
1. Любая невырожденная СЛАУ имеет единственное решение. Для нелинейных уравнений вещественных решений может не существовать вообще (как, например, для уравнения f(x)=sinx+2=0), или их может быть много, как в уравнении f(x)=sinx=0.
2. Любая СЛАУ может быть точно решена за фиксированное, конечное число арифметических операций (примерно n3/3 для метода исключений Гаусса). Только некоторые нелинейные уравнения специального вида могут быть решены точно за конечное число шагов (полиномы до 4-ой степени).
3. Значительные трудности обеспечения гарантий существования решения или сходимости к нему для СНЛУ.
Поэтому для большинства практических задач при решении нелинейных уравнений и их систем используют приближенные итерационные методы поиска некоторого вещественного решения. Нахождение всех решений нелинейных уравнений все еще остается предметом исследований (исключая полиномиальные уравнения).
В общем случае систему нелинейных уравнений можно представить в виде F(X)=0 или
f1 (x1, x2,…,xn)=0,
f2 (x1, x2,…,xn)=0, (1)
………………………
fn (x1, x2,…,xn)=0.
Тогда решением системы будет вектор X*={x1*, x2*,…, xn*}, при подстановке которого в каждое уравнение системы получаем истинные равенства F(X*)=0.
С учетом использования приближенных методов понятие «решение» расширяют.
Говорят, что приближенно удовлетворяет («решает») системе(у) F(X)=0, если , или приближенно равен решению X*, если .
Решение отдельного нелинейного уравнения f(x)=0 (f(x) – непрерывная функция на интервале [a,b]) с учетом возможности множества решений включает два этапа. На первом, который называется отделением корней, находятся интервалы [a,b]k, длина которых не больше единицы, а функция на концах имеет противоположные знаки. В качестве алгоритма можно использовать простой перебор значений аргумента с некоторым шагом h (xi+1=xi+h), вплоть до наступления моментов f(xi+1)×f(xi)<0. На втором для каждого выделенного k-го интервала уточняются значения корня одним из рассматриваемых далее методов.
Метод половинного деления (бисекции, дихотомии, проб) на каждом шаге итерации (сужения) делит текущий интервал [a,b] пополам: с=(a+b)/2.
Если выполняется условие |f(c)|<e, то c является искомым корнем. В противном случае выбирается та часть интервала ([a,c] или [c,b]), на границах которого функция имеет различные знаки. Далее процедура повторяется. Для устранения ситуаций «зацикливание», а также ускорения процесса нахождения корня желательно ограничить число приближений к корню 30 итерациями.
Метод простой итерации (последовательных приближений) предполагает замену исходного уравнения вида f(x)=0 на равносильное ему уравнение x=g(x). Далее текущее k-е приближение xk подставляют в правую часть преобразованного уравнения, получая в левой части более точное k+1-е xk+1=g(xk). Процесс начинается с произвольного выбора начального приближения x0 и заканчивается при выполнении условия |xk+1-xk|<e или |f(xk)|<e. Контроль сходимости метода может быть осуществлен при помощи условия |g¢(xk)|=|(g(xk)-g(xk-1))/(xk-xk-1)|<1, если оно не выполняется необходимо прекращать вычисления.
Кроме того, могут быть использованы метод Ньютона (касательных), метод хорд (ложного положения, пропорциональных частей), их комбинация, а также метод секущих [3, 6].
При решении систем нелинейных уравнений можно выделить метод простой итерации и метод Ньютона.
Метод простой итерации является развитием аналогичного метода для одного уравнения (аналогичен методу простой итерации для решения СЛАУ см. л.р. №3) и основан на допущении о возможности преобразования системы (1) к виду (2)
x1=g1 (x1, x2,…,xn),
x2=g2 (x1, x2,…,xn), (2)
………………………
xn=gn (x1, x2,…,xn).
Успех процесса приближения во многом определяется удачным выбором начального вектора Xk=1 (он должно быть достаточно близким к истинному решению). Метод гарантированно сходится, если выполняется условие ||J(x1, x2,…,xn)||<1, где J(x1, x2,…,xn) – матрица Якоби для функций g1,…, gn, а ||J|| – ее норма. Тогда для системы из двух уравнений
,
а начальное приближение должно удовлетворять условиям и .
Метод Ньютона реализует идею предварительной линеаризации исходной СНЛУ, он обеспечивает значительно более быструю сходимость и является наиболее распространенным методом. В основе его лежит разложение функции в ряд Тейлора. Тогда для системы (1), состоящей из двух уравнений для двух неизвестных, получим:
(3)
где R1 и R2 члены ряда более высоких порядков.
Если приращения Dx1 и Dx2 выбрать так, чтобы величины x1+Dx1 и x2+Dx2 были близки к корням, то левые части соответствующих уравнений системы (3) будут примерно равны нулю. Отбросив члены более высоких порядков, сведем задачу к решению системы линейных алгебраических уравнений:
или ,
где решением является вектор DХ={Dx1, Dx2}. Найденные значения Dx1, Dx2 используют в виде поправок к текущему приближению Xk+1=Xk+DХk. Расчет прекращается при выполнении условия DХk<e.
Примеры решения нелинейных уравнений и систем средствами MATLAB см. в прил. 4.