Математические методы и алгоритмы решения задач
Назначение курса
| Упражнения и лаборатории курса ПО САПР предназначены для практического закрепления навыков, полученных при прослушивании лекционного материала по соответствующему курсу.
|
Общие требования
Порядок выполнения практической работы
| Выполнение лабораторной работы начинается с получения задания.
|
| Студент должен ознакомиться с заданием на лабораторную работу. В случае, если задание непонятно, он может проконсультироваться у преподавателя.
|
| Практическая работа выполняется каждым студентом индивидуально.
|
| После получения и согласования с преподавателем задания на лабораторную работу студент приступает к выполнению теоретической части работы. В ходе теоретической части работы студент разрабатывает:
· требования к программному продукту;
· математические методы и алгоритмы;
· структуру программы;
· форматы представления данных.
|
| После разработки теоретической части студент представляет преподавателю разработанный материал, и, получив разрешение преподавателя, приступает к непосредственному кодированию разработанной программы на компьютере.
|
| Написав программу, студент должен её тщательно протестировать (в том числе встроенными модульными тестами). После этого он должен сдать программу преподавателю, продемонстрировав её работу и исходный код.
|
| По завершении работы студент оформляет отчёт, к которому прилагается исходный код программы.
|
Содержание отчёта
| В отчёт входит описание:
· постановки задачи;
· исходных данных;
· особых ситуаций;
· математических методов и алгоритмов решения задачи;
· форматов представления данных в памяти и на внешних носителях;
· структуры программы;
· модулей, функций и переменных программы;
· модульных тестов;
· полученных результатов.
|
| Отчёт оформляется на листах формата A4 с обязательным титульным листом, на котором указываются названием работы; ФИО исполнителя; ФИО преподавателя и т.д.
|
Постановка задачи
| Постановка задачи указывает, какая цель должна быть достигнута при разработке программы. Какую задачу должна решать программа, и в каких условиях будет функционировать.
|
Исходные данные
| Исходными данными являются любые данные, которые программа получает для обработки.
|
| Описание исходных данных должно содержать:
· семантику (назначение) данных;
· единицы изменения;
· представление в программе.
|
Особые ситуации
| Под особыми ситуациями понимаются ситуации, в которых поведение программы может не соответствовать поведению, ожидаемому пользователем.
|
| Все особые ситуации должны быть описаны и соответствующим образом обработаны в программе.
|
| Примерами особых ситуаций являются:
· отсутствие ожидаемых программой файлов;
· возможное деление на ноль в ходе вычислений;
· нехватка оперативной памяти.
|
Математические методы и алгоритмы решения задач
| Все используемые программой неочевидные алгоритмы и математические методы решения задач должны быть описаны в специальном разделе в форме и полноте, достаточной для восприятия другими разработчиками.
|
Форматы представления данных
| Для всех пользовательских типов данных (не являющихся частью языка) должны быть документированы назначение и мотивация выбора конкретного типа данных.
|
| Должны быть документированы форматы всех внешних ресурсов. Структура данных, сохраняемых в файлах и т.д.
|
Структура программы
| Разработанная структура программы (разделение на модули, интерфейсы, шаблоны проектирования) должна быть документирована.
|
| Должна быть описана основная последовательность работы программы (вызова функций, методов и т.д.).
|
| Все модули, функции, методы и пользовательские типы данных должны быть соответствующим образом документированы в отчёте.
|
Результаты работы программы
| Необходимо указать, какие результаты производит программа.
|
| Необходимо указать в каком формате пользователь получает результат.
|
Исходный текст программы
| Исходный текст программы распечатывается и прилагается к отчёту.
|
Документирование и комментирование исходного текста
| Все пользовательские типы данных должны быть прокомментированы.
|
| Все функции, классы и модули должны быть прокомментированы.
|
| Каждый модуль (h или cpp) должен начинаться с комментария, указывающего его назначение, автора, используемые алгоритмы.
|
| Каждая нетривиальная функция должна предваряться комментарием, описывающим:
· назначение;
· входные данные;
· результаты.
|
| В функциях, где соответствующее описание будет полезным, также следует описать:
· предусловия;
· постусловия;
· инварианты.
|
Защита и сдача лабораторной работы
| Лабораторная работа «защищается» преподавателю, ведущему лабораторные и практические работы.
|
| Для защиты необходимо иметь отчёт о проделанной работе и продемонстрировать работоспособную программу.
|
| Оценку за лабораторную работу выставляет преподаватель, которому работа была «защищена».
|
| Окончательная сдача лабораторной работы производится преподавателю, ведущему лекционный курс, и является допуском к экзамену (или зачёту) по предмету.
|
Окончательная сдача лабораторных работ
| Для сдачи лабораторных работ, необходимо представить:
· комплект отчётов по лабораторным работам;
· дискету с исходными кодами программ и выполняемыми модулями.
В корневом каталоге дискеты должен содержаться файл readme.txt, в котором должно быть указано:
· Ф.И.О. выполнившего (выполнивших) работы
· Год, название предмета, названия работ.
|
Лабораторная работа №1.
Использование языка программирования С++ для математических расчётов.
Цель работы
Первая лабораторная работа предназначена для приобретения практического опыта в создании простейшего приложения с использованием языка программирования С++.
Призвана:
· Закрепить базовые навыки использования арифметических типов, операторов и инструкций языка программирования C++.
· Обучить использованию структур (struct) в программе.
· Рассмотреть основы ввода-вывода в консольном приложении.
Варианты заданий
| Для заданной функции на заданном интервале найти требуемое значение методом половинного деления.
|
| Для заданной функции на заданном интервале найти требуемое значение методом Ньютона.
|
3а
| Для заданной функции на заданном интервале найти требуемое значение методом хорд.
|
3б
| Для заданной окружности и луча определить, пересекает ли луч окружность.
|
| Для заданных отрезков определить, пересекаются ли они.
|
| В заданном интервале указать все числа, удовлетворяющие одновременно двум условиям:
· это простые числа
· эти числа ряда Фибоначчи
|
| Вычислить интеграл заданной функции методом Эйлера
|
Пример выполнения задания
При выполнении лабораторной работы будет использоваться компилятор Visual C++ NET 2003.
Постановка задачи
Методом Монте-Карло вычислить число «пи».
Исходные данные
В качестве исходных данных программа использует вводимое пользователем число испытаний при проведении эксперимента.
Особые ситуации
Необходимо рассмотреть следующие особые ситуации:
· Если пользователь ввёл число испытаний меньше одного, то эксперимент провести невозможно.
· Если пользователь ввёл число испытаний меньше разумного предела для проведения статистического эксперимента, результаты могут быть недостоверными.
· Если пользователь ввёл очень большое число испытаний, то эксперимент может занять значительное время, о чём пользователь должен быть предупреждён.
Математические методы и алгоритмы решения задач
Согласно постановке задачи для составления программы будет использован метод Монте-Карло, который заключается в случайном выборе координат точек внутри квадрата заданного размера.
Для каждой точки будет проверяться попадание во вписанную в квадрат окружность. Таким образом, по окончании эксперимента мы будем располагать двумя числами:
· N – число случайно выбранных точек;
· M – число точек, попавших внутрь вписанной окружности.
Поскольку нам известна площадь квадрата и площадь вписанной окружности, то мы можем вычислить отношение площадей этих фигур. Если принять сторону квадрата за единицу, то его площадь будет равна одной квадратной единице.
Площадь круга, вписанного в этот квадрат, может быть определена по формуле:
(1)
Таким образом, число можно выразить через площадь и диаметр вписанного круга следующим образом:
(2)
Площадь вписанного круга можно найти из отношения M к N. Они относятся друг к другу так, как относится площадь вписанной окружности к площади квадрата. А площадь квадрата нам известна – она единична. Исходя из этого получаем полную формулу для вычисления числа по известным на числам M и N.
(3)
Все величины в данной формуле нам известны. Однако, как было указано выше, M является статистической величиной, которая будет рассчитана в результате проверки попадания случайных точек в окружность. Для генерации набора точек и проверки их попадания в круг необходимо написать программу.
Воспользуйтесь поиском по сайту: