На протяжении своей истории человечество использовало различные способы и инструменты для создания информационных моделей. В настоящее же время информационные модели обычно строятся и исследуются с использованием современных компьютерных технологий.
Компьютерное моделирование является одним из эффективных методов изучения сложных систем. Часто компьютерные модели проще и удобнее исследовать, они позволяют проводить вычислительные эксперименты, реальная постановка которых затруднена или может дать непредсказуемый результат.
Использование компьютера для исследования информационных моделей различных объектов и систем позволяет изучить их изменения в зависимости от значения тех или иных параметров.
Процесс разработки моделей и их исследования на компьютере можно разделить на несколько основных этапов:
1. Постановка задачи. Построение описательной информационной модели (выделение существенных параметров).
2. Создание формализованной модели (запись формул).
Как устроен процесс разработки? ДЛЯ НОВИЧКОВ / Про IT / Geekbrains
3. Построение компьютерной модели.
4. Компьютерный (вычислительный) эксперимент.
5. Анализ полученных результатов и корректировка исследуемой модели.
На первом этапе исследования объекта или процесса обычно строится описательная информационная модель. Важным моментом на этом этапе является определение цели моделирования. От выбранной цели зависит, какие характеристики исследуемого объекта считать существенными, а какие отбросить. В соответствии с поставленной целью может быть подобран инструментарий, определены методы решения задачи, формы отображения результатов.
На втором этапе создается формализованная модель, то есть описательная информационная модель записывается с помощью какого-либо формального языка. В такой модели с помощью формул, уравнений, неравенств и пр. фиксируются формальные соотношения между начальными и конечными значениями свойств объектов, а также накладываются ограничения на допустимые значения этих свойств. Кроме того, в соответствии с поставленной целью необходимо выделить параметры, которые известны (исходные данные) и которые следует найти (результаты).
На третьем этапе необходимо формализованную информационную модель преобразовать в компьютерную на понятном для компьютера языке.
Существуют два принципиально различных пути построения компьютерной модели:
• создание алгоритма решения задачи и его кодирование на одном из языков программирования;
• формирование компьютерной модели с использованием одного из приложений (электронных таблиц, СУБД и т. д.).
В процессе создания компьютерной модели полезно разработать удобный графический интерфейс, который позволит визуализировать формальную модель, а также реализовать интерактивный диалог человека с компьютером на этапе исследования модели.
Четвертый этап исследования информационной модели состоит в проведении компьютерного эксперимента.
Эксперимент — это опыт, который производится с объектом или моделью. Он заключается в выполнении некоторых действий и определении, как реагирует экспериментальный образец на эти действия.
Информатика 9 Этапы разработки программы Структура простой программы
Этап проведения компьютерного эксперимента включает две стадии:
— составление плана эксперимента;
План эксперимента должен четко отражать последовательность работы с моделью. Первым пунктом такого плана всегда является тестирование модели. Тестирование — процесс проверки правильности построения модели. Для проверки правильности построения модели используется набор исходных данных, для которых конечный результат заранее известен. После тестирования, когда появляется уверенность в правильности построенной модели, можно переходить непосредственно к проведению исследования.
В плане должен быть предусмотрен эксперимент или серия экспериментов, удовлетворяющих целям моделирования. Каждый эксперимент должен сопровождаться осмыслением итогов, что служит основой анализа результатов моделирования и принятия решений.
Пятый этап состоит в анализе полученных результатов и корректировке исследуемой модели. Если результаты тестирования и экспериментов не соответствуют целям поставленной задачи, значит, на предыдущих этапах были допущены ошибки.
Это может быть либо неправильная постановка задачи, либо слишком упрощенное построение информационной модели, либо неудачный выбор метода или среды моделирования, либо нарушение технологических приемов при построении модели. Если такие ошибки выявлены, то требуется корректировка модели, то есть возврат к одному из предыдущих этапов. Процесс повторяется до тех пор, пока результаты эксперимента не будут отвечать целям моделирования. Конечная цель моделирования — принятие решения, которое должно быть выработано на основе всестороннего анализа результатов моделирования.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Глава 2. Основные подходы к разработке программ для компьютерного моделирования
Рассмотрим принципы разработки программного обеспечения для задач математического моделирования.
Поэтапное программирование. Процесс разработки программы математического моделирования разбивается на несколько последовательных следующих друг за другом этапов.
В зависимости от сложности объекта моделирования и набора задач, требующих решения при создании программ моделирования, стадии и этапы работ могут иметь различную трудоемкость. Допускается объединять последовательные этапы и даже исключать некоторые из них на любой стадии проекта. Допускается также начинать выполнение работ следующей стадии до окончания предыдущей.
Модульное проектирование. Структура программного комплекса математического моделирования подчиняется технологии модульного проектирования программ и состоит из следующих модулей – интерфейса, ядра, библиотеки, модулей пользователя. Каждый модуль состоит из спецификации и тела. Спецификации определяют правила использования модуля, а тело – способ реализации процесса обработки. Схема связей модулей показана на рис 10.1.
Рис.2.1 Модульное строение программ компьютерного
Интерфейс это часть программы, позволяющая пользователю использовать ядро и подключенные к нему библиотеки или модули. Оформление, дизайн внешнего вида, комфортность работы и удобство эксплуатации для пользователя заключается в этой части программного комплекса. В этой программе приводится меню пользователя, где задаются входные параметры задачи и выводятся результаты моделирования.
На рис. 10.2 приведен пример оформления графического интерфейса пользователя входных и выходных параметров программы моделирования прохождения нейтронов через пластинку.
Рис. 2.2. Интерфейс входных данных программы моделирования прохождения нейтронов через пластинку (среда программирования Delphi).
Ядро представляет собой программу, выполняющую набор базовых функций. Ядро выполняет основную вычислительную часть решения задачи математического моделирования. Пользователь работает с ядром посредством программы интерфейса. Ядро программы разрабатывается так, что любой алгоритм в нем работает достаточно быстро. Для расширения набора стандартных процедур используется библиотека языка кодирования и набор модулей пользователя.
Общая схема программы ядра состоит из трех последовательных блоков:
1. Блок задания входных постоянных параметров и исходных данных задачи.
2. Блок основного тела программы ядра, где проводится решение задачи на алгоритмическом языке программы.
3. Блок вывода результатов решения математической задачи.
Приведем пример решения одной задачи для моделирования маятника Фуко по методу Эйлера.
маятника Фуко методом Эйлера>
const pi=3.1415; g=9.8; n=2000;
x,y,vx,vy:array [0..n] of real;
dt:=0.01; L:=50; tt:=10; w:=0.04;
Блок описания переменных программы и исходных данных (параметров и входных значений) математической задачи
for i:=0 to m-1 do
if r=0 then r:=1e-6;
If v=0 then v:=1e-6;
Основное тело программы ядра – решение поставленной математической задачи
assign (fuk,’c:fuko.DAT’); rewrite (fuk);
for i:=0 to m do writeln(fuk, x[i],’ ‘,y[i]);
Блок вывода результатов решения математической задачи.
Интерфейс пользователя является самой дорогой и трудоемкой частью разработки программного комплекса. Поэтому в зависимости от цели и назначения программы математического моделирования разработка интерфейса всегда стоит под вопросом и разработчики-исследователи довольствуются минимумом удобств. Чаще всего разработка интерфейса проводится для случая, когда программный продукт готовится для передачи заказчику, тиражирования или внедрения в фонд алгоритмов и программ. Поэтому для удобства и обучения пользователя разрабатывается электронная справочная система или руководство пользователя, где представляется необходимые сведения для работы с программой (общие сведения, системные требования, описание компьютерной модели, средства навигации по вводу и выводу данных, необходимые модули программы и так далее).
Библиотека. В любой среде программирования существуют своя библиотека готовых стандартных программ (модулей) в виде процедур или функций. Пользователь часто использует эти готовые модули при решении своих задач. В свою очередь эти модули могут использовать другие дополнительные модули для выполнения своих процедур или функций.
Модули пользователей. Кроме стандартных библиотек, поставляемых с пакетом среды программирования, пользователи при разработке программы моделирования могут использовать свою личную библиотеку, т.е. собственные разработанные модули (процедуры и функции). Эти модули могут быть разработаны на различных базовых языках и откомпилированы виде исполняемых *.ехе или *.com файлов.
Принцип структурного программирования. Идея структурного программирования была получена из результатов наблюдения чтения и понимания текста человеком. Эти исследования показали, что текст быстрее воспринимается, если человек читает фразы в порядке их следования в этом тексте.
Если по ходу чтения его будут отсылать на фрагменты текста, находящихся на других страницах, то это резко затрудняет восприятие и понимание читаемого текста. При чтении программ «скачки» по тексту проводятся операторами переходов, которые могут отсылать как вперед, так и назад, в любое место программы. Поэтому структурное программирование часто называют «программированием без GO TO», чем меньше мы их используем, тем лучше. Структурное программирование предполагает использование ограниченного числа базовых конструкций. В качестве основных конструкций принимается следующие структуры (Рис.2.3):
Отметим, что все структуры имеют один вход и один выход, это позволяет рекурсивное описание структуры, иначе говоря, каждый из блоков (прямоугольник) может быть не только отдельным оператором, но и любой из допустимых структур, т.е. допускается вложение структур.
Принцип нисходящего проектирования (программирования). Разработка эффективного алгоритма решения в значительной мере является искусством. Практика развития программирования выработала методику разработки программ – метод пошаговой детализации или так называемый принцип нисходящего проектирования. Идея заключается в сведении решения сложной задачи к решению простых задач. На практике это выглядит так – сложную задачу разбивают на 3-4 подзадачи, а в проектируемой программе намечается соответствующее число блоков (частей программы).
Здесь решается только проблема определения функциональных назначений каждого блока (что этот блок делает?). Эти подзадачи могут разбиться на более мелкие подзадачи, т.е. можно рассмотреть второй шаг детализации. Программисты уверяют, что этот принцип позволяет проверить правильность работы каждого блока и соответственно скорректировать общую схему программы. Отметим, что если на каждом шаге детализации используется принцип структурного программирования, то это обеспечит хорошую структурированность программы в целом.
Рис.2.3. А) Следование. Эта структура представляет последовательность блоков. Б) Ветвление. Это управляющая структура, которая в зависимости от выполнения заданного условия определяет выбор для исполнения одного из заданных в этой структуре блоков S1 и S2.
В)Повторение типа «делать, пока». Эта структура представляет собой организацию цикла, выполняющуюся по условию.
Алгоритмизация и кодирование программы. Разработка или проектирование программы ядра не связано с тем языком, на котором будет окончательно записана конечная программ. Существует ряд методик разработки алгоритма программы (методики проектирования программы). Эта работа называется алгоритмизацией.
- Пошаговое последовательное описание алгоритма решения задачи описывается на любом алгоритмическом языке, в том числе текстовом языке.
- Разработка блок-схемы, достоинство которых заключается в том, что они не требуют какой определенной детализации алгоритма и поэтому могут использоваться на любых этапах разработки программ. Отметим, что блок- схемы характеризуются хорошей наглядностью структуры алгоритма. Недостаток, в том, что для сложных алгоритмов они становятся громоздкими. Кроме того их надо тщательно чертить, а также они неудобны для публикаций.
- Методика Псевдокода. Каждый программист может придумать специальные символы или словесное описание каждого шага. В частности комбинация операторов паскаля и словесного описания задачи (подзадачи) в виде комментариев. Это прием позволяет получить хорошо прокомментированную предварительную программу.
- Для проектирования программы моделирования можно использовать специальные программы проектирования информационных систем и программных решений, например пакет BPwin, Design/IDEF или Microsoft Solutions Framework в Visual Basic, на которых можно спроектировать частично или весь алгоритм решения задачи.
- Назначение программы.
- Сведения об авторе программы.
- Организация, в которой написана программа.
- Дата написания программы.
- Используемый метод решения задачи.
- Указания по вводу и выводу.
- Время, требуемое на выполнение программы.
- Требуемый объем памяти.
- Специальные указания оператору ЭВМ (в случае необходимости).
Источник: studfile.net
Основные этапы компьютерного моделирования
Все этапы определяются поставленной задачей и целями моделирования. В общем случае процесс построения и исследования модели можно представить следующей схемой:
Первый этап — постановка задачи включает в себя стадии: описание задачи, определение цели моделирования, анализ объекта.
Задача формулируется на обычном языке. По характеру постановки все задачи можно разделить на две основные группы. К первой группе можно отнести задачи, в которых требуется исследовать, как изменятся характеристики объекта при некотором воздействии на него, «что будет, если. ».
В задачах, относящихся ко второй группе, требуется определить, какое надо произвести воздействие на объект, чтобы его параметры удовлетворяли некоторому заданному условию, «как сделать, чтобы. ».
Определение цели моделирования
На этой стадии необходимо среди многих характеристик (параметров) объекта выделить существенные. Мы уже говорили о том, что для одного и того же объекта при разных целях моделирования существенными будут считаться разные свойства. Определение цели моделирования позволяет четко установить, какие данные являются исходными, что требуется получить на выходе и какими свойствами объекта можно пренебречь.
Таким образом, строится словесная модель задачи.
Анализ объекта подразумевает четкое выделение моделируемого объекта и его основных свойств.
Второй этап — формализация задачи связан с созданием формализованной модели, то есть модели, записанной на каком-либо формальном языке.
В общем смысле формализация — это приведение существенных свойств и признаков объекта моделирования к выбранной форме.
Формальная модель — это модель, полученная в результате формализации.
Для решения задачи на компьютере больше всего подходит язык математики. В такой модели связь между исходными данными и конечными результатами фиксируется с помощью различных формул, а также накладываются ограничения на допустимые значения параметров.
Третий этап — разработка компьютерной модели начинается с выбора инструмента моделирования, другими словами, программной среды, в которой будет создаваться и исследоваться модель.
От этого выбора зависит алгоритм построения компьютерной модели, а также форма его представления. В среде программирования это программа, написанная на соответствующем языке. В прикладных средах (электронные таблицы, СУБД, графических редакторах и т. д.) это последовательность технологических приемов, приводящих к решению задачи.
Следует отметить, что одну и ту же задачу можно решить, используя различные среды. Выбор инструмента моделирования зависит, в первую очередь, от реальных возможностей, как технических, так и материальных.
Четвертый этап — компьютерный эксперимент включает две стадии: тестирование модели и проведение исследования.
Тестирование модели — процесс проверки правильности построения модели.
На этой стадии проверяется разработанный алгоритм построения модели и адекватность полученной модели объекту и цели моделирования. Для проверки правильности алгоритма построения модели используется тестовые данные, для которых конечный результат заранее известен. (Обычно его определяют ручным способом). Если результаты совпадают, то алгоритм разработан верно, если нет — надо искать и устранять причину их несоответствия.
Тестирование должно быть целенаправленным и систематизированным, а усложнение тестовых данных должно происходить постепенно. Чтобы убедиться, что построенная модель правильно отражает существенные для цели моделирования свойства оригинала, то есть является адекватной, необходимо подбирать тестовые данные, которые отражают реальную ситуацию.
К этой стадии компьютерного эксперимента можно переходить только после того, как тестирование модели прошло успешно, и вы уверены, что создана именно та модель, которую необходимо исследовать.
Пятый этап — анализ результатов является ключевым для процесса моделирования. Именно по итогам этого этапа принимается решение: продолжать исследование или закончить.
Если результаты не соответствуют целям поставленной задачи, значит, на предыдущих этапах были допущены ошибки. В этом случае необходимо корректировать модель, то есть возвращаться к одному из предыдущих этапов. Процесс повторяется до тех пор, пока результаты компьютерного эксперимента не будут отвечать целям моделирования.
Виды алгоритмов
Виды алгоритмов как логико-математических средств отражают указанные компоненты человеческой деятельности и тенденции, а сами алгоритмы в зависимости от цели, начальных условий задачи, путей ее решения, определения действий исполнителя подразделяются следующим образом:
Механические алгоритмы, или иначе детерминированные, жесткие (например, алгоритм работы машины, двигателя и т.п.);
· Гибкие алгоритмы, например стохастические, т.е. вероятностные и эвристические. Механический алгоритм задает определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм.
· Вероятностный (стохастический) алгоритм дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата.
· Эвристический алгоритм (от греческого слова “эврика”) – это такой алгоритм, в котором достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач.
· Линейный алгоритм – набор команд (указаний), выполняемых последовательно во времени друг за другом.
· Разветвляющийся алгоритм – алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов.
· Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов.
· Цикл программы – последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия.
· Вспомогательный (подчиненный) алгоритм (процедура) – алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи. В некоторых случаях при наличии одинаковых последовательностей указаний (команд) для различных данных с целью сокращения записи также выделяют вспомогательный алгоритм.
· На всех этапах подготовки к алгоритмизации задачи широко используется структурное представление алгоритма.
· Структурная (блок-, граф-) схема алгоритма – графическое изображение алгоритма в виде схемы связанных между собой с помощью стрелок (линий перехода) блоков – графических символов, каждый из которых соответствует одному шагу алгоритма. Внутри блока дается описание соответствующего действия. Графическое изображение алгоритма широко используется перед программированием задачи вследствие его наглядности, т.к. зрительное восприятие обычно облегчает процесс написания программы, ее корректировки при возможных ошибках, осмысливание процесса обработки информации. Можно встретить даже такое утверждение: “Внешне алгоритм представляет собой схему – набор прямоугольников и других символов, внутри которых записывается, что вычисляется, что вводится в машину и что выдается на печать и другие средства отображения информации “. Здесь форма представления алгоритма смешивается с самим алгоритмом.
Источник: megaobuchalka.ru