double arrow

Пример. Исследовать падение шарика радиуса R с высоты h

Задачи исследования:

1. Получить зависимости h=f(t), v=f(t) при начальных значениях r,v0,h0,k1,k2.

2. Получить семейство графиков h=f(t,r), v=f(t,r).

3. Получить зависимость h=f(r), v=f(r) при t - const

Исходные данные:

1. Модель объекта падения, R - радиус шарика, h - высота падения, v0 - начальная скорость падения, k1 k2 - коэффициенты внешней среды.

2. - площадь сечения тела, поперечного по отношению к потоку

3. плотность шарика;

4. – плотность воздуха.

5.

6. c = 0.4 – коэффициент лобового сопротивления шарика;

var

Form4: TForm4;

km,r,m,vo,ho,s,p,v,a,dv,da,c:double;

h1,h2,cn,ck,dc,t,dt,y1,y2,dy1,dy2:double;

ind,k:integer;

arrt,arrv,arra,arrh:array[1..10000] of double;

implementation

uses Unit1, Unit5;

//описание функции

function ff(m,km,r,c,s,p,v:double):double;

begin

ff:=(m*9.8-6*km*Pi*r*v-0.5*c*s*p*v*v)/m;

end;

//Кнопка возврата к титульному листу

procedure TForm4.N3Click(Sender: TObject);

begin

form5.show;

for ind:=0 to 7 do

begin

form5.Chart1.SeriesList[ind].Clear;

form5.Chart2.SeriesList[ind].Clear;

end;

//Входные параметры

r:=strtofloat(edit1.Text);//радиус падующего тела

km:=strtofloat(edit2.text);//коэффициент вязкости

s:=strtofloat(edit3.Text);//площадь падующего тела

p:=strtofloat(edit4.Text);//плотность среды

ho:=strtofloat(edit5.Text);//начальная высота

vo:=strtofloat(edit6.Text);//начальная скорость

m:=strtofloat(edit7.Text);//масса падающего тела

c:=0.1;//коэффициент лобового сопротивления среды

k:=0;//номер графика

// 1

while c<=1.5 do

begin

ind:=0;

t:=0;dt:=0.1;

y1:=vo;

y2:=ff(m,km,r,c,s,p,vo);

while t<=10 do

begin

form5.Chart1.SeriesList[k].Add(y1,floattostr(t));

dy1:=dt*y2;

dy2:=dt*ff(m,km,r,c,s,p,y1);

y1:=y1+dy1;

y2:=y2+dy2;

t:=t+dt;

end;

c:=c+0.2;

k:=k+1;

end;

//2

k:=0;

t:=30;y1:=vo;y2:=ff(m,km,r,c,s,p,vo);

while t<=44 do

begin

c:=0.1;

while c<=2 do

begin

form5.Chart2.SeriesList[k].Add(y2,floattostr(c));

dy1:=dt*y2;

dy2:=dt*ff(m,km,r,c,s,p,y1);

y1:=y1+dy1;

y2:=y2+dy2;

c:=c+0.1;

end;

t:=t+2;

k:=k+1;

end;

end;

//Кнопка ввода данных

procedure TForm4.N1Click(Sender: TObject);

//Кнопка построения графика

procedure TForm4.N2Click(Sender: TObject);

begin

//очистка старых графиков

for ind:=0 to 7 do

begin

form4.Chart1.SeriesList[ind].Clear;

form4.Chart2.SeriesList[ind].Clear;

end;

//Входные параметры

r:=strtofloat(edit1.Text);//радиус падующего тела

km:=strtofloat(edit2.text);//коэффициент вязкости

s:=strtofloat(edit3.Text);//площадь падующего тела

p:=strtofloat(edit4.Text);//плотность среды

ho:=strtofloat(edit5.Text);//начальная высота

vo:=strtofloat(edit6.Text);//начальная скорость

m:=strtofloat(edit7.Text);//масса падающего тела

cn:=0.1;ck:=1.5;//интервал лобового сопротивления среды

dc:=(1.5-0.1)/7;//шаг изменения лобового сопротивления

k:=0;//номер графика

// цикл по лобовому сопротивлению

while cn<=ck do

begin

v:=vo;//первая производная расстояния по времени- начальная скорость

a:=1; //вторая производная расстояния по времени-ускорение

ind:=1;//счетчик записи данных в массивы

t:=0;//счетчик подчета времени падения тела

h1:=ho;//высота с которой падает тело

h2:=0; // тело лежит на земле

//цикл времени падения тела

while h1>=h2 do

begin

//запись в массивы полученных данных

arrh[ind]:=h1;//высота

arrv[ind]:=v;//скорость

arrt[ind]:=t;//время

//вывод графиков

form4.Chart1.SeriesList[k].Add(arrh[ind],floattostr(arrt[ind]));

form4.Chart2.SeriesList[k].Add(arrv[ind],floattostr(arrt[ind]));

// решение дифференциального уравнения методом Эйлера

dv:=0.01*a;

da:=0.01*ff(m,km,r,cn,s,p,a);

v:=v+dv;

a:=a+da;

h1:=h1-arrv[ind]*arrt[ind];//изменение высоты за время t

t:=t+0.01;//изменение времени

ind:=ind+1;

end;

//переход к следующему коэффициенту лобового сопротивления

// и соответсвенно к следующему графику

k:=k+1;

cn:=cn+dc;

end;

end;

procedure TForm4.N4Click(Sender: TObject);

begin

form4.Hide;

form5.hide;

form1.Show;

end;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: