Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
621.57 Кб
Скачать

1. Понятие об инфрм. мадел-ии. Разл. подходы к опред-ю пон-я «инф. модел-е». С т.з. инф-ки, решение любой задачи описывается след. «реальный объект - модель - алгоритм - программа - результаты – реал. объект». В этой цепочке очень важную роль играет звено «модель», как необходимый, обязательный этап решения этой задачи. Под моделью при этом понимается нек. мысленный образ реал. объекта (системы), отражающий существ. св-ва объекта и заменяющий его в процессе реш-я задачи. Модель - очень широкое понятие, включающее в себя мн-во сп-бов представления изучаемой реал-сти. Разл-ют модели материальные (натурные) и идеальные (абстрактные). Матер. модели основываются на чем-то объективном, существующем независимо от чел. сознания. Матер. модели делят на физические (например авиамодели) и аналоговые, основанные на процессах, аналогичных в каком-то отн-нии изучаемому (напр-р, процессы в электр. цепях оказываются аналогичными многим механическим, химическим, биол-ким и даже соц-­ным процессам и м.б. исп-ны для их модел-ния). Идеальные модели: интуитивные модели, напр-р, произведения искусства - живопись и т.д., но единого подхода к класс-ции остальных видов идеальных моделей нет. Иногда эти модели все разом относят к информационным. В основе такого подхода лежит расширительное толкование понятия «инф-ция»: «инф-цией явл. почти все на свете, а м.б., даже вообще все». Такой подход является не вполне оправданным, так как он переносит инфор. природу познания на суть используемых в процессе моделей-при этом любая модель явл. информа­ционной. Более продуктивным представляется такой подход к класс-ции идеальных моделей, при кот. разл-ют следующие.1. Вербальные (текстовые) модели. Эти модели исп-ют послед-ти предложений на формализованных диалектах естест. языка для описания той или иной области действ-ти (пр-ры: правила дорожного движения, настоящий учебник).2. Мат. модели - очень широкий класс знаковых моделей (основанных на формальных языках над конечными алфавитами), широко исполь­зующих те или иные мат. методы. Нап-р: мат. модель звезды. Сл. система ур-ний, описывающих физ. процессы, происходящие в недрах звезды.3. Информац. модели - класс знаковых моделей, описывающих информа­ц. процессы (возникновение, передачу, преобразование и использование информации) в системах самой разнообр. природы. Граница м\у вербальными, мат-кими и информационными моделями может быть проведена весьма условно; возможно, информац. модели следовало бы считать подклассом мат-ких моделей. Однако, в рамках инф-ки как самост. науки, отдельной от мат-ки, физики, лингвистики и др. наук, выделение класса информационных моделей является целесообразным. Инф-ка имеет самое непосредственное отнош-ие и к мат.моделям, поскольку они явл. основой прим-я компьютера при реш-и задач разл. природы: мат. модель исследуемого процесса или явл-я на определ. стадии исслед-ния преобразуется в компьютерную (вычисл-ную) модель, кот-я затем превращается в алгоритм и комп. программу. Опр-ния простейших понятий инфор. модел-ния: Экземпляр-представ-е предмета реал. мира с помо­щью нек. набора его харак-к, существенных для решения данной информац. задачи. Мн-во экземпляров, имеющих одни и те же харак-ки и подчи­няющиеся одним и тем же правилам. наз. объектом. Т.о., объект есть абстракция предметов реал. мира, объединяемых общ. харак-ками и поведением. Кажд. объект в модели д. б. обеспечен уникальным и значимым именем. Бол-во объектов, с кот-ми приходится встречаться, отн-ся к одной из след. категорий: Реальней объект, Роль,Событие,Взаимодействия,Объекты-спецификации

3.Структуры данных:список. Виды списков. Пример обработки списка.

В языках программ-ния (Pascal, C, др.) существует способ выделения памяти под данные, который называется динамическим. В этом случае память под величины отводится во время выполнения программы. Такие величины будем называть динамическими. Раздел оперативной памяти, распределяемый статически, называется статической памятью; динамически распределяемый раздел памяти называется динамической памятью (динамически распределяемой памятью). Согласно определению, список располагается в динамически распределяемой памяти, в статической памяти хранится лишь указатель на заглавное звено. Структура, в отличие от массива, является действительно динамической: звенья создаются и удаляются по мере необходимости, в процессе выполнения программы.В общем виде объявление выглядит так. Type U = ^Zveno;

