Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Balistická křivka

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Balistická křivka

Autor: Luinar

16:52:07 07.08.2009

Ten kod co psal Belzebub mi neprijde logicky. Obvykle se to simuluje pomoci hybnosti a poloh. V tomto pripade kdy sila zavisi pouze na rychlostech se to da cele vyjadrit pomoci hydbnosti:
dp/dt = - K p^2/(m^2) - g (ve vektorovem zapisu) tj.
Nejjednodussim zpusobem so to pak numericky integruje:

cyklus:

p_old_x = p_x
p_old_y = p_y

p_x += - K * p_old_x * sqrt(p_old_x^2 + p_old_y^2) / m^2 * dt
p_y += - K * p_old_y * sqrt(p_old_x^2 + p_old_y^2) / m^2 * dt - g * dt

konec_cyklu

Poloha se pak urci primocarou integraci hybnosti:
Tj. vcetne polohy je pak cely cyklys

cyklus:

x+= p_x *dt / m
y+= p_y *dt / m

p_old_x = p_x
p_old_y = p_y

p_x += - K * p_old_x * sqrt(p_old_x^2 + p_old_y^2) / m^2 * dt
p_y += - K * p_old_y * sqrt(p_old_x^2 + p_old_y^2) / m^2 * dt - g * dt

konec_cyklu

Citovat příspěvek

 

Re: Balistická křivka

Autor: Belzebub6

12:18:15 07.08.2009

Pro OndřejeCZE

double g = nejake_cislo; // gravitační konstanta

double m; // hmotnost
double px; // poloha tělesa
double py; // poloha tělesa
double fx; // síla působící na těleso
double fy; // síla působící na těleso

function pohniSe(double dt) {

fx = fx + fodporx;
fy = fy + m*g + fodpory;

double dx = 0.5 * ((fx*fx) / (m*m)) * dt;
double dy = 0.5 * ((fy*fy) / (m*m)) * dt;

px = px + dx;
py = py + dy;

}

Když se funkce volá s dostatečně malým dt, tak by to mohlo i fungovat
:).
Otázkou zůstáva jak spočítat fodporx a fodpory, nevím jak se to ve fyzice správně počítá, ale můžeš zkusit třeba

fodporx = koeficient * (fx / m) / (dt*dt);
fodpory = koeficient * (fy / m) / (dt*dt);

I když si popravdě nejsem jist zda-li je to košér, jen takový nápad :)

Citovat příspěvek

 

Re: Balistická křivka

Autor: LonG

18:40:49 04.08.2009

hmm.Rovnice pěkný docela pomohly ale nevim jak to mám "naskládat" do Simulinku :-(

Citovat příspěvek

 

Re: Balistická křivka

Autor: J.

10:16:10 19.11.2008

Re: David Zalesak

Nebo integrujes tak dlouho, az to doleti tam, kam ma. (Nebo nedoleti.)

Citovat příspěvek

 

Re: Balistická křivka

Autor: V

18:00:28 16.11.2008

Z vzorečků asi tak, jak se to učí děti na devítiletce - za y dosadíte výšku místa, kam to má dopadnout (v triviálním případě nejspíš 0) a vypočítáte neznámou x.

Citovat příspěvek

 

Re: Balistická křivka

Autor: David Zálešák

21:10:17 14.11.2008

Spíš by mě zajímalo, jak z těchto složitých vzorečků s integrací odporu vzduchu atp dostat maximální dolet. Byl bych moc vděčný za nějaký vzorec, nebo nejlépe rovnou program... :-)

Citovat příspěvek

 

Re: Balistická křivka

Autor: Loony

11:20:18 03.03.2007

Caues, objevil jsem to tu nahodou a evidentne s velkym spozdenim. Nicmene bych vam rad sdelil, ze sikmy vrh v grav. poli s odporem vzduchu (umernym 1. i 2. mocnine rychlosti) analyticky resitelny je a to celkem elegantne :-)

Citovat příspěvek

 

Re: Balistická křivka

Autor: S.D.Q.

0:48:29 20.03.2006

s tím analytickým řešením jsem asi ustřelil. Pro tenhle model odporové síly existuje v jednorozměrném případě, t.j. pro pád v gravitačním poli ve vzduchu. Pro šikmý vrh vyjde soustava dvou diferenciálních rovnic, kterou až asi analyticky vyřešit nejde.

