(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Маятник. Исходник на DELPHI. (исходники)

Попробуем смоделировать движение физического маятника, т.е. будем решать численными методами уравнения движения.
Что имеем:
- груз массой m в условиях действия гравитационного поля подвешен на нерастяжимом безинерционном стержне длиной l и отклонен от нормали на угол a0;
- во время движения под действием силы тяжести на груз действуют тормозящие силы:
- аэродинамическая fa = cx * vt^2;
- кулоновская сила трения в оси качения fk
- в момент времени t=0 груз приобретает свободу движения, ограниченную силой реакции стержня.

На груз действуют:
- тангенциальная составляющая сила тяжести ft = p * sin(a);
- аэродинамическая сила fa = cx * vt^2;
- кулоновская сила трения fk;
Итого:
fs = ft - sgn(vt) * fa - sgn(vt) * fk
sgn = 1 при vt > 0
sgn = -1 при vt < 0
sgn = 0 при vt = 0

В начальный момент времени:
vt = 0
a = a0
x = l * sin(a)
y = l*cos(a)

Начало моделирования с шагом по времени dt.
//*****************************
Груз приобретает ускорение at = fs / m
Скорость vt = vt + at * dt
Элементарный путь ds = vt * dt
Элементарный угол da = ds / l
Полный угол a = a + da
Координаты
x = x + l * sin(a)
y = y + l * cos(a)
//*****************************

Все вместе это называется численное интегрирование дифференциального уравнения движения физического маятника в условиях действия диссипативных сил сопротивления.

dt = дискретность по времени, можно константой
fs - суммарная сила, действующая на груз

--------------------------------------------------------------------------------
slymro

unit unit1;

interface

uses
windows, sysutils, classes, graphics, forms,
stdctrls, extctrls, actnlist, controls, menus, appevnts;

type
tform1 = class(tform)
groupbox1: tgroupbox;
label1: tlabel;
u_edit: tedit;
label2: tlabel;
l_edit: tedit;
label3: tlabel;
g_edit: tedit;
image: timage;
button1: tbutton;
button2: tbutton;
label4: tlabel;
t_edit: tedit;
image1: timage;
timer1: ttimer;
actionlist1: tactionlist;
startacnt: taction;
stopacnt: taction;
log: tmemo;
procedure startacntexecute(sender: tobject);
procedure startacntupdate(sender: tobject);
procedure stopacntexecute(sender: tobject);
procedure stopacntupdate(sender: tobject);
procedure timer1timer(sender: tobject);
private
u,l,g,t,a:extended;
dt0:dword;
public
{ public declarations }
end;

var
form1: tform1;

implementation
uses sysconst;
{$r *.dfm}

procedure tform1.startacntexecute(sender: tobject);
begin
u:=strtofloat(u_edit.text);
l:=strtofloat(l_edit.text);
g:=strtofloat(g_edit.text);
a:=l*sin(u*pi/180);
t:=2*pi*sqrt(l/g);
dt0:=gettickcount;
t_edit.text:=format('%f',[t]);
doublebuffered:=true;
timer1.enabled:=true;
end;

procedure tform1.startacntupdate(sender: tobject);
begin
taction(sender).enabled:=not timer1.enabled;
end;

procedure tform1.stopacntexecute(sender: tobject);
begin
timer1.enabled:=false;
end;

procedure tform1.stopacntupdate(sender: tobject);
begin
taction(sender).enabled:=timer1.enabled;
end;

procedure tform1.timer1timer(sender: tobject);
const pr:integer=7;
var
dt,x,y,k:extended;
px,py,cx,cy:integer;
begin
if not timer1.enabled then exit;
//Математика маятника
dt:=(gettickcount-dt0)/1000;
x:=a*cos(dt/t*2*pi);
y:=sqrt(l*l-x*x);

log.lines[0]:='x/y: '+format('%f',[x])+'/'+format('%f',[y]);

//Перевод в координаты отрисовки
k:=trunc(image.height*0.9);
cx:=image.width div 2;
cy:=20;
px:=trunc(x*k/l)+cx;
py:=trunc(y*k/l)+cy;

//Отрисовка
with image.canvas do
begin
brush.color:=rgb(0,0,0);
pen.color:=rgb(255,255,255);
fillrect(cliprect);
moveto(cx,cy);
lineto(px,py);
brush.color:=pen.color;
ellipse(px-pr,py-pr,px+pr,py+pr);
end;
end;

end.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 27.01.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
SAP Crystal Reports 2008 INTL WIN NUL License
Quest Software. TOAD Professional Edition
JIRA Software Commercial (Cloud) Standard 10 Users
Bamboo
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
eManual - электронные книги и техническая документация
Мир OLAP и Business Intelligence: новости, статьи, обзоры
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100