Файл: Могилев А.В. Информатика.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2021

Просмотров: 6608

Скачиваний: 50

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

586 

строения графика аналитически заданной функции на произвольном отрезке; здесь мы детализи-
руем рассмотрение. Пусть численные  расчеты  уже  закончены и нам известны границы значений 
координат  [

x

min

x

max

]  и  [

y

min

y

mах

]  и  есть  таблица  значений 

х

  и 

у

  в  некоторые  моменты  времени, 

разделенные равными промежутками: 0, 

t

, 2

t

, 3

t

,..., 

пt.

 Требуется построить  графики  зависимости 

x(t)

у(t)

 и траекторию. Проиллюстрируем это, используя графические процедуры PASCAL. 

С  помощью  директивы  Uses  Graph  и  процедуры  InitGraph  (<параметры>)  осуществляется 

переход  в  графический  режим,  в  котором  можно  строить  изображения.  Необычная  ориентация 
«экранной» системы координат создает определенные проблемы при построении графиков и тра-
екторий. Мы хотим выводить их и задавать координаты точек в «естественной» системе коорди-
нат 

x, y,

 изображенной на рис. 7.4, а графические процедуры (Circle, Line. OutText и др.) воспри-

нимают аргументы в «экранной» системе 

x'

у'.

 Сделаем разметку так,

 

как показано

 

на

 

рисунке, и 

произведем линейное преобразование координат 

 

 

 

Если известны разрешающая способность экрана - 

М

 точек по оси 

х'

 и 

N

 точек по оси 

у',

 то 

для нахождения коэффициентов 

α, β, γ, δ 

достаточно связать любые две точки в разных системах 

координат, например 

 

 

 

(отступ на 10 позиций от краев экрана позволит создавать подписи, разметку осей и 

др.). Имеем 
 

 

 

откуда 

 

 

откуда 
 

 

 

Таким образом, перевод одних координат в другие осуществляется по формулам 
 

 


background image

 

587 

 

Рис. 7.4.

 Экранная и «естественная» системы координат 

 

Теперь  достаточно  поставить  точку  с  нужной  координатой  (

x

у)

  с  помощью  процедуры 

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

Изолинии.

 В задачах моделирования достаточно стандартная проблема - построение линий 

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

Опишем  типичную  процедуру  построения  изолиний  на  экране  компьютера.  На  старте  мы 

имеем двумерную таблицу значений некоторой величины А, полученную в ходе математического 
моделирования; числа в этой таблице соответствуют значениям этой величины в узлах простран-
ственной сетки (рис. 7.5). 

Зададим некоторый, совершенно условный, пространственный шаг 

h

 между соседними  уз-

лами по горизонтали и вспомогательную систему координат, в которой узел (1, 1) имеет коорди-
нату (0, 0), узел (1, 2) - координату (

h

, 0), узел (1, 3) - координату 

(2h, 0)

 и т.д. Если шаг по верти-

кали 

h

*, то узел 

(i, j)

 в этой системе имеет координату ((

i

-1) ∙ 

h, 

(

y

-1) ∙ 

h

*). 

Предварительно найдем в таблице наибольшее и наименьшее значения величин 

а

ij

 -

 допус-

тим, это 

a

min

 и 

а

mах

. Пусть 

b -

 некоторое промежуточное значение: 

a

min

 

< b <

 

a

max

. Обсудим в об-

щих чертах, как построить изолинию 

A

 = 

b.

 Будем для этого (в цикле) просматривать вначале все 

пары ближайших чисел в первой строке таблицы в поисках такой пары, для которой 

b

 находится 

«внутри». Допустим, число 

b

 находится между 

a

1k

 и 

a

1,k+1

, т.е. либо 

a

1k

 < 

b <

 

a

1,k+1

, либо 

a

1k

 > 

b >

 

a

1,k+1

 


background image

 

588 

 

 

Рис. 7.5.

 Пространственная сетка и соответствующая ей таблица значений величины А 

 