Zveno = Record Inf : BT; Next: U End; здесь BT — некоторый базовый тип элементов списка. Если указатель ссылается только на следующее звено списка,то такой список называют однонаправленным, если на следующее и предыдущее звенья — двунаправленным списком. Если указатель в последнем звене установлен не в Nil, а ссылается на заглавное звено списка, то такой список называется кольцевым. Кольцевыми могут быть и однонаправленные, и двунаправленные списки. Более подробно рассмотрим работу со связанными списками на примере однонаправленного некольцевого списка. Выделим типовые операции над списками: добавление звена в начало списка; удаление звена из начала списка; добавление звена в произвольное место списка, отличное от начала (например, после звена, указатель на которое задан); удаление звена из произвольного места списка, отличного от начала (например, после звена, указатель на которое задан); проверка, пуст ли список; очистка списка;печать списка.Приведём полный текст модуля.

Unit Spisok;

Interface

Type BT = LongInt;

U = ^Zveno;

Zveno = Record Inf : BT; Next: U End;

{добавляет элемент в начало списка, First – указатель на начало списка, X – некоторое значение}

Procedure V_Nachalo(Var First : U; X : BT);

{удаляет первый элемент из списка и возвращает его значение в переменную Х}

Procedure Iz_Nachala(Var First : U; Var X : BT);

{вставляет новое звено в список со значением Х перед звеном Pred}

Procedure V_Spisok(Pred : U; X : BT);

{удаляет из списка звено на которое указывает предыдущее звено Pred и возвращает значение X}

Procedure Iz_Spiska(Pred : U; Var X : BT);

{Удаляет из списка все элементы}

Procedure Ochistka(Var First: U);

{функция возвращает значение true, если в списке нет ни одного элемента}

Function Pust(First : U) : Boolean;

{выводит список на экран}

Procedure Print(First : U);

Implementation

Procedure V_Nachalo;

Var Vsp : U

Begin New(Vsp);

Vsp^.Inf := X; Vsp^.Next := First;

First := Vsp; End;

Procedure Iz_Nachala;

Var Vsp : U;

Begin

Vsp := First;

First := First^.Next;

X := Vsp^.Inf;

Dispose(Vsp); End;

Procedure V_Spisok;

Var Vsp : U;

Begin New(Vsp);

Vsp^.Inf := X;

Vsp^.Next := Pred^.Next;

Pred^.Next := Vsp; End;

Procedure Iz_Spiska;

Var Vsp : U;

Begin Vsp := Pred^.Next;

Pred^.Next := Pred^.Next^.Next;

X := Vsp^.Inf;

Dispose(Vsp); End;

Procedure Ochistka;

Var Vsp : BT;

Begin

While Not Pust(First) Do Iz_Nachala(First, Vsp)

End;

Function Pust;

Begin Pust := First = Nil End;

Procedure Print;

Var Vsp : U;

Begin Vsp := First;

While Vsp <> Nil Do

Begin

Write(Vsp^.Inf : 6);

Vsp := Vsp^.Next

End;

WriteLn End;

Begin

End.

 

4.Стр-ры данных:стек. пр-р исп-ния стека.

Стек—динам. стр-ра данных, представляющая из себя упорядоченный набор эл-тов, в которой добавление новых эл-тов и удаление существующих производится с одного конца, называемого вершиной стека. Наиболее наглядным примером организации стека служит детская пирамидка, где добавление и снятие колец осуществляется как раз согласно определению стека. Стек можно организовать на базе линейного массива, файла, однако чаще для этого испульзуется однонаправл. список, причём в качестве вершины стека выберем начало этого списка. Выделим типовые операции над стеком: добавление элемента; извлечение элемента; проверка, пуст ли стек; очистка стека. Реализуем эти операции.

Unit Stack;

Interface

Type BT = LongInt;

U = ^Zveno;

Zveno = Record Inf : BT; Next: U End;

{добавляет элемент в вершину стек, First – указатель на начало стека, X – некоторое значение}

Procedure V_Stack(Var First : U; X : BT);

{удаляет элемент из вершины стека и возвращает его значение в переменную X}

