@vaskalapos (13423):
Akár le is fordíthatod, mert a fordító ingyenes. C#
Egyébként lényegében a megtett utat integrálja, elemi lépésenként.
Mint általában a numerikus módszereknél, a lépésközt itt is kicsire kell venni, hogy a számítás hibája kicsi legyen. Viszont túlságosan kicsire nem érdemes választani, mert a gépi számábrázolás felbontása véges. Amikor az összeg elér egy bizonyos értéket, akkor a túl kicsi tagokat már nem lehet hozzáadni. Pl. 1.23e77 + 7.89e-45 = ? (Észre sem veszi.)
A módszer egyébként a következő: Jobbról jön a Jupiter 13.7 km/s sebességgel. Az egyszerűség kedvéért a Nap hatását elhanyagoltam. A rakéta hatását szintén nem vettem figyelembe, tehát a Jupiter jön nyílegyenesen.
Balról jön a rakéta a Jupiterrel ellentétes irányban, kezdetben vele párhuzamosan, 29.8 km/s sebességgel. Az ütközés elkerülése érdekében az irányvektorok távolsága kezdetben 1.71R
J. (Ha kisebb lenne az eltérés, akkor a rakéta lezuhanna. Így viszont kb. 960 km-re közelíti meg a gázbolygót.)
Először kiszámolom a Jupiter és a rakéta távolságát. Ennek alapján kiszámolom a pillanatnyi gyorsulást, amit felbontok x- és y-irányú komponensekre. A gyorsulás hatására a sebesség megváltozik, a változás arányos a gyorsulással és az időközzel. A megtett út pedig arányos a sebességgel és az eltelt idővel. A sebesség és a megtett út két komponensét függetlenül számolom, a harmadik dimenziót nem veszem figyelembe.
Bevezettem továbbá egy apró egyszerűsítést: a Jupiter csak x irányban mozog, mivel a visszahatásokat elhanyagoltam.
Lényeges, hogy a lépésközt dinamikusan kell szabályozni. Ha állandó lenne a lépésköz, és túl kicsi lenne, akkor egyrészt sokáig tartana a számítás, másrészt a nagyon apró tagok összegzése kerekítési hibát okozna. Ellenben ha túl nagy lenne a lépésköz, akkor a számítás nagyon pontatlan lenne. (Közeledéskor érezné a gyorsítást, távolodáskor viszont túl nagy sebességgel távozna, és a lassítást alig venné figyelembe. Ha még ennél is nagyobb lenne a lépésköz, akkor egyszerűen átugraná a bolygót. Fonots tehát a dinamikus lépésköz, mivel a távolság függvényében a gyorsulás nagyságrendeket változik.)
Számolás közben a program folyamatosan rajzolja a bolygó és a rakéta helyzetét, valamint a rakéta sebességét és gyorsulását. Jelen paraméterek mellett az irány kb. 75 fokot változik, és a sebességet 27%-kal növeli meg. Tehát az elméleti 180 fok irányváltozástól és a sebesség duplázásától nagyon messze vagyunk.
(90 fokos irányváltozáshoz jóval közelebb kellene menni a bolygóhoz, ami nagyjából a jelenlegi távolság felénél következik be. Ehhez kezdetben kb. 1.11R
J kellene. Csak akkor a rakéta sajnos lezuhan.)
Még kipróbálom, hogy a bolygó és a rakéta kezdeti sebességének milyen hatása van...
Ha a rakéta kezdeti sebességét a felére csökkentem, akkor a sebesség nyereség +131.6% lenne, az irány eltérése pedig 126.2 fok, de így sajnos lezuhan.
A rakéta kezdeti sebességét megduplázva +2.0% és 26.6 fokot kaptam.
A rakéta eredeti sebessége mellett a bolygó sebességét megfelezve +19.4% és 86 fok eredményt kaptam volna, viszont a rakéta lezuhant.
A rakéta eredeti sebessége mellett a bolygó sebességét megduplázva +28.3% és 59.5 fok az eredmény.
Most megpróbálom táblázatba foglalni: v
r v
J Δv
r Δφ
r
Kód: Egész kijelölése
29.8 13.7 +27.3% 75.2 fok
14.9 13.7 +131.6% 126.2 fok lezuhan
59.6 13.7 +2.0% 26.6 fok
29.8 13.7 +27.3% 75.2 fok
29.8 6.9 +19.4% 86.0 fok lezuhan
29.8 27.4 +28.3% 59.5 fok
A szimuláció szerint a rakéta kezdeti sebességének csökkentése erősíti a hatást, a sebesség növelése pedig gyengíti. Ellenben a bolygó sebességének növelésével erősödik a rakéta sebességére gyakorolt hatás, a csökkentésével pedig gyengül. A rakéta irányváltozása azonban ezzel ellentétes tendenciát mutat.