С помощью линейной интерполяции найдем соответствующую горизонтальную координа-

ту точки, в которой 

А = b: 

 

 

 

(координата 

у

 определяется номером горизонтальной линии; в данном случае у = 0). 

Найденные координаты запомним и просмотрим первую строку в таблице до конца, затем 

просмотрим вторую строку и  т.д. Покончив с  просмотром строк, мы получим часть точек,  соот-
ветствующих изолинии 

А = b.

 

После  этого  займемся  просмотром  столбцов.  Допустим,  во  втором  столбце  нашлась  пара 

чисел, для которой число 

b

 находится между 

а

p2

 и 

a

p+1,2

. Она дает следующую точку для изолинии. 

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

А = b,

  после  чего  можем,  взяв  другое  значение 

b,

  построить  следующую 

изолинию. Более детально эта процедура изложена ниже в пункте 3.8 на примере построения ли-
ний равного потенциала электрического поля. 

Условные цвета, условное контрастирование

. Еще один интересный прием современной 

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

Приведем примеры. В различных исследованиях температурных полей

 

встает

 

проблема на-

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

Другой способ - набор изотерм - гораздо эффективнее; к нему прибегают некоторые газеты, 

давая состояние и прогноз погоды. Но можно добиться еще большей наглядности, учитывая, что 
большинству людей свойственно, сравнивая разные цвета, воспринимать красный как «горячий», 
голубой как «холодный», а все остальные - между ними. Допустим, что на некоторой территории 
температура в данный момент имеет в разных местах значения от -25°С до + 15°С. Разделим этот 
диапазон на участки с шагом, равным, например, 5° 

 
[-25,-20], [-20,-15],...,[+10,+15], 
 

и закрасим первый из них в ярко-голубой, последний - в ярко-красный, а все остальные - в проме-


background image

 

589 

жуточные оттенки голубого и красного цветов. Получится замечательная наглядная картина тем-
пературного поля. 

А что делать, если дисплей монохромный?! Или если изображение надо перенести с цвет-

ного  дисплея  на  бумагу  при  отсутствии  возможности  цветной  печати?  -Тогда  роль  цвета  может 
сыграть  контраст.  Сделаем  самый  «горячий»  участок  самым  темным,  самый  «холодный»  -  про-
зрачным, а остальные - между ними. Эффектность, конечно, меньше, чем при цветовой раскраске, 
но для наметанного глаза изображение информативно. 

То же самое можно делать при иллюстрации температурного поля и на поверхности обра-

батываемой на станке детали, и на поверхности далекой планеты. 

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

подобному приему визуализации. В задаче о теплопроводности в стержне это даже не очень слож-
но; можно делать такие условные раскраски при моделировании распределения электрических по-
лей. Если заниматься имитационным моделированием конкурирующих популяций, то, раскрасив 
их в разные цвета, можно получить на экране причудливые картины, передающие ход конкурент-
ной борьбы. 

Условные раскраски бывают и гораздо более абстрактными, чем в описанных выше случа-

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

При поиске полезных ископаемых методами аэрофотосъемки с самолетов или космических 

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

Подведем итог: изображения в условных цветах и контрастах - мощнейший прием научной 

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

Программа  147.

  Условная  раскраска  неравномерно  нагретого  стержня  в  разные  моменты 

времени (по заранее заготовленным данным). 

Program Stergen; 

Uses Crt, Graph  
Type Mas2 = Array [0..10, 0..4] of Real; 
Const (Массив распределения температуры в разные моменты времени) 

U : Mas2 

=

 

((3.000,  3.667,  4.333,  5.000,  3.000),  (3.000,  3.628,  4.128,  3.952,  3.000), 

(3.000,  3.514,  3.783,  3.593,  3.000),  (3.000,  3.377,  3.546,  3.396,  3.000), 
(3.000,  3.267,  3.381,  3.272,  3.000),  (3.000,  3.187,  3.266,  3.188,  3.000), 
(3.000, 3.131, 3.185, 3.131, 3.000), (3.000, 3.091, 3.129, 3.091, 3.000), 
(3.000, 3.064. 3.090, 3.064, 3.000), (3.000, 3.044, 3.063, 3.044, 3.000), 
(3.000, 3.031, 3.044, 3.031, 3.000)); 
Var 