Procedure Iz_ Stack (Var First : U; Var X : BT);

{удаляет все элементы стека}

Procedure Ochistka(Var First: U);

{функция возвращает значение true, если в стеке нет ни одного элемента}

Function Pust(First : U) : Boolean;

Procedure Print(First : U);

Implementation

Procedure V_ Stack;

Var Vsp : U

Begin New(Vsp);

Vsp^.Inf := X; Vsp^.Next := First;

First := Vsp; End;

Procedure Iz_ Stack;

Var Vsp : U;

Begin

Vsp := First;

First := First^.Next;

X := Vsp^.Inf;

Dispose(Vsp); End;

Procedure Ochistka;

Var Vsp : BT;

Begin

While Not Pust(First) Do Iz_Satck(First, Vsp)

End;

Function Pust;

Begin Pust := First = Nil End;

Procedure Print;

Var Vsp : U;

Begin Vsp := First;

While Vsp <> Nil Do

Begin

Write(Vsp^.Inf : 6);

Vsp := Vsp^.Next

End;

WriteLn End;

Begin

End.

5. Очередь—это инф-ная стр-ра, в кот-ой для добавления эл-в доступен только один конец, называемый хвостом, а для удаления—другой, называемый головой. Т.е. новый элемент добавляется в начало очереди, а извлекается элемент с конца очереди. Очередь разумнее всего моделировать, отобразив её на двунаправленный кольцевой список. В этом случае в заглавном звене будет присутствовать инф-ция как об указателе на голову, так и на хвост очереди. Выделим типовые операции над очередями: добавление элемента в очередь (помещение в хвост);удаление элемента из очереди (удаление из головы);проверка, пуста ли очередь; очистка очереди.Вот модуль, содержание кот-го сост-ют реализованные типовые операции над очередями.

Unit Spisok2;

Interface

Type BT = LongInt;

U = ^Zveno;

Zveno = Record Inf : BT; N, P: U End;

{добавляет элемент в начало очереди, First – указатель на начало очереди, X – некоторое значение

Procedure V_Och(Var First : U; X : BT);

{удаляет элемент из очереди и возвращает его значение в переменную X}

Procedure Iz_Och(Var First : U; Var X : BT);

{удаляет все элементы из очереди}

Procedure Ochistka(Var First: U);

{функция возвращает значение true, если в очереди нет ни одного элемента}

Function Pust(First : U) : Boolean;

Implementation

Procedure V_Och;

Var Vsp : U;

Begin

New(Vsp);

Vsp^.Inf := X;

If First = Nil

then begin Vsp^.N := Vsp; Vsp^.P := Vsp;

First := Vsp end

else begin Vsp^.N := First; Vsp^.P := First^.P;

First^.P^.N := Vsp; First^.P := Vsp; end;

End;

Procedure Iz_Och;

Var Vsp : U;

Begin

x:=first^.inf;

if First^.p=first

then begin

dispose(first);

first:= nil end

else begin

Vsp := First;

First := First^.N;

First^.P := Vsp^.P;

Dispose(Vsp) end

End;

Procedure Ochistka;

Var Vsp : BT;

Begin

While Not Pust(First) Do Iz_Och(First, Vsp)

End;

Function Pust;

Begin

Pust := First = Nil End;

Begin

End.

6.Стр-ра данных: двоичное дерево. Дерево поиска. Осн. операции. 

Дерево—это совок-ть эл-ов, наз-мых узлами (при этом один из них определен как корень), и отн-ний (родительский–дочерний), образующих иерархическую стр-ру узлов. Узлы, кот-е не имеют ни одного последующего узла, наз. листьями. В двоичном (бинарном) дереве каждый узел м.б. связан не более чем c двумя др. узлами. Рекурсивно двоичное дерево опред-ся так: двоичное дерево бывает либо пустым (не содержит ни одного узла), либо содержит узел, наз-мый корнем, а также два независимых поддерева—левое и правое. Двоичное дерево поиска – дерево обладающее с-вом: корневой эл-т имеет большее значение узла, чем любой эл-т в левом поддереве, и меньшее или равное, чем эл-ты в правом поддереве. Указанное св-во наз. характеристическим св-вом двоичного дерева поиска и вып-ся для любого узла такого дерева, включая корень. Далее будем рассм. только двоичные деревья поиска. Такое название дв. деревья поиска получили по той причине, что скорость поиска в них примерно такая же, что и в отсортированных массивах: O(n) = C • log2n (в худшем случае O(n) = n).Выделим типовые операции над дв.деревьями поиска: добавл-е эл-та в дерево; удал-е эл-та из дерева; обход дерева; поиск в дереве. Поскольку опред-ние дв. дерева рекурсивно, то все указанные типовые операции м.б. реализованы в виде рекурсивных подпрограмм. Пусть дв. дерево поиска описывается следующим типом Type BT=LongInt; U = ^BinTree; BinTree = Record Inf : BT; L, R : U End; Покажем два варианта добавления элемента в дерево: итеративный и рекурсивный.

{Итеративный вариант добавления элемента в дерево, }

Procedure InsIteration(Var T : U; X : BT);

Var vsp, A : U;

Begin

New(A); A^.Inf := X; A^.L:=Nil; A^.R := Nil; vsp:=nil;

If T=Nil Then T:=A

Else Begin vsp := T;

While vsp <> Nil Do

If A^.Inf < vsp^.Inf

Then If vsp^.L=Nil

Then Begin vsp^.L:=A; vsp:=A^.L End

Else vsp:=vsp^.L

Else If vsp^.R = Nil

Then Begin vsp^.R := A; vsp:=A^.R End

Else vsp := vsp^.R;

End;

{Рекурсивный вариант добавления элемента в дерево}

Procedure InsRec(Var Tree : U; x : BT);

Begin

If Tree = Nil

Then Begin

New(Tree);

Tree^.L := Nil;

Tree^.R := Nil;

Tree^.Inf := x End

Else If x < Tree^.inf

Then InsRec(Tree^.L, x)

Else InsRec(Tree^.R, x)

End;

Сущ-вует неск. сп-бов обхода всех узлов дерева. Три наиболее часто исп-мых из них наз. обход в прямом (префиксном) порядке, обход в обратном (постфиксном) порядке и обход во внутреннем порядке (или симметричный обход). Каждый из обходов реал-ся с использованием рекурсии.

обратном порядке}

