Пусть приближенные значения неизвестных системы уравнений
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).
Итерационный процесс продолжается до тех пор, пока изменения всех неизвестных в двух последовательных итерациях не станут малыми, т.е. абсолютные величины их разностей не станут меньшими заданного малого числа.
При использовании данного метода успех во многом определяется удачным выбором начальных приближений неизвестных: они должны быть достаточно близкими к истинному решению. В противном случае итерационный процесс может не сойтись.
Общие сведения. Данная программа разработана как учебная и в силу этого не имеет кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой исполняемый файл kursach.ехе.
Для функционирования программы необходим персональный компьютер с установленной операционной системой MS-DOS 3.30 и выше или полностью совместимой с ней.
Исходный текст программы написан на языке программирования высокого уровня С++ фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле kursach.срр в форме пригодной к использованию его как текстового документа в среде ДОС. Исходный текст программы приведен в приложении 1.в
Функциональное назначение. Данная программа решает систему нелинейных уравнений методами Ньютона и простых итераций. Программа не является универсальной и решает только заложенную в неё систему только из двух нелинейных уравнений.
Для расширения функциональности программы необходимо внести соответствующее изменение в исходный текст как то: изменение исходной системы, производных, якобиана системы.
Описание логической структуры. Блок-схема программы приведена в приложении 4.
При написании программы использовались математические методы, описанные в теоретической части настоящей работы.
Функционально программа состоит из трех функций main, newton, iterac. Взаимодействие функций между собой производится путем вызова из функции main функций newton и iterac с передачей параметров, в качестве которых используются переменные х и у в которые помещены начальные приближения , запрашиваемые у пользователя со стандартного устройства ввода, для обеспечения исходных данных к методам решения. После окончания расчета функции newton и iterac возвращают в функцию main результаты расчета в виде пары чисел, которые представляют собой корни системы уравнений, выводимые на стандартное устройство вывода для дальнейшего анализа пользователем.
Используемые технические средства. Для функционирования программы пригодна минимальная конфигурация ЭВМ на основе процессорной серии Ix86 фирмы Интел с 640 Кб оперативной памяти и накопителем на гибком магнитном диске.
Для вывода информации пригоден графический адаптер CGA и однотипный видеомонитор.
Вызов и загрузка программы осуществляется как с гибкого диска так и с накопителя типа «винчестер». При любом вызове в командной строке ДОС следует ввести полное имя исполняемого файла с указанием пути (если таковой не описан в переменной PATH файла AUTOEXEC.BAT).
Входные и выходные данные. В качестве входных данных для программы используется пара вещественных чисел представляющих собой приближенные значения корней системы уравнений, решаемой программой. Числа могут быть как с дробной частью так и без неё.
В качестве выходных данных программа выдает на стандартное устройство вывода информации пару чисел, представляющих собой истинное решение системы уравнений в вещественной форме. В случае если количество знаков после десятичной точки велико, то вывод производится в экспоненциальной форме.
Общие сведения. Данная программа разработана как учебная и в силу этого не имеет кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой исполняемый файл grafika.exe и файлов поддержки:
Таблица 1.
Egavga.bgi | библиотека взаимодействия с графическим адаптером |
bold.chr | библиотека жирного шрифта |
euro.chr | библиотека шрифта «euro» |
goth.chr | библиотека готического шрифта |
lcom.chr | библиотека шрифта типа «Комплекс» |
litt.chr | библиотека шрифта типа «small» |
sans.chr | библиотека шрифта типа «Сан_сериф» |
scri.chr | библиотека шрифта типа «Скрипт» |
simp.chr | библиотека шрифта типа «Симплекс» |
trip.chr | библиотека шрифта типа «Триплекс» |
tscr.chr | библиотека шрифта тапа «Триплекс_Скрипт» |
Вышеприведенные файлы необходимо разместить в той же директории, что и основной модуль.
Для функционирования программы необходима операционная система MSDOS 3.30 и выше или полностью совместимой с ней.
Исходный текст программы написан на языке программирования высокого уровня С++ фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле grafika.срр в форме пригодной к использованию его как текстового документа в среде ДОС. Исходный текст программы приведен в приложении 2.
Функциональное назначение. Программа предназначена для демонстрации основных графических возможностей языка С++ в режиме VGA. Программа дает представление о структуре графических возможностей языка и способах их применения на практике. Функциональным ограничением программы является невозможность её эксплуатации на компьютерах, оснащенных видеоадаптерами, стандарт которых отличается от EGA-VGA.