Fizika feladat segítség?
Nem vagyok fizika szakos és nem vagytok túl jó a fizikában. Azt szeretném tudni, hogy az alábbi feladatban mit kellene számolni, hogyan (milyen képletekkel) és milyen sorrendben. Annyit sikerült kiokoskodnom, hogy az F=m*g, illetve az F= m* (dv / dt) képletekre szükség van (valószínűleg)
Adottak a Newton-i térben gömbszerű testek. Minden testnek van sugara,
súlya, valamint kezdősebessége. A feladat a testek mozgásának szimulálá-
sa. Ezt úgy kell elvégezni, hogy adott pillanatban kiszámoljuk az egyes
testekre ható erők eredőjét, majd az adott test mozgását egy dt időin-
tervallumban ezzel az állandó erőhatással számoljuk ki. Miután az összes
testnek meghatároztuk az új pozícióját, újra kiszámoljuk az eredő erő-
ket, majd a következő dt időintervallumban az új erőkkel számolunk moz-
gást, stb. A szimuláció adott ideig, vagy két test ütközéséig zajlik.
Ismertek: a dt időintervallum, a szimuláció hossza, a testek száma, és az
egyes testek súlya, átmérője, kezdeti pozíciója és kezdősebessége. A kérdés:
az összes test aktuális helyzete (pozíció és sebesség) a szimulá-
ció végén
> F=m*g
Itt a Föld felszínén ez így van, de a g nem egy univerzális konstans.
Két test között ható gravitációs erőt így lehet kiszámolni:
F = G * m1 * m2 / r^2
Ahol G a gravitációs állandó: G = 6,67428 * 10^(-11) m^3/(kg*s^2)
Az m1 és m2 a két test tömege.
Az r meg a két test távolsága.
Az erő meg ugye arányos a gyorsulással: F = m*a
A testek átmérője első körben nem nagyon számít. Minden testnek van ugye tömegközéppontja. A test köré írható gömbön kívülről nézve helyettesíthető a test tömegközéppontjába helyezett pontszerű testtel. Így első körben az átmérőnek csak vizualizációs jelentősége van, hogy mekkora kört rajzolsz a képernyőre. Második körben, ha már az erőket, sebességeket, gyorsulásokat már szimuláltad, akkor lehet kezelni az ütközéseket. Mondjuk ugye van két tested r1 és r2 sugárral. Ha a két test r1+r2-nél közelebb kerül egymáshoz, akkor összeütköztek. Ebben az esetben helyettesítheted egyetlen gömbbel, aminek m1+m2 a tömege, a sugara meg ugye a két test térfogatának összegéből kiszámolható. A gömb tértfogata ugye 4*R^3*pi / 3. Tehát a két gömb térfogatának összege lesz az új gömb térfogata:
V = V1 + V2
4 * R^3 * pi / 3 = 4 * r1^3 * pi / 3 + 4 * r1^3 * pi / 3
Szorozzuk meg az egészet 3 / (4*pi) -vel:
R^3 = r1^3 + r2^3
R = köbgyök( r1^3 + r2^3 )
Ez lesz az új gömb sugara. A tömege ugye m1+m2. A sebessége meg a lendületek összegéből számolható. Az új gömb lendülete megegyezik a két régi test lendületének összegével:
p = m*v
m*v = m1*v1 + m2*v2
(Ahol v itt most vektormennyiség, ha számítógéppel szimulálod ugye, akkor külön külön elvégzendő a sebesség x és y irányú komponensére.)
Az új test tömegközéppontja a tömegük arányától függ. Mondjuk kiválasztod az egyik testet, akkor az új tömegközéppont itt lesz: x = x1 + (x2-x1) * m2 / (m1+m2) illetve y = y1 + (y2-y1) * m2 / (m1+m2)
~ ~ ~ ~ ~ ~ ~
Összességében tehát számítógéppel szimulálva minden testről tárolod a következő adatokat:
m (tömeg)
r (sugár) vagy d (átmérő) (Ha átmérőt tárolsz, akkor értelemszerűen változik pár képlet)
vx, vy (sebesség x és y irányú komponense)
x,y (a test koordinátája)
Oké, minden ciklusban:
1. Végigmész az összes testen egy ciklussal. Minden test esetén:
1.1. Két változóban – mondjuk Fx és Fy – tárolni fogod a testre ható eredő erőt. Ezt most nullázod. Végigmész az összes testen, ami nem a kiválasztott test, és kiszámolod a távolságukat (Pitagorasz-tétellel). Kiszámolod a közöttük ható gravitációs erőt. Majd ennek az erőnek veszed az x és y irányú komponensét (trigonometrikus függvényekkel), és ezt hozzáadod a testre ható eredő erőkhöz.
1.2. Ha kiszámoltad az eredő erőt, akkor abból kijön a test gyorsulása: ax = Fx/m, illetve ay = Fy/m
1.3. A test sebességét növeled ennek az értéknek az időarányos szorzatával. Ugye a = (v-u ) / dt, így v = u + a/dt. Hogy dt mekkora, az a programban konstans, ez a szimulációd időfelbontása. Minél kisebb, annál jobban közelít a szimulációd a valósághoz, bár ugye magának a feladatnak van némi kaotikus jellege, de alapvetően mégis ez a helyzet. Viszont minél kisebb ez a programban konstans dt, annál több lépés kell egy adott időtartam szimulálásához.
2. Ha ez megvan, akkor mozgatod a testeket. Végigmész az összes testen és a s = v*dt képlettel kiszámolod az elmozdulás x és y irányú komponensét, amit hozzáadsz a pozícióhoz.
3. Bónusz lépés. Végigmész minden testen, és kiszámolod a többi testen végigmenve a kettő közötti távolságot. Ha az kisebb, mint r1+r2, akkor helyettesíted egy közös testtel. Fent leírtam, hogy hogy tudod ennek a tömegét, sebességét, koordinátáit kiszámolni.
Máshogy is lehet pl. erőt számolni. Kiszámolhatod minden test esetén a több test tömegközéppontját, és ahhoz mérten számítasz gravitációs erőt, és abban az irányban határozod meg az x és y irányú komponenst. Ez kissé bonyolultabbnak tűnhet elsőre, de amúgy hatékonyabb lenne az algoritmus, csak egyszer kellene trigonometrikus függvényekkel számolni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!