Procedure PrintTree(T : U);

begin

if T <> Nil

then begin PrintTree(T^.L); write(T^.inf:6); PrintTree(T^.R) end; end;

прямом порядке}

Procedure PrintTree(T : U);

begin

if T <> Nil

then begin write(T^.inf : 6); PrintTree(T^.L); PrintTree(T^.R) end;end;

Реализуем ф-цию, возвращающую true, если элемент присутствует в дереве, и false — в противном случае.

function find(Tree : U; x : BT) : boolean;

begin

if Tree=nil then find := false

else if Tree^.inf=x then Find := True

else if x < Tree^.inf

then Find := Find(Tree^.L, x)

else Find := Find(Tree^.R, x)

end;

По сравнению с предыдущими задача удаления узла из дерева реализуется неск-ко сложнее. В этом случае нужно заменить удаляемый эл-т самым правым элементом из его левого поддерева.

function Delete(Tree: U) : U;

var P, v : U;

begin

if (Tree=nil)

then writeln('такого элемента в дереве нет!')

else if x < Tree^.inf

then Tree^.L := Delete(Tree^.L, x)

else if x > Tree^.inf

then Tree^.R := Delete(Tree^.R, x)

else begin

P := Tree;

if Tree^.R=nil

then Tree:=Tree^.L

else if Tree^.L=nil

then Tree:=Tree^.R

else begin

v := Tree^.L;

while v^.R^.R <> nil do v:= v^.R;

Tree^.inf := v^.R^.inf;

P := v^.R;

v^.R :=v^.R^.L;

end;

dispose(P);

end;

Delete := Tree

end;

7. Пон-е о мат. моделир-нии. Этапы мат. моделир-ния. Класс-ция мат. моделей.

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

Этапы: I.Опред-е целей модел-ния. Основные из них таковы:1) (понимание) модель нужна для того, чтобы понять, как устроен конкретный объект, какова его структура, основные свойства, законы развития и взаимодействия с окружаю­щим миром; 2) (управление) модель нужна для того, чтобы научиться управлять объектом (или процессом) и определить наилучшие способы управления; 3) (прогнозирование) модель нужна для того, чтобы прогнозировать поведение объекта в тех или иных условиях.

