Компьютерное математическое моделирование на конкретных примерах

Понятие и цели моделирования информационных систем, основные этапы построения математической модели. Алгоритм транспортной задачи с двумя поставщиками и двумя потребителями. Математические модели в среде объектно-ориентированного программирования 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.