Файл: Лекции_по_дисциплине.pdf

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

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

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

Добавлен: 20.04.2024

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

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

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

Тарова Инна Николаевна

тие начинающих приобщаться к компьютеру.

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

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

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

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

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

40



Компьютерное моделирование

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

Рассмотрим подробнее вопрос о построении графиков функций. Построение графиков функций - неотъемлемая часть большинства программ, предназначенных для обучения математике, физике. Ниже представлен пример программы построения графика функции y=x*x*sin(l/x) на произвольном отрезке [а,b]. Количество точек графика (параметр n) также задается произвольно (точка х=0 исключается, так как в ней функция не определена). В программе также определяются величины tl=(xl-x0)/(b-a) и t2=(yl-y0)/(2m), которые означают масштабы по осям X и Y соответственно. График рассматриваемой функции представлен на двух отрезках [а,b] и [-0.1,0.1]. Чтобы построить график другой функции, достаточно задать ее аналитический вид в описании функции (function f).

Программа

program grafik; uses crt, graph;

var gd, gin, errCode: integer; a,b: real;

n: integer;

function f(x:real):real; begin

if x<>0 then f:=x*x*sin(1/x); end;

procedure grafun(x0,xl,y0,yl,n: word; a,b: real); var h,m,x, tl,t2: real;

i, u,v,xv,yv: word; begin

h:=(b-a)/n; {поиск максимума f(x)} m:=abs (f(a));

for i:=1 to n do

if m<abs(f(a+i*h)) then m:=abs(f(a+i*h)); tl:=(x1-x0)/(b-a);

t2:-=(y1-y0)/(2*m); {построение координатных осей) setfillstyle(l,15); bar(x0-5,y0-5,xl+5,yl+5) ; xv:=round(x0-a*t1); yv:=round((y0+yl)/2) ;

setcolor(l); line(xv,y0,xv,yl); line(x0,yv,xl,yv) ;

41

Тарова Инна Николаевна

Moveto(x0,yv-round(f(a)*t2)); {установка курсора в начало графика)

setcolor(3); {построение графика} for i:=l to n do

begin

x:=a+i*h; u:=x0+round((x-a)*t1) ; v:=yv-round(f(x)*t2);

lineto(u,v);

end;

end; (конец процедуры) begin

clrscr;

write ('введи a,b и n : '); readln(a,b,n); gd:=Detect; InitGraph(gd,gm,''); errCode:=GraphResult; if errCode = grOk then begin

grafun(100,500,50,300,n,a,b); grafun(550,620,10,100,200,-0.1,0.1) ; repeat until keypressed; CloseGraph;

end;

else writeln('errCode=',errCode); end.

Для изображения поверхностей, определяемых функцией двух переменных z=f(x,y), можно использовать разные способы. Одним из них явля-

ется метод построения семейства одномерных графиков функции z=f(x,y) от одной переменной или при различных фиксированных значениях другой. Это может быть хорошей тренировкой для самостоятельной работы по освоению графики.

Построение движущихся изображений. Особую ценность в графике представляет организация движения фрагментов рисунка. Наиболее просто это сделать по следующему плану:

нарисовать фрагмент в нужном месте экрана;

стереть фрагмент, рисуя его цветом фона или используя процедуру cleardevice;

снова нарисовать фрагмент в другом месте экрана.

Такой способ осуществлен в программе billiard, где два шарика радиу-

42


Компьютерное моделирование

сом 5 пикселей разных цветов двигаются с одинаковой скоростью внутри зеленого, прямоугольника, построенного с помощью процедуры bar. Процедура blou измеряет смещение центра шарика от сторон прямоугольника по каждой оси и, если это смещение на следующем шаге цикла станет меньше радиуса, изменяет направление движения, моделируя поведение упругого шара при ударе о стенку. .

В программе также рассмотрена ситуация соприкосновения шариков во время их движения. Она решается примитивно просто: каждый шарик меняет направление своего движения на противоположное.

Программа

program billiard;

uses crt,graph;

var x,y,dx,dy,gd,gm:integer; xl,yl,dxl,dyl:integer;

procedure blow(a,b:integer; var c,d:integer); begin

if (a<107) or (a>523) then c:=-c; if (b<107) or (b>363) then.d:=-d; end;

begin gd:=detect;

initgraph(gd,gm,'');

setcolor(14);

setlinestyle(0,0,1);

rectangle(99,99,531,371);

setfillstyle(l,3);

bar(100,100,530,370); x:=320; y:=240; dx:=2; dy:=2;

xl:=320; yl:=200; dxl:=-2; dyl:=-2; repeat circle(x,y,5);

setcolor(4); circle(xl,yl,5); blow(x,y,dx,dy); blow(xl,yl,dxl,dyl); delay(10);

if (abs(x-xl)<=10) and (abs(y-yl)<=10) then begin

dx:=-dx; dy:=-dy; dxl:=-dxl; dyl:=-dyl; delay(300);

end; setcolor( 3 ) ;

43

Тарова Инна Николаевна

circle(x,y,5); x:=x+dx; y:=y+dy; setcolor(3); circle(xl,yl,5);

xl:=xl+dxl; yl:=yl+dyl; setcolor(14);

until keypressed; closegraph;

end.

Еще один способ организации движения на экране, широко применяющийся в компьютерных играх, связан с использованием нескольких экранных страниц. В режиме Vgamed их две, а в режиме Vgalo - четыре. Страницы имеют номера: 0,1,... В любой момент времени одну из страниц можно сделать видимой и посмотреть ее содержимое на экране с помощью процедуры

setvisualpage(номep).

Визуальная страница обычно пассивна, т.е. на ней нельзя выполнять графические процедуры. Другую страницу можно объявить активной с помощью процедуры setactivepage(номер). Активная страница невидима для пользователя. На ней можно подготовить другой рисунок. В следующий момент можно поменять роли страниц, т.е. визуальную сделать активной и невидимой и на ней рисовать следующий кадр, а бывшую активную сделать визуальной и показать объект в новом месте экрана.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Какие черты объекта отражает модель?

2.Как соотносятся понятия «аналитическое решение» и «компьютерное решение».

3.Перечислите цели моделирования.

4.Перечислите этапы процесса компьютерного моделирования.

5.Какие параметры называются детерминированными? вероятностными?

6.Какой процесс называют ранжированием? Для чего он нужен?

7.Расскажите о различных типах классификации моделей.

8.Что такое имитационное моделирование?

9.Расскажите о способах организации диалога человека и ЭВМ.

10.Что такое компьютерная графика? Какие виды машинной графики вы знаете?

11.Опишите алгоритм построения графика функции на ЭВМ.

44


ЛЕКЦИИ по дисциплине: «Компьютерное моделирование» Физико-математический факультет, 10 семестр, всего 33 часа

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

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

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

Таблица 3.1

Лабораторный эксперимент

Вычислительный эксперимент

Образец

Модель

Физический прибор

Программа для компьютера

Калибровка прибора

Тестирование программы

Измерение

Расчет

Анализ данных

Анализ данных

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