При написании программы решения системы из двух нелинейных уравнений мною использовались два известных и широко применяемых численных метода. Это метод Ньютона и метод простых итераций.
Метод Ньютона. Этот метод обладает быстрой сходимостью и сравнительно хорошей точностью вычислений. В случае одного уравнения F(x)=0 алгоритм метода был легко получен путем записи уравнения касательной к кривой y=F(x). В основе метода ньютона для системы уравнений лежит использование разложения функций Fi(x1,x2,...xn) в ряд Тейлора, причем члены, содержащие вторые (и более высоких порядков) производные, отбрасываются.
Пусть приближенные значения неизвестных системы уравнений
F1(x1,x2,...xn)=0,
F2(x1,x2,...xn)=0,
................ (1)
Fn(x1,x2,...xn)=0,
(например, полученные на предыдущей итерации) равны соответственно a1,a2,...an. Задача состоит в нахождении приращений (поправок) к этим значениям x1,x2,....,xn, благодаря которым решение системы (1) запишется в виде:
xi=ai+x1, x2=a2+x2,...,xn,=an+xn. (2)
Проведем разложение левых частей уравнений (1) в ряд Тейлора, ограничиваясь лишь линейными членами относительно приращений:
F1(x1,x2,...xn)F1(a1,...an)+
F2(x1,x2,...xn)F2(a1,...an)+
..............................................
Fn(x1,x2,...xn)Fn(a1,...an)+ .
Поскольку в соответствии с (1) левые части этих выражений должны обращаться в нуль, то приравняем нулю и правые части. Получим следующую систему линейных алгебраических уравнений относительно приращений:
=-F1
=-F2 (2)
............................
=-Fn
Значения F1,F2,...,Fn и их производные вычисляются при x1=a1, x2=a2,...xn=an.
Определителем системы (2) является якобиан:
J=
Для существования единственного решения системы (2) он должен быть отличным от нуля на каждой итерации.
Таким образом, итерационный процесс решения системы уравнений (1) методом Ньютона состоит в определении приращений x1,x2,...xn, к значениям неизвестных на каждой итерации. Счет прекращается, если все приращения становятся малыми по абсолютной величине: max|xi|<. В методе
i
Ньютона также важен выбор начального приближения для обеспечения хорошей сходимости. Сходимость ухудшается с увеличением числа уравнений системы.
В качестве примера рассмотрим использование метода Ньютона для решения системы двух уравнений
F1(x,y)=0, (3)
F2(x,y)=0.
Пусть приближенные значения неизвестных равны a,b. Предположим, что якобиан системы (3) при x=a; y=b отличается от нуля, т.е.:
J=
Тогда следующие приближения неизвестных можно аписать в виде
x=a- (F1
Величины, стоящие в правой части, вычисляются при x=a, y=b.
При программировании данного метода в качестве исходных данных задаются начальные приближения неизвестных a,b, погрешности . Если итерации сойдутся, то выводятся значения x,y; в противном случае происходит вывод x,y по мере работы программы до прерывания ее пользователем.
Метод простой итерации.
Систему уравнений (1) представим в виде
x1=f1(x1...xn),
x2=f2(x1...xn), (4)
.............
xn=fn(x1...xn).
Алгоритм решения этой системы методом простой итерации напоминает метод Гаусса - Зейделя, используемый для решения систем линейных уравнений.
Пусть в результате предыдущей итерации получены значения неизвестных x1=a1, x2=a2,..., xn=an. Тогда выражения для неизвестных на следующей итерации имеют вид
x1=f1(a1,a2,...,an),
x2=f2(x1,a2,...,an),
..................
xi=fi(xi,...,xi-1,ai,...,an),
..................
xn=fn(x1,...,xn-1,an).
Итерационный процесс продолжается до тех пор, пока изменения всех неизвестных в двух последовательных итерациях не станут малыми, т.е. абсолютные величины их разностей не станут меньшими заданного малого числа.
При использовании данного метода успех во многом определяется удачным выбором начальных приближений неизвестных: они должны быть достаточно близкими к истинному решению. В противном случае итерационный процесс может не сойтись.
Часть первая.