Jde to ale dořešit pro lineární závislost odporové síly na rychlosti, t.j. pro model

Fx_odporova=-K*Vx
Fy_odporova=-K*Vy

za předpokladu, že osa y vede vodorovně a osa y svisle vzhůru pak vyjde takováto závoslost polohy na čase:

x=(1-exp(-K*(t+P)))/K^2

y=-g*t/K +(1- exp(-K*(t+Q)))/K^2

kde

P=ln(K*Vx0)/K
Q=ln(g+K*Vy0)/K

vx0, vy0 jsou počáteční x a y složka rychlosti. Předpokládá se, že jsou kladné.

Ta křivka po namalování vypadá celkem dobře a v některých případech to je i fyzikálně rozumný model.

Citovat příspěvek

 

Re: Balistická křivka

Autor: OndrejCZE

17:36:43 16.03.2006

Caj, nee - ja delam v C++. ThanX(tu)

Citovat příspěvek

 

Re: Balistická křivka

Autor: xrto

17:25:33 16.03.2006

Caf, neskumal som tie rovnice blizsie (od S.D.Q.), ale myslim si, ze nepotrebujes vysledne rovnice. Predpokladam, ze to robis v MATLABE. Tak ak jo, tak v Simulinku si vies tie rovnice vyskladat s parcialnych blokov..

Citovat příspěvek

 

Re: Balistická křivka

Autor: OndrejCZE

16:04:38 15.03.2006

Caj, myslim, ze to jeste necham na pozdeji. Tyhle slozite vzorce se resi az na vyssim gymplu a ja jsem furt na tom nizsim, myslim ze bych to nepochopil ani kdybych se rozkrajel :). Ale aspon to zkusim! Kdyby jsi mi prosim S.D.Q. napsal ty vysledne vzorce, chtel bych na to napsat program. Diky moc(tu)

Citovat příspěvek

 

Re: Balistická křivka

Autor: Mormegil

15:19:58 15.03.2006

To není tak jednoduché; pro začátek se zkus podívat třeba na [url]http://en.wikipedia.org/wiki/Trajectory_of_a_projectile#Trajectory_of_a_projectile_with_air_resistance[/url].

Citovat příspěvek

 

Re: Balistická křivka

Autor: S.D.Q.

15:16:41 15.03.2006

Za 1. je nutno říci, že tebou uvedený "vzoreček" nepočítá s hmotností tělesa, neboť je odvozen pro vakuum. A v takovém případě trajektorie tělesa pohybujícího se v gravitačním poli NEZÁVISÍ na jeho hmotnosti - v Newtonových rovnicích se "m" prostě zkrátí.

Kdybys chtěl simulovat pohyb ve vzduchu, musíš vyjít z Newtonových rovnic:

m*dvx/dt= Fx
m*dvy/dt= Fy-gm

vx,vy jsou x a y složky rychlosti, t je čas, Fx a Fy jsou x a y složky odporové síly, g je gravitační zrychlení, m je hmotnost tělesa.

Je nutné použít nějaký model odporové síly, například:

Fx= -K*v^2*vx/|vx|
Fy= -C*v^2*vy/|vy|

kde K je nějaký součinitel odporu (K=C*S*ró/2) a v^2=vx^2+vy^2

a samozřejmě je nutné doplnit vztahy:

x=dvx/dt
y=dvy/dt

kde x,y jsou x a y složky polohy

Tak dostáváme sadu diferenciálních rovnic.

Obecně je nutná numerická simulace, ovšem v tomto jednoduchém modelu odporové síly ta sada rovnic má analytické řešení.

Teď záleží, na jaké úrovni se bavíme - jestli už si to dokážeš sám zintegrovat, nebo chceš napsat výsledné vzorce, jsou docela dlouhé.

Případně jestli jsi sám schopen to řešit numerickou simulací, což má tu výhodu, že můžeš měnit model třecí síly podle libosti.

Citovat příspěvek

 

Balistická křivka

Autor: OndrejCZE

14:19:04 15.03.2006

Caj, vim ze balisticka krivka se pocita d=V0 na druhou krat sin(2*alfa) / g, jemonze tato verze nepocita s vahou telesa, odporem vzduchu a podobnymi ciniteli. Kdyby jste mi prosim poradili vzorecek, ktery pocita i ten odpor vzduchu apod. Diky moc

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: