Рефераты. Языки и технологии программирования p> Определителем системы (2) является якобиан:

J= [pic]

Для существования единственного решения системы (2) он должен быть отличным от нуля на каждой итерации.

Таким образом, итерационный процесс решения системы уравнений (1) методом Ньютона состоит в определении приращений Dx1, Dx2,... Dxn, к значениям неизвестных на каждой итерации. Счет прекращается, если все приращения становятся малыми по абсолютной величине: max| Dxi|< e. В методе

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

В качестве примера рассмотрим использование метода Ньютона для решения системы двух уравнений

F1(x,y)=0, (3)

F2(x,y)=0.
Пусть приближенные значения неизвестных равны a,b. Предположим, что якобиан системы (3) при x=a; y=b отличается от нуля, т.е.:

J=[pic]№0.
Тогда следующие приближения неизвестных можно аписать в виде

x=a-[pic](F1[pic]

[pic]

Величины, стоящие в правой части, вычисляются при x=a, y=b.

При программировании данного метода в качестве исходных данных задаются начальные приближения неизвестных a,b, погрешности e. Если итерации сойдутся, то выводятся значения 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 |библиотека шрифта тапа |
| |«Триплекс_Скрипт» |

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

Для функционирования программы необходима операционная система MS DOS
3.30 и выше или полностью совместимой с ней.

Исходный текст программы написан на языке программирования высокого уровня С++ фирмы Borland версии 3.1 для DOS и WINDOWS и содержится в файле grafika.срр в форме пригодной к использованию его как текстового документа в среде ДОС. Исходный текст программы приведен в приложении 2.

Функциональное назначение. Программа предназначена для демонстрации основных графических возможностей языка С++ в режиме VGA. Программа дает представление о структуре графических возможностей языка и способах их применения на практике. Функциональным ограничением программы является невозможность её эксплуатации на компьютерах, оснащенных видеоадаптерами, стандарт которых отличается от EGA-VGA.

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

Структурно программа grafika.срр представляет ряд функций, которые кратко описаны в таблице.2

Таблица.2
|наименование | |
|функции в |краткое описание |
|программе | |
|main |главная функция из которой вызываются все другие |
| |функции |
|demoline |функция демонстрации рисования линий с |
| |применением оператора lineto различными цветами |
|democircle |функция демонстрации рисования окружностей |
| |произвольного радиуса с произвольным выбором |
| |цвета и координат центра |
|demopix |функция рисования точек в произвольном месте |
| |экрана с произвольным цветом |
|demopieslice |функция рисования закрашенных секторов с |
| |произвольным расположением на экране, |
| |произвольным выбором угла, радиуса, стиля |
| |заполнения и цвета |
|demotext |функция демонстрации вывода текстовых данных в |
| |графическом режиме всеми доступными в языке С++ |
| |стандартными способами и шрифтами c применением |
| |библиотек шрифтов, перечисленных в таблице.1 |
|mainwindow |функция формирования на экране графического окна |
| |с указанным заголовком *header |
|drawborder |функция прорисовки границ графического экрана |
|statusline |функция формирования статусной строки с выводом |
| |сообщения *msg |
|demoarcs |функция вывода на экран дуг (частей окружностей) |
| |с произвольным начальным углом, цветом и |
| |координатами центра |
|demobars |функция вывода на экран определенного числа |
| |одинаковых прямоугольников с произвольно |
| |изменяющимся цветом |
|demo3dbars |функция демонстрации вывода на экран |
| |прямоугольных параллелепипедов произвольного |
| |размера, способа заполнения передней грани, и |
| |цвета, а так же расположения на экране |
|diagram |функция демонстрации практического применения |
| |функции void pieslice(...) языка С++ для |
| |построения круговой диаграммы по заданным |
| |параметрам |
|endpage |функция демонстрации практического применения |
| |рисования линий и секторов с циклически |
| |изменяющимися параметрами |
|endpage1 |функция практического применения операторов языка|
| |С++ для построения простого калейдоскопа |
|endpage2 |завершающая страница, сообщающая пользователю о |
| |завершении работы программы |

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

Каждая функция вывода изображения вызывает функцию формирования графического окна с необходимым заголовком а также определяет визуальные границы экрана при помощи функции drawborder и помещает в нижнюю часть экрана статусную строку при помощи функции statusline с необходимой надписью. Затем начинается процесс вывода на экран самого изображения, демонстрирующего работу той или иной графической функции языка С++. После прекращения работы управление переходит в главную функцию, откуда вызывается следующая функция вывода изображения.

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

Используемые технические средства. Для правильного функционирования программы необходимо применять следующие компоненты аппаратного комплекса: персональный компьютер класса Ix86 с 640Кб ОЗУ, оснащенный одним накопителем на гибком магнитном диске 720Кб или накопителем типа
«винчестер», а так же видеоадаптером EGA или VGA
(предпочтительно).Компьютер рекомендуется оснастить видеомонитором, соответствующим видеоадаптеру.

Вызов и загрузка. Для правильного функционирования программы необходимо разместить основной модуль и сопутствующие файлы в одной директории. Для вызова программы необходимо в командой строке ДОС набрать полное имя основного модуля. Никаких параметров в командной строке не требуется.

Входные и выходные данные. Данная программа является демонстрационной и не использует входных данных от пользователя. Выходными данными являются результаты работы функций по выводу изображений на экран. Параметры изображения сохраняются только на экране в процессе работы программы
(данной функции).

Часть третья

Программа электронной записной книжки


Общие сведения. Данная программа разработана как учебная и в силу этого не имеет кодового обозначения предусмотренного ГОСТом 19.402-78 и представляет собой исполняемый файл notebook.exe и создаваемые ею в процессе работы файлы данных пользователя, структура которых приводится в приложении 3.

Для функционирования программы необходима операционная система MS DOS
3.30 и выше или полностью совместимой с ней.

Исходный текст программы написан на языке программирования высокого уровня Турбо Паскаль версии 7.0 фирмы Borland для DOS и WINDOWS с применением библиотеки Turbo Vision и содержится в файле notebook.pas в форме пригодной к использованию его как текстового документа в среде ДОС, и приведен в приложении 3.

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

Описание логической структуры. Программа не несет в себе определенного алгоритма в стандартном понимании, а является объектно- ориентированной программой (применены специфические конструкции языка - объекты).

В силу сложившихся традиций и особенностей языка Турбо Паскаль данная программа представляет собой ряд процедур, выполняющих определенную роль и взаимодействующих между собой в рамках исполнительного модуля. Каждая функция выполняет определенное действие исходя из параметров полученных от других функций или от пользователя.
Основной текст программы можно разделить на две части: первая - описание переменных и объектов; вторая - реализация процедур. Ниже в таблице 3 приводятся процедуры, применяемые в программе, а в таблице 4 - объекты.

Таблица 3
|tdlgwin.handleEvent | |
|Tnotebook.FileOpen |открывает файл данных |
|Tnotebook.FileSave |сохраняет файл данных |
|Tnotebook.ChangeDir |изменяет текущий каталог |
|Tnotebook.DOSCall |временный выход в ДОС |
|Tinterior.ReadFile |читает содержимое файла данных в массив |
| |LINES |
|Tinterior.Draw |выводит данные в окно просмотра |
|Control |получает команду из основного диалогового|
| |окна |
|Tinterior.HandleEvent |основная процедура обработки событий и |
| |операций с файлом данных |
|DEleteItem |удаляет указанный в Location элемент |
| |данных |
|AddItem |добавляет новый или редактирует имеющийся|
| |элемент данных |
|SearchItem |осуществляет поиск необходимого элемента |
| |данных по контексту (первые символы) |
|Tnotebook.Work |создает окно, в которое в последствии |
| |будут выводиться данные |
|Tnotebook.HandleEvent |обработчик событий программы связанных с |
| |различными объектами |
|Tnootebook.InitMenuBar |создание верхнего Bar-меню |
|Tnotebook.InitStatusLin|формирование строки статуса |
|e | |

таблица 4.
|Tworkwin |объект-потомок от Twindow - стандартного |
| |объекта ТурбоВижн создает рамочное окно с|
| |полосами прокрутки для управления |
| |встроенным в него объектом Tinterior |
|Tdlgwin |объект-потомок от Tdialog - стандартного |
| |объекта ТурбоВижн создает диалоговое окно|
| |для выбора режима работы |
|Tinterior |объект-потомок от Tscroller - |
| |стандартного объекта ТурбоВижн |
| |обуславливает внутреннюю часть рамочного |
| |окна Tworkwin, создает прокручиваемое |
| |окно с записями из файла данных и с |
| |помощью диалогового окна Tdlgwin |
| |управляет работой с этими записями |
|Tnotebook |оъект-потомок от Taplication стандартного|
| |объекта ТурбоВижн обеспечивающего внешний|
| |вид прикладной программы. |

Используемые технические средства. Для правильного функционирования программы необходимо применять следующие компоненты аппаратного комплекса: персональный компьютер класса Ix86 с 640Кб ОЗУ, оснащенный одним накопителем на гибком магнитном диске 720Кб или накопителем типа
«винчестер», а так же видеоадаптером EGA или VGA
(предпочтительно).Компьютер рекомендуется оснастить видеомонитором, соответствующим видеоадаптеру.

Вызов и загрузка. Для вызова программы необходимо в командой строке
ДОС набрать полное имя основного модуля. Никаких параметров в командной строке не требуется.

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

Приложения

приложение 1

#include
#include
//описание переменных, используемых в программе double pi=3.14,a=1.8,b=-2.0,c=0.1,d=1.6,e=0.9,eps=0.000001; int i=0; double x,y;
//описания функций решения методами Ньютона и простых итераций extern double newton(double xn,double yn); extern double iterac(double xn,double yn);

int main(void)
{
//запрос начального приближения у пользователя scanf("%f",&x); scanf("%f",&y);
//вывод результатов через вызовы функций на экран printf ("Окончательное решение по методу Ньютонаn"); printf ("%gt%gn", newton(x,y)); printf ("Окончательное решение по методу итерацийn"); printf ("%gt%gn", iterac(x,y)); return (0);
}
//функция решения системы уравнений методом ньютона double newton(double xn,double yn)
{ double f1,f2,xxn,yyn; double df1dx,df1dy,df2dx,df2dy,dxy;

do
{ i++;
//описания исходных ураванений f1=sin(xn+a)+b*yn+c; f2=cos(yn+d)+e*xn;
//производные df1dx=cos(xn+a); df1dy=b; df2dx=e; df2dy=-sin(yn+d);
//якобиан системы dxy=df1dx*df2dy-df1dy*df2dx;
//очередное значение х xxn=xn-((f1*df2dy-f2*df1dy)/dxy);
//очередное значение y yyn=yn+((f1*df2dx-f2*df1dx)/dxy);
//проверка точности решения и окончания счета if (fabs(xxn-xn)


Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.