Компьютерное математическое моделирование на конкретных примерах
Понятие и цели моделирования информационных систем, основные этапы построения математической модели. Алгоритм транспортной задачи с двумя поставщиками и двумя потребителями. Математические модели в среде объектно-ориентированного программирования Delphi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 22.03.2019 |
Размер файла | 6,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
start:=getTickCount;
if (animation=1) then begin
repeat stop:=gettickcount until (stop-start)>=50;
image1.Repaint;
end;
image1.Canvas.Moveto(10+x,420-y);
image1.Canvas.lineto(10+x,420-y);
t:=t+0.01;
end;
end;
// Процедура, которая по считанному значению цвета ставить в параметры кисти соответствующую раскраску.
procedure setcolor (image1: Timage; pencolor: string);
begin
if pencolor='Бирюзовый' then image1.canvas.pen.color:=clAqua;
if pencolor='Черный' then image1.canvas.pen.color:=clBlack;
if pencolor='Синий' then image1.canvas.pen.color:=clBlue;
if pencolor='Ярко-розовый' then image1.canvas.pen.color:=clFuchsia;
if pencolor='Зеленый' then image1.canvas.pen.color:=clGreen;
if pencolor='Салатовый' then image1.canvas.pen.color:=clLime;
if pencolor='Каштановый' then image1.canvas.pen.color:=clMaroon;
if pencolor='Зелено-голубой' then image1.canvas.pen.color:=clTeal;
if pencolor='Красный' then image1.canvas.pen.color:=clRed;
if pencolor='Оливковый' then image1.canvas.pen.color:=clOlive;
if pencolor='Темно-синий' then image1.canvas.pen.color:=clNavy;
if pencolor='Фиолетовый' then image1.canvas.pen.color:=clPurple;
end;
// Основная процедура, привязанная к кнопке "рассчитать"
procedure TForm1.Button1Click(Sender: TObject);
var
v,kx,ky, a,g, l,h: real;
i, z, animation: integer;
pencolor : string;
begin
image1.picture:=nil;
image1.Canvas.pen.width:=5;
drawgrid(image1);
pencolor:=combobox1.Text;
setcolor(image1,pencolor);
c[j]:=pencolor;
g:=9.8;
try
v:=strtofloat(edit1.Text);
a:=strtofloat(edit2.Text)*pi/180;
if ((v<=0) or (a<=0) or (a>=90)) then begin
showmessage(`Неверные значения скорости v и угла a! V - величина положительная, а - угол первой четверти: 0<a<90');
exit;
end;
if (v>=7900) then begin
showmessage('7900м/сек - это первая космическая скорость для предметов на Земле При большей скорости он покинет нашу планету.');
exit;
end;
// Если все даные введены верно, то записываем в массив траекторий данные:
tr[j,1]:=v;
tr[j,2]:=a;
except
showmessage(`Неправильный ввод данных!');
exit;
end;
l:=v*v*sin(2*a)/g;
kx:=760/l;
tr[j,3]:=kx;
edit4.text:=floattostr(roundto(l,-3));
h:=v*v*sin(a)*sin(a)/(2*g);
ky:=400/h;
tr[j,4]:=ky;
edit3.Text:=floattostr(roundto(h,-3));
z:=j;
drawnum(image1,kx,ky);
if (drawlines) then drawnet(image1);
for i:=0 to z do begin
setcolor(image1, c[i]);
image1.Canvas.pen.width:=5;
if ((i=z) and (checkbox1.Checked=true)) then animation:=1 else animation:=0;
drawgraf(image1,tr[i,1],tr[i,2],kx,ky,animation);
end;
// После прорисовки траектории, првоеряем на видимость кнопки "Предыдущая", "следующая" и прочие.
if j>=1 then button3.Enabled:=true else button3.Enabled:=false;
j:=j+1;
k:=j-1;
if j>0 then begin
button5.Enabled:=true;
button6.Enabled:=true;
button2.Enabled:=true;
button7.Enabled:=true;
end;
end;
// Процедура которая очищает нашу рабочую область и стирает из памяти траектории, точнее индекс траекторий опускает до 0.
procedure TForm1.Button2Click(Sender: TObject);
begin
image1.picture:=nil;
j:=0;
k:=0;
button5.Enabled:=false;
button6.Enabled:=false;
button2.Enabled:=false;
button7.Enabled:=false;
end;
// Процедуры на кнопки "Предыдущая", "Следующая", "по максимальной длине", "по максимальной высоте" очень похожи. Сначала выбирается траектория, по кторой будет происходить масштабирование (то есть именно для этой траектории будут взять kx и ky). В случае с первыми двумя это просто k+1 или k-1, а в последних двух сначала мы ищем максимальное значение по всем траекториям в поисках нужного k. Ну а после просто заново рисуем все наши траектории. Ну и действия кнопок по которым мы отключаем или включаем траекторию, тоже очевидны: мы просто перерисовываем все траектории с включенными линиями сетки или без них.
procedure TForm1.Button3Click(Sender: TObject);
var
i, z: integer;
l, h, v,a: real;
begin
image1.picture:=nil;
k:=k-1;
drawgrid(image1);
z:=j-1;
drawnum(image1,tr[k,3],tr[k,4]);
if (drawlines) then drawnet(image1);
For i:=0 to z do begin
setcolor(image1, c[i]);
drawgraf(image1,tr[i,1],tr[i,2],tr[k,3],tr[k,4],0);
end;
if k=0 then button3.Enabled:=false;
if k<j-1 then button4.Enabled:=true;
v:=tr[k,1];
a:=tr[k,2];
l:=v*v*sin(2*a)/9.8;
h:=v*v*sin(a)*sin(a)/(2*9.8);
edit4.text:=floattostr(roundto(l,-3));
edit3.Text:=floattostr(roundto(h,-3));
edit1.Text:=floattostr(tr[k,1]);
edit2.Text:=floattostr(round(tr[k,2]*180/pi));
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i,z: integer;
l, h, v,a: real;
begin
image1.picture:=nil;
k:=k+1;
drawgrid(image1);
if (drawlines) then drawnet(image1);
z:=j-1;
for i:=0 to z do begin
setcolor(image1, c[i]);
drawgraf(image1,tr[i,1],tr[i,2],tr[k,3],tr[k,4],0);
end;
drawnum(image1,tr[k,3],tr[k,4]);
if k>=j-1 then button4.Enabled:=false;
if k>0 then button3.Enabled:=true;
v:=tr[k,1];
a:=tr[k,2];
l:=v*v*sin(2*a)/9.8;
h:=v*v*sin(a)*sin(a)/(2*9.8);
edit4.text:=floattostr(roundto(l,-3));
edit3.Text:=floattostr(roundto(h,-3));
edit1.Text:=floattostr(tr[k,1]);
edit2.Text:=floattostr(round(tr[k,2]*180/pi));
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i,z: integer;
l, h, v,a,max: real;
begin
max:=tr[0,1]*tr[0,1]*sin(tr[0,2])*sin(tr[0,2])/(2*9.8);
z:=j-1;
for i:=0 to z do begin
if (tr[i,1]*tr[i,1]*sin(tr[i,2])*sin(tr[i,2])/(2*9.8)>max) then begin
max:=tr[i,1]*tr[i,1]*sin(tr[i,2])*sin(tr[i,2])/(2*9.8);
k:=i;
end;
end;
image1.picture:=nil;
drawgrid(image1);
drawnum(image1,tr[k,3],tr[k,4]);
if (drawlines) then drawnet(image1);
for i:=0 to z do begin
setcolor(image1, c[i]);
drawgraf(image1,tr[i,1],tr[i,2],tr[k,3],tr[k,4],0);
end;
if k>=j-1 then button4.Enabled:=false;
if k>0 then button3.Enabled:=true;
v:=tr[k,1];
a:=tr[k,2];
l:=v*v*sin(2*a)/9.8;
h:=v*v*sin(a)*sin(a)/(2*9.8);
edit4.text:=floattostr(roundto(l,-3));
edit3.Text:=floattostr(roundto(h,-3));
edit1.Text:=floattostr(tr[k,1]);
edit2.Text:=floattostr(round(tr[k,2]*180/pi));
end;
procedure TForm1.Button7Click(Sender: TObject);
var
i, z: integer;
begin
image1.picture:=nil;
drawgrid(image1);
z:=j-1;
drawnum(image1,tr[k,3],tr[k,4]);
For i:=0 to z do begin
setcolor(image1, c[i]);
drawgraf(image1,tr[i,1],tr[i,2],tr[k,3],tr[k,4],0);
end;
drawnet(image1);
drawlines:=true;
button7.Enabled:=false;
button8.Enabled:=true;
end;
procedure TForm1.Button8Click(Sender: TObject);
var
i, z: integer;
begin
image1.picture:=nil;
drawgrid(image1);
z:=j-1;
drawnum(image1,tr[k,3],tr[k,4]);
For i:=0 to z do begin
setcolor(image1, c[i]);
drawgraf(image1,tr[i,1],tr[i,2],tr[k,3],tr[k,4],0);
end;
drawlines:=false;
button7.Enabled:=true;
button8.Enabled:=false;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
i,z: integer;
l, h, v,a,max: real;
begin
max:=tr[0,1]*tr[0,1]*sin(2*tr[0,2])/9.8;
z:=j-1;
for i:=0 to z do begin
if (tr[i,1]*tr[i,1]*sin(2*tr[i,2])/9.8>max) then begin
max:=tr[i,1]*tr[i,1]*sin(2*tr[i,2])/9.8;
k:=i;
end;
end;
image1.picture:=nil;
drawgrid(image1);
drawnum(image1,tr[k,3],tr[k,4]);
if (drawlines) then drawnet(image1);
for i:=0 to z do begin
setcolor(image1, c[i]);
drawgraf(image1,tr[i,1],tr[i,2],tr[k,3],tr[k,4],0);
end;
if k>=j-1 then button4.Enabled:=false;
if k>0 then button3.Enabled:=true;
v:=tr[k,1];
a:=tr[k,2];
l:=v*v*sin(2*a)/9.8;
h:=v*v*sin(a)*sin(a)/(2*9.8);
edit4.text:=floattostr(roundto(l,-3));
edit3.Text:=floattostr(roundto(h,-3));
edit1.Text:=floattostr(tr[k,1]);
edit2.Text:=floattostr(round(tr[k,2]*180/pi));
end;
end.
Размещено на Allbest.ru
Подобные документы
Исследование метода математического моделирования чрезвычайной ситуации. Модели макрокинетики трансформации веществ и потоков энергии. Имитационное моделирование. Процесс построения математической модели. Структура моделирования происшествий в техносфере.
реферат [240,5 K], добавлен 05.03.2017Оформление технического задания на разработку программы или программного изделия для вычислительных машин и комплексов. Принципы объектно-ориентированного программирования в среде Delphi. Ознакомление на конкретных примерах с технологиями OLE и СОМ.
отчет по практике [8,4 M], добавлен 04.02.2011Понятие математической модели. Безусловные и условные типы задач оптимизации. Принципы, термины и преимущества объектно-ориентированного программирования. Характеристика среды разработки Delphi 7.0. Программная реализация метода кодирования Хаффмена.
курсовая работа [1,3 M], добавлен 05.10.2014Методы решения задач линейного программирования: планирования производства, составления рациона, задачи о раскрое материалов и транспортной. Разработка экономико-математической модели и решение задачи с использованием компьютерного моделирования.
курсовая работа [607,2 K], добавлен 13.03.2015Компьютерное моделирование - вид технологии. Анализ электрических процессов в цепях второго порядка с внешним воздействием с применением системы компьютерного моделирования. Численные методы аппроксимации и интерполяции и их реализация в Mathcad и Matlab.
курсовая работа [1,1 M], добавлен 21.12.2013Теоретические основы моделирования систем в среде имитационного моделирования AnyLogic. Средства описания поведения объектов. Анимация поведения модели, пользовательский интерфейс. Модель системы обработки информации в среде компьютерного моделирования.
курсовая работа [1,5 M], добавлен 15.05.2014Порядок описание процесса разработки модели для разрешения задачи программирования с помощью средств языка программирования. Структуры данных и основные принципы их построения. Этапы компьютерного моделирования. Этапы и значение написания программы.
курсовая работа [19,5 K], добавлен 19.05.2011Концептуальное, физическое, структурно-функциональное, математическое (логико-математическое), имитационное (программное) и компьютерное моделирование. Построение имитационной модели в среде AnyLogic. Дискретные и непрерывно изменяющиеся модели.
курсовая работа [1,6 M], добавлен 21.11.2013Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.
курсовая работа [40,8 K], добавлен 15.07.2009Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012