II. Важнейшим этапом модел-ния явл. разделение входных параметров по степени важности влияния их изменений на выходные. Такой процесс называется ранжированием (разделением по рангам). Отбрасывание менее значимых факто­ров огрубляет объект модел-я и способ-ет пониманию его гл. св-в и закономерностей.

III.Поиск мат. описания. На этом этапе необходимо перейти от абстрактной формул-ки модели к формул-ке, имеющей конкретное мат. наполнение. В этот момент модель предстает перед нами в виде уравн-я, с-мы уравн-й, с-мы нерав-в, дифференциального ур-ния или с-мы таких уравнений и т.д.

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

VI. Разработка алгоритма и составление программы для ЭВМ - это творческий и трудно формализуемый процесс. После составл-я программы решаем с ее помощью простейшую тестовую задачу. Затем следует собственно численный эксперимент, и выясняется, соответствует ли модель реальному объекту (процессу).

Класс-ция: 1. По отраслям наук (мат. модели в физике, биологии, социологии и т.д.). 2. По применяемому мат. аппарату (модели, основанные на прим-нии обыкн. дифф. ур-ий, дифф. ур-ний в частных производных, стохастических методов, дискрет­ных алгебр. преобразований и т.д.). 3. По целям моделирования:дескриптивные (описательные) модели (Моделируя дви­жение кометы, вторгшейся в Солнечную систему, мы описываем (предсказываем) траекторию ее полета, расстояние, на котором она пройдет от Земли и т. д. , т. е. ставим чисто описательные цели. •оптимизационные модели (В этом случае в модель входит один или неск. параметров, доступных нашему влиянию. Напр-р, меняя тепловой режим в зернохранилище, мы можем стремиться подобрать такой, чтобы достичь максим. сохранности зерна, т. е. оптимизируем процесс);•многокритериальные модели (Часто приходится оптимизировать процесс по неск. параметрам сразу, причем цели могут быть весьма противоречивыми. Напр-р, зная цены на про­дукты и потребность чел-а в пище, организовать питание больших групп людей как можно полезнее и как можно дешевле).•игровые модели (Полководец перед сражением в условиях наличия неполной инф-ции о противостоящей армии должен разработать план: в каком порядке вводить в бой те или иные части и т.д., учитывая и возм. реакцию противника. • имитационные модели (Модель в большой мере подражает реальному процессу. Пр-р – модел-ние движ-я молекул в газе, когда каждая молекула представляется в виде шарика, и задаются усл-я поведе­ния этих шариков при столкновении друг с другом и со стенками ; при этом не нужно использовать никаких ур-ний движ-ния.

8. Моделирование физич-х процессов:В физике выделяется третий фундаменталь­ный раздел - вычислительная физика (computational physics). Причина: ограниченные возможности решения задач традиционными методами. Например приходится решать системы большого числа уравнений или дифференциальные уравнения в частных производных. Численное мод-ние в физике называют вычисл-м эксп-том, т.к оно имеет много общего с лабораторным эксп-том. Численное моделирование позволяют пред­ставить их в максимально наглядной форме (в виде графиков, диаграмм, траекторий движения).

движение тела с учетом сопротивления среды: При реальных физических движениях тел в газовой или жидкостной среде трение накладывает огромный отпечаток на характер движения. Предмет, сброшенный с большой высоты, не движется равноускоренно, так как по мере набора скорости возрастает сила сопротивления среды. Сила сопротивления растет с ростом скорости. При относитель­но малых скоростях величина , где k1 опр-тся свойствами среды и формой тела. Например, для шарика - это формула Стокса, где  - динамическая вязкость среды. При гораздо меньших скоростях : . Линей­ная по скорости часть силы сопротивления формально также сохранится, но если , то можно пренебречь ( ранжирова­ние). пропорциональна площади сечения тела S, поперечного по отношению к потоку, и плотности среды и зависит от формы тела. Обычно представляют , где с – коэфф-т лобового сопр-ния - безразмерен. При достижении достаточно большой скорости, когда образующиеся за обте­каемым телом вихри газа или жидкости начинают интенсивно отрываться от тела, значение с в несколько раз уменьшается; для шара оно становится приблизительно равным 0,1. вывод:F(сопр) состоит: линейной и квадратичной части силы.