Форум: "Прочее";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Вниз"Формула маятника" Найти похожие ветки
← →
RASkov (2007-01-23 12:39) [0]Люди, подскажите пожалуйста(ну не силен я в математике)формулу по которой можно реализовать движение типа маятника, т.е. мне нужно расчитывать координаты точки по полукругу относительно центра, с уменьшением длинны качания. Т.е, на веревке висит груз оттянули в сторону, отпустили... вот нужно координаты ентого груза расчитать в 2D.
← →
novill © (2007-01-23 12:52) [1]Задача в общем школьная, но самый большой вопрос вызывает фраза
> с уменьшением длинны качания
поясни...
← →
Думкин © (2007-01-23 12:52) [2]
> с уменьшением длинны качания
Расшифруй.
Дело не в математике. Дело хотя бы для начала в собственном понимании - а чего же я хочу. А то как в мультике: "так вы и есть за меня будете? - Ага".
← →
clickmaker © (2007-01-23 12:56) [3]
> с уменьшением длинны качания
енто называется "амплитуда колебаний"
← →
TCrash (2007-01-23 12:56) [4]novill © (23.01.07 12:52) [1]
Я так понимаю не длины, а амплитуды
← →
RASkov (2007-01-23 12:58) [5]> [1] novill © (23.01.07 12:52)
> Задача в общем школьная,
В школе, математику вроде знал, а сейчас забыл все :(
> > с уменьшением длинны качания
>
> поясни...
> Расшифруй.
Ну это его остановка, т.е. что бы он не вечно качался, а как груз на веревке, через какое-то время остановился.
← →
TCrash (2007-01-23 12:59) [6]Задача по механике. Вспоминать влом, но использовать нужно E=mv^2 , v=v0+at, где а=g ну и из той же оперы.
В общем учебник физики за 6й класс
← →
TCrash (2007-01-23 13:00) [7]RASkov (23.01.07 12:58) [5]
>Ну это его остановка, т.е. что бы он не вечно
>качался, а как груз на веревке, через какое-то время
>остановился.
Тогда еще и сопромат :)
Учитывать жесткость веревки :)
← →
Думкин © (2007-01-23 13:04) [8]
exp(-aT)*sin(b0+bT)
← →
novill © (2007-01-23 13:08) [9]> [5] RASkov (23.01.07 12:58)
Я сейчас эти уравнения не возьмусь записать даже на форуме.
Вбей в поиск "затухающие колебания на примере физического маятника" и быстро найдешь нужные...
← →
RASkov (2007-01-23 13:09) [10]> [3] clickmaker © (23.01.07 12:56)
> [4] TCrash (23.01.07 12:56)
Вот - вот... амплитуды, наверное.
O <- Центр
.
.
.
.
.
.
G <-груз
O
.
.
.
.
.
вот .
<-----------> G
> [8] Думкин © (23.01.07 13:04)
Если не трудно можно немного прокомментировать что, где, почем....
Спасибо.
← →
RASkov (2007-01-23 13:09) [11]> [9] novill © (23.01.07 13:08)
Сейчас попробую, спасибо.
← →
RASkov (2007-01-23 13:29) [12]> [9] novill © (23.01.07 13:08)
Нашел гору формул, типа как здесь привели.... сижу думаю что с ними сделать, ... т.е. как на делфи все это изобразить :(
Ну вообщем если никто больше помочь не сможет спасибо и на этом.
← →
novill © (2007-01-23 13:48) [13]> [12] RASkov (23.01.07 13:29)
тебя будет интересовать формула угла отклонения от вертикальной оси.
Зная координаты точки крепления, длину маятника и угол отклонения ты сможешь получить координаты точки на конце маятника.
← →
Думкин © (2007-01-23 13:59) [14]> RASkov (23.01.07 13:29) [12]
Все-таки какая модель предполагается? Для одной достаточно того, чтоя привел с комментариями, для другой таки придется численно решать дифф. уравнения ибо в квадратурах не решается.
← →
Jeer © (2007-01-23 14:05) [15]А мы пойдем другим путем:))
Попробуем смоделировать движение физического маятника, т.е. будем решать
численными методами уравнения движения.
Что имеем:
- груз массой 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)
//*****************************
Все вместе это называется численное интегрирование дифференциального уравнения движения физического маятника в условиях действия диссипативных сил сопротивления.
Думкин привел результат аналитического решения дифф.ур-ний движения математического маятника в условиях действия константной диссипативной силы трения.
← →
palva © (2007-01-23 14:10) [16]Синусоида умноженная на экспоненту от минус t. Кучу параметров подобрать.
← →
Jeer © (2007-01-23 14:20) [17]palva © (23.01.07 14:10) [16]
повтор, см [8]
← →
palva © (2007-01-23 14:33) [18]> повтор, см [8]
Одна школа
← →
Vlad Oshin © (2007-01-23 16:14) [19]
> Jeer © (23.01.07 14:05) [15]
Вы сейчас с кем говорили?
← →
Jeer © (2007-01-23 16:22) [20]
> Vlad Oshin © (23.01.07 16:14) [19]
Иногда достаточно факта, что "слушают":)
← →
RASkov (2007-01-23 20:34) [21]> [15] Jeer © (23.01.07 14:05)
Ох и запутался я...
> Иногда достаточно факта, что "слушают":)
Слушаем, слушаем... :)
Народ, кому не трудно, переведите это [15] на паскаль:)
Т.е. подправьте код:procedure StartPendulum(const XCentr, YCentr, L: Integer; const Angle: Extended);
var X, Y, Speed, At: Extended;
begin
Fs:=?
At:=? / ?(пусть m = 50... гр.)
while Speed<>0 do begin
Form1.Canvas.FillRect(Form1.Canvas.ClipRect);
//Груз приобретает ускорение At = Fs / m
//Скорость Speed = Speed + At * dT
//Элементарный путь dS = Speed * dT
//Элементарный угол dA = dS / L
//Полный угол A = A + dA
X := XCentr+L * Sin(Angle);
Y := YCentr+L * Cos(Angle);
Form1.Canvas.MoveTo(XCentr, YCentr);
Form1.Canvas.LineTo(Round(X), Round(Y));
Form1.Canvas.Ellipse(Round(X-5), Round(Y-5), Round(X+5), Round(Y+5));
end;
end;
вызов StartPendulum(200, 50, 100, -70);
Думаю, понятно, что должно получиться? Я вот запутался в этих Vt, dT, dS, dA...
Может Fs как нить константой задать, и что есть dT? Спасибо.
← →
RASkov (2007-01-23 20:42) [22]Ясно... в "прочих", ну здесь уже лавить наверное нечего :)
← →
Chort © (2007-01-23 21:30) [23]Мне кажется что нужно начать с того, что
m,L,Angle:real
;
Потом правильно указать что откуда вводится, написать нормально формулы,
ну и вывести результат.
← →
SlymRO (2007-01-24 04:28) [24]Писал одному охломону... лови:
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.
← →
Думкин © (2007-01-24 06:10) [25]
> Chort © (23.01.07 21:30) [23]
> Мне кажется что нужно начать с того, что m,L,Angle:real;
>
А можно обоснование такого начала?
← →
novill © (2007-01-24 09:48) [26]> [24] SlymRO (24.01.07 04:28)
Может еще и DFM-ку бросишь?
Было бы здорово :)
← →
Jeer (2007-01-24 09:57) [27]
> novill © (24.01.07 09:48) [26]
Тебе были приведены варианты решения, чтобы мозгом начал думать.
А если хочется халявы, то, извини уж, не ко мне.
Тем не менее, поясню:
dT = дискретность по времени, можно константой, можно как в [24]
Fs - суммарная сила, действующая на груз, формула приведена в [15]
Все остальное легко кодируется в pascal-программу, если вообще-то знаешь язык.
← →
SlymRO (2007-01-24 09:57) [28]novill © (24.01.07 9:48) [26]
Может еще и DFM-ку
DFM-ку несложно и самому сделать, на свой вкус и цвет...
← →
novill © (2007-01-24 10:16) [29]> [27] Jeer (24.01.07 09:57)
Если ты не заметил, автор вопроса - не я :)
А ДФМка нужна была просто полюбопытствовать, а не "мозгом думать" :)
>DFM-ку ... на свой вкус и цвет... У меня вот сейчас ни вкуса, ни цвета, а на картинку с качающимся мячиком прикольно посмотреть :)
← →
Jeer (2007-01-24 10:20) [30]
> novill © (24.01.07 10:16) [29]
Извини, но все равно халявщик:))
← →
SlymRO (2007-01-24 11:18) [31]novill © (24.01.07 10:16) [29]
а на картинку с качающимся мячиком прикольно посмотреть :)
Мыльнул... смотри.. не жалко :)
← →
SlymRO (2007-01-24 11:39) [32]кстати... содрано по мотивам http://www.compress.ru/Archive/CP/2006/9/33/#Колебания математического маятника
← →
novill © (2007-01-24 12:20) [33]> [32] SlymRO (24.01.07 11:39)
Спасибо
← →
RASkov (2007-01-31 13:44) [34]> [24] SlymRO (24.01.07 04:28)
Ну вот типа этого и хотелось. Спасибо. Хотелось бы еще чтоб он останавливался.. постепенно.... ну думаю, что нибудь придумаю. Математика блин. Еще раз спасибо.
← →
Vlad Oshin © (2007-01-31 15:12) [35]http://articles.org.ru/cfaq/index.php?qid=2548
попали :)
← →
Jeer © (2007-01-31 15:17) [36]Мдя..
Вот так wikipedia и создается, на которую потом все ссылаются, а кто-то и помирает от субъективного мнения горстки индивидумов.:))
← →
_uw_ © (2007-01-31 16:09) [37]А что, публикация! Только вот это "аэродинамическая сила fa = cx * vt^2;" выглядит как-то не очень. Короче, подложил кто-то :)
← →
novill © (2007-01-31 16:20) [38]> http://articles.org.ru/cfaq/index.php?qid=2548
> попали :)
Хорошо конечно, но!
Нещадно бить тех, кто информацию рвет такими грубыми кусками.
← →
Jeer © (2007-01-31 16:40) [39]
> fa = cx * vt^2;" выглядит как-то не очень.
А в чем промблем ?
АД-сила: F = Cx*q*S
где
Cx зависит от чисел Маха и Рейнолдса которые в свою очередь зависят от скорости;
q=0.5*V^2 - скоростной напор;
S - площадь миделя.
Для тех скоростей, с которыми мотается маятник, Cx от V не зависит - остается только q(v^2)
Так, шта - все по честному.
← →
_uw_ © (2007-01-31 16:49) [40]С миделем это ты здорово объяснил - сразу и t пропало :)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.043 c