- •Лабораторная работа №1 Построение компьютерной модели
- •Пример компьютерной модели «Биоритмы»
- •I этап. Цели моделирования.
- •II этап. Формализация задачи.
- •III этап. Построение математической модели.
- •IV этап. Выбор метода исследования.
- •V этап. Проверка модели на адекватность
- •VI этап. Использование модели.
- •Задание к лабораторной работе
- •Лабораторная работа №2 Моделирование физических процессов в среде табличного процессора. Краткие теоретические сведения
- •Пример выполнения задания
- •Изменение скорости и высоты со временем
- •Изменение скорости и высоты со временем
- •Задание к лабораторной работе
- •Варианты заданий
- •Лабораторная работа №3 Построение графических моделей физических процессов в среде Lazarus Краткие теоретические сведения
- •Пример выполнения задания
- •Задание к лабораторной работе
- •Варианты заданий
- •Лабораторная работа №4 Имитация движения в среде Lazarus. Краткие теоретические сведения
- •Пример выполнения задания
- •Задание к лабораторной работе
- •Лабораторная работа №5 Компьютерное моделирование в экологии Краткие теоретические сведения
- •Лабораторная работа №6 Компьютерное моделирование случайных процессов. Краткие теоретические сведения.
- •Задание к лабораторной работе
- •Литература
Лабораторная работа №3 Построение графических моделей физических процессов в среде Lazarus Краткие теоретические сведения
Построение графиков функций в среде Lazarus. Для построения графических изображений имеется свойство формы Canvas (канва, холст) и его подсвойство Pen (перо). Перо в свою очередь обдадает свойствами Color (цвет) и Width (толщина). Размеры формы определяются свойствами Height (высота) и Width (ширина). Для перемещения из текущего положения в точку (X,Y) служит метод MoveTo(X,Y), для рисования отрезков- LineTo(X,Y), для вывода текста на холст-, TextOut(X,Y,’текст’)
Алгоритм построения графика функции Y=Y(x), где x изменяется на отрезке [a,b] с шагом h
Расчет расположения графика на форме
Отступы от краев формы по горизонтали Hor и вертикали Ver
Определение положения начала координат X0=Hor; Y0=Form2.Height-Ver
Вычисление масштабов Mx=Form2.width/Xmax; My=Form2.Height/Ymax
Построение координатных осей
Горизонтальная MoveTo(X0,Y0); LineTo(Form2.Width-Hor,Y0)
Вертикальная MoveTo(X0,Y0); LineTo(X0,Ver)
Преобразование координат из «обычных» в «экранные» X1:=trunc(X*Mx)+X0; Y0:=trunc(Y*My)+Y0
Начальные установки X=a; цвет и толщина пера; помещение пера в начало координат
Цикл построения графика:
Пока не достигнут правый конец отрезка
Вычисление Y,
Преобразование координат в «экранные»
Построение отрезка из текущей точки в точку (X,Y)
Увеличение x на шаг
Создание приложения с двумя формами. Вторую форму можно создать, например, выбрав в главном меню File, New, Form. Чтобы осуществить взаимодействие двух форм, необходимо включить модуль второй формы в предложение uses раздела реализации модуля первой формы и модуль первой формы в интерфейсный раздел второй формы:
Unit Unit1;
Interface
…
Var Form1:TForm1;
Implementation
// ссылка на модуль 2-ой формы
uses Unit2;
Unit Unit2;
Interface
// ссылка на модуль 1-ой формы
uses Unit1;
…
Var Form2:TForm2;
Implementation
При наступлении определенного события, например, щелчка на кнопке, вторая форма становится видимой и активной, а первая -скрытой:
Procedure Form1Button1Click();
Begin
Form2.Show;
Form1.Hide
End;
Возврат на первую форму происходит при щелчке на кнопке, расположенной на второй форме:
Procedure Form2Button1Click();
Begin
Form1.Show;
Form2.Hide
End;
Пример выполнения задания
Задача. Построить график зависимости скорости от времени для задачи из лабораторной работы №1. Объяснить график. Определить по нему конечное значение скорости.
Мы хотим наблюдать на экране график так, чтобы он занимал всю форму. Поскольку нужно будет еще вводить исходные данные, создадим приложение с двумя формами. На первой форме будут располагаться поля ввода исходных данных, на второй – график. График расположим непосредственно на форме, появляться он будет при наступлении события «Прорисовка формы». Роль аргумента играет время , роль функции – скорость. Поскольку обе величины принимают только неотрицательные значения, расположим начало координат в левом нижнем углу формы. На форме должны быть изображены и подписаны координатные оси.
Текст процедуры- обработчика события OnPaint компонента Form2:
procedure TForm2.FormPaint(Sender: TObject);
var Hor,Ver:integer; // горизонтальный и вертикальный
отступ от краев формы
x0,y0://начало координат
x,y:// текущие координаты точки
Mx,My:real;//горизонтальный и вертикальный масштабы
Begin
// расчет расположения графика на форме
Hor:=10;Ver:=15; x0:=Hor; y0:=Form2.Height-Ver;
Mx:=Form2.Width/16;// ширину формы делим на tmax My:=Form2.Height/63;// высоту формы- на Vmax
with Canvas do begin
Pen.Color:=clBlack; Pen.Width:=2
//горизонтальная ось
MoveTo(X0,Y0);LineTo(Form2.Width-Hor,Y0); TextOut(Form2.Width-Hor,Y0-2,'t');
//вертикальная ось
MoveTo(X0,Y0);LineTo(X0,Ver); TextOut(X0-5,Ver,'v');
//начальные значения
v:=0;t:=0;h:=h0; c:=0.40;S:=pi*r*r;
//коэффициенты силы сопротивления
k1:=6*pi*mu*r; k2:=0.5*S*c*ro;
Pen.Color:=clRed; // цвет пера - красный
MoveTo(x0,y0); // перо- в начало координат
//цикл построения графика до раскрытия парашюта
repeat
h:=h-v*dt;
v:=v+(m*g-k1+v-k2*v*v)/m*dt; // изменение t,h и v
t:=t+dt ;
X:=trunc(t*Mx)+X0;y:=trunc(-v*My)+Y0;//перевод координат
в экранные
LineTo(x,y); //построение очередной точки графика
until h<h1 ;
c:=0.55; S1:=pi*r1*r1; // при раскрытии парашюта меняются
k1:=6*pi*mu*r1; // форма тела, его радиус, площадь
k2:=0.5*S1*c*ro; // и коэффициенты силы сопротивления
//цикл построения графика с момента раскрытия парашюта до приземления
repeat
h:=h-v*dt;v:=v+(m*g-k1+v-k2*v*v)/m*dt;
t:=t+dt ;
X:=trunc(t*Mx)+X0;y:=trunc(-v*My)+Y0;
LineTo(x,y);
until h<0 ;
end;
end;
На рис.4 результат – график изменения скорости парашютиста для исходных данных, введенных на первой форме (рис.3)
Рис 3. Ввод исходных данных на первой форме
Рис 4. График зависимости скорости от времени на второй форме