подпись, дата инициалы, фамилия
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Тамбовский государственный технический университет»
УТВЕРЖДАЮ Зав. кафедрой ___д.т.н.,проф. Д.Ю. Муромцев подпись, фамилия, инициалы ” ___ ’’ июня _2013 г
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
наименование учебной дисциплины
подпись, дата, инициалы, фамилия
номер, наименование
подпись, дата инициалы, фамилия
Тамбов 2013 г АННОТАЦИЯ
Курсовой проект по информатике на тему «Использование методов объектно-ориентированного программирования на примере численных методов выполнен по заданию № 12 (вычисление алгебраического уравнения методом хорд, интегрирование по общей формуле трапеции, решение дифференциального уравнения методом Эйлера) выполнил студент группы БИТ-11 Нурназаров Х.С. Проверил Артёмова С.В.
ВВЕДЕНИЕ …………………….……………………………………...…………......6 1 Постановка задачи …………...………..……………………..………………..7 2 Математическое описание методов …..……………..…………..…...…8 2.1 Метод хорд при приближенном вычислении алгебраических и трансцендентных уравнений …………………………………………………….……8 2.2 Вычисление общей формулы трапеции……………………….…......…………...9 2.3 Решение дифференциального уравнения методом Эйлера……………...............9 3 Блок-схема программы MAIN………………...…….....…………….......11 3.1 Блок-схема метода хорда объекта Thord..………………………...……………..12 3.2 Блок-схема метода трапеции объекта Tmettrap……………………….…….......13 3.3 Блок-схема метода Эйлера объекта Teyler……………………...……..…….......14 3.4 Диаграмма классов главной программы………………………………………...15 3.5 Диаграмма взаимодействий главной программы ……………………………….15 4 Описание стандартных модулей….…….…..…………………...............16 5 Описание не стандартных модулей….…………..…………………….18 5.1 Метод hord... ………..……...………………….………………...………………...18 5.2 Метод mettrap ……..………………………..…...………………...........................19 5.3 Метод eyler ……………………………….……..……………....………………...19 6 Описание интерфейса…….…………………………………..……………..20 7 Численные примеры …..………….…...………………………………….....21 Заключение…………………………….......………………………..…………......25 Список используемой литературы…..………………………..…..............26 Приложение…………………………………………..………….…………..…....27
Курсовая работа посвящена программной реализации трёх численных методов. В качестве языка программ курсовой работы выбран язык Паскаль. Выше упомянутый язык программирования предельно прост, логичен и эффективен. В Паскале сконцентрированы многие лучшие черты языков - предшественников. Сравнение этого языка с более простыми языками вроде Бейсика показывает, что текст алгоритма в виде программы на Бейсике содержит больше подробностей о действиях ПЭВМ, текст на Паскале яснее выражает математическую сущность алгоритма. Язык предоставляет пользователю большие возможности для решения широкого круга задач. Он содержит полный набор структур данных: простые переменные (целые, действительные, символьные, логические), массивы, строки, множества, записи и файлы. Хотелось бы отметить, что методы объектно-ориентированного программирования позволяют создавать расширяемые системы (extensible systems). Это одно из самых значительных достоинств ООП и именно оно отличает данный подход от традиционных методов программирования. Расширяемость extensibility означает, что существующую систему можно заставить работать с новыми компонентами, причем без внесения в нее каких-либо изменений. Компоненты могут быть добавлены на этапе выполнения. Расширение типа type extension и вытекающий из него полиморфизм переменных оказываются полезными преимущественно в обработке разнородных структур данных, в изменении поведения во время выполнения, в реализация родовых компонентов. Все выше перечисленное позволяет сделать вывод, что объектно-ориентированное программирование открывает не объятые просторы в развитии современной техники, и будущее, а вернее сказать уже настоящее именно за ним. Вместе с структурным программированием оно уже составляет авангард современной науки.
ПОСТАНОВКА ЗАДАЧ
1.1Составить программу приближенного вычисления методом хорд следующего уравнения: и описать выше указанный метод, составить блок-схему программы, описать стандартные и не стандартные функции, применяемые в задаче, описать интерфейс и привести пример. 1.2 Составить программу для вычисления общей формулы трапеции и описать выше указанный метод, составить блок-схему, описать стандартные и не стандартные функции, а так же интерфейс задачи. 1.3 Составить программу для вычисления дифференциального уравнения методом Эйлера , y(1)=1 [1;5] h=0,4 и описать выше указанный метод, составить блок-схему программы, описать стандартные и не стандартные функции, применяемые в задаче, описать интерфейс и привести пример.
2
2.1 Метод половинного деления при приближенном вычислении алгебраических и трансцендентных уравнений
Пусть корень уравнения f(x)=0отделен на отрезке [a, b], т.е. f(a)f(b)<0 и f ’(x) сохраняет знак (рис. 1). Рисунок 1 – График функции y=f(x). В качестве начального приближения корня возьмем точку c0 – середину отрезка: Если , то – искомый корень уравнения, если , то из двух отрезков [a, ] и [ , b] выбираем тот, на концах которого функция принимает значение разных знаков. Новый отрезок опять делим пополам и далее поступаем аналогично вышеизложенному. Длина каждого нового отрезка вдвое меньше длины предыдущего отрезка, т.е. за n шагов сократится в раз. Вычисления прекращаем, если длина отрезка [ , ], станет меньше заданной погрешности , т.е.: Достоинство метода половинного деления : более быстрая сходимость к заданной точности, чем у шагового. Недостаток: если на отрезке [а, b] содержится более одного корня, то метод не работает [1].
2.2 Вычисление определенного интеграла по формуле трапеции
которая и называется формулой трапеций. Эта формула тем точнее, чем больше n [1]. 2.3 Метод Эйлера для вычисления дифференциального уравнения Решить дифференциальное уравнение у/=f(x,y) численным методом - это значит для заданной последовательности аргументов , …, и числа , не определяя функцию у=f(x), найти такие значения , ,…, , что и F( )= . Таким образом, численные методы позволяют вместо нахождения функции У=f(x) получить таблицу значений этой функции для заданной последовательности аргументов. Величина называется шагом интегрирования. Метод Эйлера относиться к численным методам, дающим решение в виде таблицы приближенных значений искомой функции у(х). Он является сравнительно грубым и применяется в основном для ориентировочных расчетов. Однако идеи, положенные в основу метода Эйлера, являются исходными для ряда других методов. Рассмотрим дифференциальное уравнение первого порядка с начальным условием x= , y( )= Требуется найти решение уравнения на отрезке [а,b]. Разобьем отрезок [a, b] на n равных частей и получим последовательность , , ,…, , где = +ih (i=0,1,…, n), а -шаг интегрирования. В методе Эйлера приближенные значения у( )( ) вычисляютсяпоследовательно по формулам +hf( , ) (i=0,1,2…). При этом искомая интегральная кривая у=у(х), проходящая через точку ( , ), заменяется ломаной … с вершинами ( , ) (i=0,1,2,…); каждое звено этой ломаной, называемой ломаной Эйлера, имеет направление,совпадающее с направлением той интегральной кривой уравнения, которая проходит через точку . Если правая часть уравнения внекотором прямоугольнике удовлетворяет условиям: (N=const), (M=const), то имеет место следующая оценка погрешности:
3
Рисунок 2 – Блок-схема главной программы.
3.1 Блок-схема метода половинного деления объекта Tpoldel
Рисунок 3 – Блок-схема метода половинного деления.
3.2 Блок-схема метода трапеции объекта Tmettrap Рисунок 4 – Блок-схема метода трапеции.
3.3 Блок-схема метода Эйлера объекта Teyler
Рисунок 5 – Блок-схема метода Эйлера.
3.4 Диаграмма классов главной программы
Диаграмма 1 – Диаграмма классов главной программы.
3.5 Диаграмма взаимодействий главной программы
1 hord
2 mettrap
3 eyler
Диаграмма 2 – Диаграмма взаимодействий главной программы.
4 ОПИСАНИЕ СТАНДАРТНЫХ ФУНКЦИЙ
Все создаваемые модули используют процедуру Clrscr стандартного модуля Crt [4]. Указанная процедура очищает экран и помещает курсор в его верхний левый угол. Действует процедура следующим образом: все символы заменяются на пробел с
Window (1,1,60,20); Clrscr; Будет очищен прямоугольник 60*20, начинающийся в (1,1). Следующие задействованные всеми создаваемыми модулями процедуры: Write (), Writeln (), Read (), Readln () стандартного модуля System [5]. Объявление этого модуля утилитой Uses не обязательно, он автоматически подключается программными средствами Pascal. Перечисленные операторы являются операторами ввода, вывода. Привлечение этих процедур открывает возможность многократного использования одной и той же программы для вычисления с различными исходными данными [2]. При выполнении оператора ввода Read() переменным присваиваются значения исходных данных [2]. Процедура Readln() выполняет процедуру Read(), после чего переходит на следующую строку. Readln() без параметров осуществляет переход на начало следующей строки без предварительного считывания [2]. С помощью процедур вывода Write() строится последовательность значений, которая является результатом выполнения программы. Параметр, заключенный в круглые скобки может содержать указания ширины поля и количества десятичных знаков. Выражения вывода могут быть следующих типов: char, integer, real, string, packet string или boolean. Процедура вывода, таким образом, позволяет выделить из всего набора вычисленных значений те, которые служат ответом к решавшейся при выполнении программой задаче [2]. Процедура Writeln() выполняет процедуру Write(), а затем осуществляет переход в начало следующей строки. Процедуры ввода и вывода часто применяют вместе. Например, для ввода трех чисел и вывода их суммы Read (a,b,c); х:= a+b+c; Write(x); Последней общей для всех модулей функцией является функция ReadKey, которая считывает символ с клавиатуры [5]. Она описана в стандартном модуле Crt. Возвращаемый тип данных – тип char. Функция ReadKey принимает значение считываемого символа, при этом символ не выводится на экран. Если до обращения к ReadKey значение KeyPressed было равно True, то считывание происходит незамедлительно. В противном случае программа ожидает ввода с клавиатуры. Для считывания кода, соответствующего специальным клавишам, к функции ReadKey необходимо обратиться два раза. (Под специальными, подразумеваются функциональные клавиши, клавиши управления курсором, клавиши, нажатые одновременно с Alt и т.д.). Первый раз функция ReadKey принимает значения #0, а во второй раз – значение расширенного кода, соответствующего данной специальной клавише. Значение #0 не может быть присвоено ReadKey никаким другим способом. Поэтому если ReadKey = #0, то следующее значение ReadKey обязательно должно трактоваться как расширенный код. Не смотря на то, что применение функции очень широко, однако чаще всего она используется для задержки программы при отладке. Пример применения функции Ch: = ReadKey - возвращает считанный символ. И, наконец, последняя, стандартная функция, используемая только в модуле myiter1. Это функция Abs() – возвращающая абсолютное значение
5 ОПИСАНИЕ НЕСТАНДАРТНЫХ ФУНКЦИЙ
Программа MAIN использует нестандартные модули (modpoldel, modmettrap, modeyler), которые в свою очередь содержат не стандартные процедуры и функции, выполнение которых приводит к выполнению программы. Поэтому описание нестандартных процедур и функций, по сути, сводится к описанию процедур и функций, содержащихся в выше перечисленных модулях.
5.1 Метода половинного деления объект Tpoldel
Процедура poldel содержит пять внутренних переменных типа real, три из них имеют первоначальное значение, также этот объект использует внутреннюю функцию F( ) для расчёта значения функции в точке. Переменной с присваивается значение, численно равное полу сумме переменных а и b. Используя условный оператор if-then мы проверяем условие: значение функции F()в точке a, умноженное на значение функции F( ) в точке c- меньше или равно нулю. Если условие выполняется, используя стандартный модуль присвоения, мы точке b присваиваем значение точки c, иначе точке а присваивается значение точки с.ЦиклRepeat-Until позволяет нам добиться нужной точности ответа, так если условие ложно - тело цикла выполняется заново а если условие истинно - цикл завершается. Выше указанный метод использует стандартные процедуры и функции (clrscr, writeln, readln).
5.2 Метод трапеции объект Tmettrap
5.3 Метода Эйлера объекта Teyler
Эта процедура использует значительно большее количество внутренних переменных (a,b,e,h,k,s,x,y-real,). Кроме того, она использует внутреннюю функцию F() для расчета уравнения с двумя неизвестными. Начальное значение имеют переменные h,b,x,y , каждое последующее значение x и y заданы формулами. В ходе выполнения цикла while происходит проверка условия (значение переменной х должно входить в интервал от 1 до 5). Если условие выполняется, процедура выводит найденные значения на экран монитора. Выше указанный метод использует стандартные процедуры и функции ( clrscr, writeln, readln).
6 ОПИСАНИЕ ИНТЕРФЕЙСА
Основная программа MAIN (использующая методы объектно-ориентированного программирования) работает следующим образом. Используя способ запроса, определяет дальнейший ход развития. При получении любого результата отличного от 1,2,3 вновь возвращается на начало программы. Тем самым, исключая возможность ошибочного ввода. При получении ответа соответствующего цифрам 1,2,3 передает управление одному из не стандартных методов, описанных в не стандартных модулях пользователя. При этом выполнение главной программы практически заканчивается за исключением оператора выхода. Управление передается соответственно одному из модулей (modhord, modmettrap, modeyler) или другими словами методам пользователя (hord, mettrap, eyler). Каждый из перечисленных модулей по сути своей представляет отдельную программу, являющуюся составной частью другой. Это позволяет в зависимости от выбора пользователя выполнить тот или иной самостоятельный модуль, входящий в главную программу. При выборе 1 управление передается модулю modhord (метод hord) выполнение которого приводит к выходу из программы. Аналогично построены и два других модуля входящих в программу MAIN.
Все выше перечисленное в данной курсовой работе проиллюстрировано на конкретных примерах. 1. Проверку правильности работы программы, реализующей метод половинного деления, проведем с использованием электронных таблиц Excel. Microsoft Excel предназначен для быстрых расчетов. Он позволяет с использованием мастера функций получать значения функций, а с использованием мастера диаграмм строить графики функций. Для отделения корней уравнения построим график заданной функции на интервале [1;2]. Таблица для построения графика и график функции приведены ниже. Таблица 1 – Данные для построения графика в заданном интервале.
Рисунок 6 – График функции .
Таблица 2– Решение нелинейного уравнения методом половинного деления.
Результатом расчетов по таблице получаем значение корня уравнения при заданной точности вычисления . Проведем проверку правильности результата: 5.08553+5,91454-11=0,00007. Полученное значение показывает, что при заданной погрешности полученный корень уравнения дает результат не превышающий заданную погрешность. Также в правильности полученного решения можно убедиться анализируя график функции. Как видно из графика функции решение находится где-то в районе 1,7.
Результатом расчетов в процессоре Maple V получаем определенный интеграл, который равен 179.6666667.
Рисунок 7 – Результат решения с использованием математического процессора Maple V.
3
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (4714)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы (0.009 сек.) |