M, I, J, N1, Nt : Integer; MaxF, L, T, HI, Ht : Real; 

Procedure Initialize; (Процедура инициализации графического режима)  
Var GraphDriver, GraphMode : Integer; 

Begin 

DetectGraph(GraphDriver, GraphMode) ; 
InitGraph(GraphDriver, GraphMode, ''); 

End; 
(Графическая иллюстрация решения)  
Procedure Postar.ovka (U : Mas2; Nt, N1 : Integer; HI, L, MaxF : Real); 
Var X_N, Shag, Y_N, Shir, Dlin, Color, I, J, K, Y : Integer; 

Flag .: Boolean; Ff : String; Col : Array [0..15] Of Byte; 

Begin 

Initialize; (Инициализация графического режима)  
X_N := GetMaxX Div 6; 

If Nt <= 6 Then M := Nt Else M := Nt Div 2; 
Y_N := GetMaxY Div M - 20; Shir := Y_N Div 2; 


background image

 

590 

Dlin := GetMaxX -2 * X_N; Shag := Trunc(Dlin / N1); Str(Shag,Ff) ; 
Col[0] := 0; Col[l] := 8; Col[2] := 1; (Палитра цветов)  
Col[3] := 9; Col[4] := 3; Col[5] := 11; 
Col[6] := 2; Col[7] := 10; Col[8] := 14; 
Col[9] := 13; Col[l0] := 5; Col[ll] := 12; Col [12] := 4; 

For I :== 0 To M - 1 Do (номер временного промежутка)  
  Begin 
    For J := 0 To N1 - 1 Do (номер участка стержня)  
      Begin  
        Flag := False; 
          For К := 0 To Shag Do  
          Begin  
          For y:= 0 To Shir Do  
          Begin 
          Color := 1 + Round((U[I, J] + (определение номера цвета)  
          (U[I, J + 1] - U[I, J]) * К / Shag - U[0, 0]) / 3 * 16); 

If Random(64) > 32 
Then If Random(64) > 32 Then Color := Color + 1 Else  
  Color := Color - 1; 

          If Not Flag Then (вывод текущей температуры) 

Begin 

Str((U[I,J]+(U(I,J+l]-U[I,J])*K/Shag) : 5 : 3, Ff); 

             OutTextXY(K+X_N+Shag*J, Y_N*(1+1)-19, Ff) ; 
             Flag := True  
          End; 
          {рисование точки} 

        PutPixel(K+X_N+Shag*J, Y+Y_N*(1+I), Col[Color])  
        End  
   End  
End  

End; 
SetColor(White); OutTextXY(150, 450, 'Нажмите любую клавишу '); 

 Repeat Until KeyPressed; CloseGraph  

End; 

Begin (ОСНОВНАЯ ПРОГРАММА) 

L := 4; Т := 10; Hi := 1; Ht := 1; 
N1 := Trunc(L / HI); Nt := Trunc(T / Ht); MaxF := 5; 
Postanovka (U. Nt, N1, HI, L, MaxF)  

End. 

 

§3. МОДЕЛИРОВАНИЕ ФИЗИЧЕСКИХ ПРОЦЕССОВ  

 

3.1. ФИЗИКА И МОДЕЛИРОВАНИЕ 

 

Физика  -  наука,  в  которой  математическое  моделирование  является  чрезвычайно  важным 

методом исследования. Наряду с традиционным делением физики на экспериментальную и теоре-
тическую сегодня уверенно выделяется третий фундаментальный раздел - вычислительная физика 

(computational  physics).

  Причину  этого  в  целом  можно  сформулировать  так:  при  максимальном 

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

 

Таблица 7.1