Pertama-tama, saya perlu memahami apa yang dimaksud dengan "dinamika orbit yang sebenarnya". Saya rasa ini berarti saya harus menggunakan hukum-hukum fisika yang mengatur pergerakan benda di ruang angkasa, seperti hukum gravitasi Newton dan hukum gerak Newton. Jadi, saya perlu memodelkan perjalanan roket ini dengan mempertimbangkan gaya gravitasi dari Matahari, Bumi, dan Mars, serta mungkin planet-planet lain jika diperlukan.
Namun, memodelkan sistem tata surya secara penuh dengan semua planet bisa sangat kompleks. Mungkin ada cara yang lebih sederhana untuk memodelkan perjalanan roket dari Bumi ke Mars. Saya ingat bahwa dalam perjalanan antarplanet, sering digunakan apa yang disebut "transfer Hohmann", yang merupakan lintasan orbit elips yang menghubungkan dua orbit melingkar dengan energi minimum. Mungkin saya bisa menggunakan pendekatan ini untuk menyederhanakan simulasi.
Jadi, mari kita coba memahami transfer Hohmann. Dalam transfer Hohmann, roket diluncurkan dari orbit Bumi menuju orbit Mars dengan dua kali pembakaran: satu untuk meninggalkan orbit Bumi dan masuk ke orbit transfer, dan satu lagi untuk masuk ke orbit Mars dari orbit transfer. Orbit transfer ini adalah setengah dari elips yang menghubungkan orbit Bumi dan orbit Mars.
Untuk memodelkan ini, saya perlu mengetahui posisi Bumi dan Mars dalam orbitnya sepanjang waktu. Karena orbit planet di sekitar Matahari adalah elips, tetapi untuk simplifikasi, sering kali diaproksimasi sebagai lingkaran. Apakah saya boleh mengasumsikan orbit Bumi dan Mars sebagai lingkaran? Saya pikir untuk simulasi sederhana, ini bisa diterima.
Jadi, anggap saja Bumi dan Mars mengorbit Matahari dalam lingkaran dengan jari-jari tertentu. Saya perlu mengetahui jari-jari orbit Bumi dan Mars. Saya ingat bahwa jarak rata-rata Bumi dari Matahari adalah 1 AU (Astronomical Unit), dan untuk Mars adalah sekitar 1.524 AU. Jadi, saya bisa menggunakan nilai-nilai ini.
Selanjutnya, saya perlu mengetahui periode orbit Bumi dan Mars. Periode orbit Bumi adalah 1 tahun, sedangkan untuk Mars adalah sekitar 1.88 tahun. Tetapi dalam simulasi, saya mungkin tidak perlu periode sebenarnya, tetapi lebih kepada posisi relatif mereka.
Wait, sebenarnya, dalam transfer Hohmann, waktu perjalanan dari Bumi ke Mars adalah setengah dari periode orbit transfer. Periode orbit transfer dapat dihitung menggunakan hukum Kepler ketiga, yang menyatakan bahwa kuadrat periode orbit sebanding dengan pangkat tiga jari-jari orbit.
Untuk orbit transfer Hohmann, jari-jari semi-major axis adalah rata-rata dari jari-jari orbit Bumi dan Mars. Jadi, semi-major axis a = (R_bumi + R_mars)/2 = (1 + 1.524)/2 ≈ 1.262 AU.
Kemudian, periode orbit transfer T dapat dihitung dari T^2 ∝ a^3. Karena untuk Bumi T_bumi = 1 tahun dan a_bumi = 1 AU, maka T = T_bumi * (a / a_bumi)^(3/2) = 1 * (1.262)^(3/2) ≈ 1.262^1.5 ≈ 1.415 tahun.
Jadi, waktu perjalanan dari Bumi ke Mars adalah T/2 ≈ 0.7075 tahun, atau sekitar 258 hari.
Tetapi, untuk simulasi, saya perlu mengetahui posisi Bumi dan Mars sepanjang waktu, dan juga posisi roket.
Saya pikir, cara terbaik adalah dengan memodelkan pergerakan Bumi dan Mars dalam orbit lingkaran di sekitar Matahari, dan kemudian memodelkan roket yang bergerak dalam orbit elips transfer Hohmann.
Untuk melakukan ini, saya perlu mendefinisikan sistem koordinat. Mari kita anggap Matahari berada di pusat, dan sumbu x dan y berada di bidang ekliptika.
Misalnya, posisi Bumi pada waktu t dapat dinyatakan sebagai:
x_bumi = R_bumi * cos(ω_bumi * t)
y_bumi = R_bumi * sin(ω_bumi * t)
z_bumi = 0
Di mana ω_bumi = 2π / T_bumi, dengan T_bumi = 1 tahun.
Begitu pula untuk Mars:
x_mars = R_mars * cos(ω_mars * t + φ)
y_mars = R_mars * sin(ω_mars * t + φ)
z_mars = 0
Di mana ω_mars = 2π / T_mars, dengan T_mars ≈ 1.88 tahun, dan φ adalah fase awal, yang menentukan posisi awal Mars relatif terhadap Bumi.
Wait, sebenarnya, dalam transfer Hohmann, peluncuran dilakukan ketika Bumi dan Mars berada pada posisi tertentu sehingga roket akan tiba di Mars setelah setengah periode orbit transfer. Jadi, saya perlu menentukan kondisi peluncuran yang tepat.
Saya ingat bahwa untuk transfer Hohmann, sudut antara posisi Bumi saat peluncuran dan posisi Mars saat kedatangan adalah π radian, atau 180 derajat. Tetapi karena Mars juga bergerak, saya perlu menghitung sudut yang tepat.
Lebih tepatnya, selama waktu perjalanan roket, Mars akan bergerak sejauh tertentu dalam orbitnya. Jadi, jika waktu perjalanan adalah Δt, maka Mars akan bergerak sejauh θ_mars = ω_mars * Δt.
Karena roket bergerak dalam orbit transfer yang merupakan setengah elips, ia akan menempuh sudut 180 derajat dari titik perihelion ke aphelion. Jadi, posisi Mars saat kedatangan harus berada 180 derajat dari posisi Bumi saat peluncuran, dalam kerangka referensi Matahari.
Wait, sebenarnya, dalam transfer Hohmann dari Bumi ke Mars, roket diluncurkan ketika Bumi berada di salah satu titik perpotongan antara orbit Bumi dan orbit transfer, dan tiba di Mars ketika Mars berada di titik perpotongan lainnya.
Lebih spesifik, untuk transfer dari orbit dalam (Bumi) ke orbit luar (Mars), roket diluncurkan dari Bumi dan tiba di Mars setelah menempuh setengah orbit transfer, yaitu 180 derajat.
Jadi, pada saat peluncuran, posisi Bumi adalah titik awal, dan posisi Mars saat kedatangan harus berada 180 derajat dari titik awal tersebut dalam orbit transfer. Tetapi karena Mars bergerak, saya perlu memastikan bahwa pada saat roket tiba, Mars berada di posisi yang tepat.
Secara matematis, jika saya anggap posisi sudut Bumi saat peluncuran adalah θ_bumi = 0, maka posisi sudut roket saat tiba adalah θ_rocket = π (180 derajat). Pada saat yang sama, Mars harus berada di posisi θ_mars = π + ω_mars * Δt, di mana Δt adalah waktu perjalanan.
Wait, sebenarnya, dalam koordinat sudut, jika saya anggap Matahari sebagai pusat, dan sudut diukur dari sumbu x, maka untuk transfer Hohmann, roket bergerak dari posisi Bumi saat peluncuran ke posisi yang berlawanan arah, yaitu sudut π radian dari posisi awal.
Tetapi, karena Mars juga bergerak, saya perlu menghitung sudut yang ditempuh Mars selama Δt.
Lebih tepat, kondisi peluncuran adalah bahwa sudut antara posisi Bumi saat peluncuran dan posisi Mars saat kedatangan adalah 180 derajat. Tetapi sebenarnya, dalam transfer Hohmann, roket bergerak ke titik di mana Mars akan berada setelah Δt.
Jadi, jika saya anggap posisi sudut Bumi saat peluncuran adalah θ_bumi(t=0), maka posisi sudut Mars saat kedatangan adalah θ_mars(t=Δt) = θ_mars(t=0) + ω_mars * Δt.
Dan untuk transfer Hohmann, posisi sudut roket saat tiba adalah θ_bumi(t=0) + π, karena ia menempuh 180 derajat dalam orbit transfer.
Jadi, untuk roket bertemu Mars, harus θ_mars(t=Δt) = θ_bumi(t=0) + π.
Dengan kata lain, θ_mars(t=0) + ω_mars * Δt = θ_bumi(t=0) + π.
Jadi, θ_mars(t=0) - θ_bumi(t=0) = π - ω_mars * Δt.
Ini adalah kondisi untuk sudut fase antara Bumi dan Mars saat peluncuran.
Karena Δt = T_transfer / 2, dan T_transfer = 2π * sqrt(a^3 / μ), di mana a = (R_bumi + R_mars)/2, dan μ adalah parameter gravitasi Matahari.
Tetapi sebenarnya, karena saya mengasumsikan orbit lingkaran, saya bisa menggunakan kecepatan sudut.
Wait, lebih sederhana, karena saya sudah menghitung Δt ≈ 0.7075 tahun, dan ω_mars = 2π / T_mars ≈ 2π / 1.88 tahun.
Jadi, ω_mars * Δt ≈ (2π / 1.88) * 0.7075 radian.
Mari hitung numeriknya.
Pertama, T_mars = 1.88 tahun, jadi ω_mars = 2π / 1.88 rad/tahun.
Δt = 0.7075 tahun.
Jadi, ω_mars * Δt = (2π / 1.88) * 0.7075 ≈ (3.340) * 0.7075 ≈ 2.363 radian.
Karena π ≈ 3.1416, maka π - ω_mars * Δt ≈ 3.1416 - 2.363 ≈ 0.7786 radian, atau sekitar 44.6 derajat.
Jadi, saat peluncuran, sudut antara Bumi dan Mars harus sekitar 44.6 derajat, dengan Mars di depan Bumi dalam orbitnya.
Wait, lebih tepat, dari persamaan θ_mars(t=0) - θ_bumi(t=0) = π - ω_mars * Δt ≈ 0.7786 radian, jadi Mars harus berada di depan Bumi sebesar 0.7786 radian atau 44.6 derajat.
Jadi, dalam simulasi, saya perlu mengatur posisi awal Bumi dan Mars sedemikian rupa sehingga sudut antara mereka adalah 44.6 derajat.
Kemudian, saya bisa memodelkan pergerakan roket dalam orbit transfer Hohmann.
Sekarang, bagaimana cara memodelkan posisi roket sepanjang waktu?
Dalam orbit transfer Hohmann, roket bergerak dalam orbit elips dengan Matahari di salah satu fokus, di mana perihelion adalah di orbit Bumi dan aphelion di orbit Mars.
Jadi, untuk orbit elips, saya bisa menggunakan persamaan parametrik.
Dalam astronomi, orbit elips sering dinyatakan dalam bentuk sudut eksentris E, tetapi untuk simulasi numerik, mungkin lebih mudah menggunakan integrasi numerik dari persamaan gerak.
Wait, tetapi sebenarnya, karena ini adalah orbit Keplerian, saya bisa menggunakan solusi analitik.
Yaitu, posisi sebagai fungsi waktu dapat dihitung menggunakan mean anomaly, eccentric anomaly, dan true anomaly.
Jadi, mari kita coba.
Pertama, saya perlu menentukan parameter orbit transfer.
Untuk orbit transfer Hohmann dari Bumi ke Mars, semi-major axis a = (R_bumi + R_mars)/2 ≈ (1 + 1.524)/2 ≈ 1.262 AU.
Kemudian, eksentrisitas e dapat dihitung. Dalam transfer Hohmann, perihelion adalah R_bumi = 1 AU, dan aphelion adalah R_mars = 1.524 AU.
Dalam orbit elips, jarak perihelion r_p = a (1 - e), dan jarak aphelion r_a = a (1 + e).
Jadi, r_p = 1 AU = a (1 - e), dan r_a = 1.524 AU = a (1 + e).
Dengan a = 1.262 AU, maka 1 = 1.262 (1 - e), dan 1.524 = 1.262 (1 + e).
Mari kita selesaikan untuk e.
Dari 1 = 1.262 (1 - e), maka 1 - e = 1 / 1.262 ≈ 0.7924, jadi e = 1 - 0.7924 = 0.2076.
Cek dengan persamaan kedua: 1.262 (1 + 0.2076) = 1.262 * 1.2076 ≈ 1.524, ya cocok.
Jadi, e ≈ 0.2076.
Sekarang, untuk menentukan posisi roket sepanjang waktu, saya bisa menggunakan mean anomaly M, yang berhubungan dengan waktu.
Mean anomaly M = (2π / T) t, di mana T adalah periode orbit.
Tetapi dalam hal ini, roket hanya menempuh setengah orbit, dari M = 0 hingga M = π.
Wait, sebenarnya, untuk orbit elips, mean anomaly M = n t, di mana n = 2π / T, dan t adalah waktu sejak perihelion.
Dalam transfer Hohmann, roket diluncurkan dari perihelion, jadi pada t=0, M=0.
Kemudian, posisi roket dapat dihitung dengan menyelesaikan persamaan Kepler untuk eccentric anomaly E dari M = E - e sin E, lalu menghitung true anomaly θ, dan akhirnya koordinat x dan y.
Lebih spesifik, untuk orbit di bidang xy dengan sumbu mayor sepanjang sumbu x, posisi adalah:
r = a (1 - e^2) / (1 + e cos θ)
x = r cos θ
y = r sin θ
Di mana θ adalah true anomaly.
Dan θ dapat dihitung dari E melalui tan(θ/2) = sqrt((1+e)/(1-e)) tan(E/2).
Tetapi untuk simulasi, saya perlu menghitung E dari M untuk setiap waktu t.
Ini bisa dilakukan dengan metode iteratif, seperti metode Newton-Raphson.
Alternatifnya, untuk simplifikasi, saya bisa menggunakan aproksimasi atau bahkan integrasi numerik dari persamaan gerak.
Tetapi sebenarnya, karena ini adalah simulasi, dan saya ingin menunjukkan lintasan, saya bisa menghitung posisi roket pada banyak titik waktu.
Jadi, langkah-langkahnya:
Tentukan waktu perjalanan Δt = T_transfer / 2, dengan T_transfer = 2π sqrt(a^3 / μ), tetapi karena saya menggunakan unit di mana T_bumi = 1 tahun, dan μ = 4π^2 (dalam unit AU dan tahun), maka T_transfer = 2π sqrt(a^3 / (4π^2)) = sqrt(a^3), sehingga Δt = (1/2) sqrt(a^3).
Wait, tunggu, sebenarnya, dalam unit astronomi, di mana G M_sun = 4π^2 AU^3 / tahun^2, maka periode T = 2π sqrt(a^3 / (G M_sun)) = 2π sqrt(a^3 / (4π^2)) = sqrt(a^3 / π^2) * 2π, wait, lebih tepat T = 2π sqrt(a^3 / μ), dengan μ = G M_sun = 4π^2.
Jadi T = 2π sqrt(a^3 / 4π^2) = (2π / (2π)) sqrt(a^3 / π^2) wait, lebih sederhana, T = sqrt(4π^2 a^3 / 4π^2) = sqrt(a^3).
Wait, tidak, tunggu: T = 2π sqrt(a^3 / μ), dan μ = 4π^2, jadi T = 2π sqrt(a^3 / 4π^2) = (2π / 2π) sqrt(a^3 / π^2) = (1 / π) sqrt(π^2 a^3) wait, lebih baik: T = 2π sqrt(a^3 / (4π^2)) = (2π / 2π) sqrt(4π^2 a^3 / 4π^2) = sqrt(a^3).
Wait, sebenarnya, T = 2π sqrt(a^3 / (4π^2)) = (2π / 2π) sqrt(a^3 / π^2) * 2π = (1) sqrt(a^3 / π^2) * π = sqrt(a^3), wait, lebih tepat: 2π sqrt(a^3 / 4π^2) = 2π * (a^{3/2} / (2π)) = a^{3/2}.
Jadi, T = a^{3/2} tahun, untuk a dalam AU.
Jadi, untuk a = 1 AU, T = 1^{3/2} = 1 tahun, benar untuk Bumi.
Untuk orbit transfer, a = 1.262 AU, jadi T_transfer = (1.262)^{3/2} ≈ (1.262)^1.5.
Menghitung (1.262)^1.5, first (1.262)^1 = 1.262, dan (1.262)^0.5 ≈ 1.123, jadi (1.262)^1.5 ≈ 1.262 * 1.123 ≈ 1.417 tahun, ya cocok dengan perhitungan sebelumnya.
Jadi, Δt = T_transfer / 2 ≈ 1.417 / 2 ≈ 0.7085 tahun.
Untuk simulasi, saya bisa mengambil langkah waktu, misalnya, setiap hari atau setiap minggu, dan menghitung posisi roket, Bumi, dan Mars pada setiap langkah waktu.
Sekarang, untuk menghitung posisi roket, saya perlu menghitung mean anomaly M = (2π / T_transfer) t, lalu menyelesaikan E dari M = E - e sin E, lalu menghitung θ dari tan(θ/2) = sqrt((1+e)/(1-e)) tan(E/2), lalu menghitung r = a (1 - e^2) / (1 + e cos θ), dan akhirnya x = r cos θ, y = r sin θ.
Tetapi, karena orbit transfer dimulai dari perihelion, yang sesuai dengan posisi Bumi saat peluncuran, saya perlu menyesuaikan sudut.
Wait, sebenarnya, dalam koordinat, jika saya anggap sumbu x adalah arah peluncuran, maka pada t=0, roket berada di x = R_bumi, y=0, dan bergerak ke arah positif y.
Tetapi sebenarnya, untuk visualisasi, mungkin lebih baik jika saya menempatkan sumbu sehingga orbit Bumi dan Mars dapat digambarkan dengan jelas.
Alternatifnya, saya bisa menggunakan koordinat polar atau kartesian dengan Matahari di pusat.
Saya pikir, untuk Matplotlib, lebih mudah menggunakan koordinat kartesian.
Jadi, mari kita anggap Matahari di (0,0,0), dan bidang orbit di xy.
Kemudian, posisi Bumi pada waktu t adalah (R_bumi cos(ω_bumi t), R_bumi sin(ω_bumi t), 0)
Demikian pula untuk Mars: (R_mars cos(ω_mars t + φ), R_mars sin(ω_mars t + φ), 0), di mana φ adalah sudut fase awal.
Untuk roket, pada t=0, roket diluncurkan dari posisi Bumi, yaitu (R_bumi, 0, 0) jika saya anggap θ_bumi(t=0)=0.
Kemudian, orbit transfer adalah elips dengan sumbu mayor sepanjang sumbu x, dari x = R_bumi ke x = -R_mars atau sebaliknya.
Wait, sebenarnya, untuk transfer Hohmann dari Bumi ke Mars, roket bergerak dari perihelion di R_bumi ke aphelion di R_mars, jadi jika perihelion di (R_bumi, 0), maka aphelion di (-R_mars, 0), asalkan sumbu mayor sepanjang sumbu x.
Tetapi sebenarnya, dalam konvensi standar, perihelion adalah titik terdekat ke Matahari, dan untuk orbit elips dengan Matahari di fokus, posisi perihelion adalah di sepanjang sumbu mayor.
Jadi, jika saya anggap sumbu mayor sepanjang sumbu x, dengan Matahari di fokus, bukan di pusat.
Wait, ini penting.
Dalam orbit Keplerian, Matahari berada di salah satu fokus elips, bukan di pusat.
Jadi, untuk elips dengan semi-major axis a, eksentrisitas e, jarak dari pusat elips ke fokus adalah c = a e.
Jadi, jika saya anggap pusat elips di (0,0), maka fokus (Matahari) berada di (c,0) = (a e, 0).
Tetapi untuk memudahkan, sering kali orang menempatkan Matahari di (0,0), dan sumbu mayor sepanjang sumbu x.
Jadi, dalam hal ini, perihelion berada di x = a (1 - e), dan aphelion di x = -a (1 + e), atau sebaliknya, tergantung orientasi.
Wait, lebih tepat, untuk orbit standar, dengan perihelion di sumbu x positif, maka posisi adalah x = a (cos E - e), y = a sqrt(1 - e^2) sin E, di mana E adalah eccentric anomaly.
Jadi, pada t=0, M=0, E=0, θ=0, jadi x = a (1 - e), y=0.
Kemudian, pada t=Δt, M = π, E=π, θ=π, x = -a (1 + e), y=0.
Jadi, untuk transfer Hohmann, pada t=0, roket berada di x = a (1 - e) = R_bumi, dan pada t=Δt, x = -a (1 + e) = -R_mars.
Wait, tunggu, dalam pengaturan ini, Matahari berada di (0,0), dan perihelion di x = a (1 - e), tetapi sebenarnya, jarak dari Matahari ke perihelion adalah r_p = a (1 - e), dan dari Matahari ke aphelion adalah r_a = a (1 + e).
Jadi, dalam koordinat, jika Matahari di (0,0), dan sumbu mayor sepanjang x, dengan perihelion di x > 0, maka posisi roket adalah x = a (cos E - e), y = a sqrt(1 - e^2) sin E.
Tetapi, dalam hal ini, pada t=0, roket berada di (a (1 - e), 0), dan Bumi seharusnya berada di orbit lingkaran dengan jari-jari R_bumi = a (1 - e), tetapi sebenarnya, orbit Bumi adalah lingkaran dengan jari-jari 1 AU, sedangkan a (1 - e) = 1.262 * (1 - 0.2076) ≈ 1.262 * 0.7924 ≈ 1 AU, ya cocok, karena kita set R_bumi = a (1 - e).
Demikian pula, pada t=Δt, roket berada di (-a (1 + e), 0), dan a (1 + e) = 1.262 * (1 + 0.2076) ≈ 1.262 * 1.2076 ≈ 1.524 AU = R_mars, cocok.
Jadi, dalam simulasi, saya bisa menempatkan Matahari di (0,0), dan orbit transfer roket adalah elips dengan sumbu mayor sepanjang sumbu x, perihelion di (a (1 - e), 0), aphelion di (-a (1 + e), 0).
Kemudian, untuk Bumi, karena orbitnya lingkaran, tetapi pada t=0, Bumi berada di (R_bumi, 0) = (1, 0), dan bergerak berlawanan arah jarum jam, misalnya.
Wait, sebenarnya, dalam konvensi astronomi, planet bergerak berlawanan arah jarum jam dilihat dari utara ekliptika.
Jadi, posisi Bumi: x_bumi = R_bumi cos(ω_bumi t), y_bumi = R_bumi sin(ω_bumi t), dengan ω_bumi = 2π / T_bumi = 2π rad/tahun.
Demikian pula untuk Mars: x_mars = R_mars cos(ω_mars t + φ), y_mars = R_mars sin(ω_mars t + φ), dengan ω_mars = 2π / T_mars ≈ 2π / 1.88 rad/tahun.
Sekarang, untuk memastikan bahwa pada t=0, sudut antara Bumi dan Mars adalah 44.6 derajat, saya perlu mengatur φ.
Misalnya, pada t=0, θ_bumi = 0, θ_mars = φ, dan saya ingin θ_mars - θ_bumi = φ = 44.6 derajat ≈ 0.7786 radian.
Jadi, φ = 0.7786 radian.
Kemudian, pada t=Δt ≈ 0.7085 tahun, posisi Mars adalah θ_mars = ω_mars * Δt + φ ≈ (2π / 1.88) * 0.7085 + 0.7786.
Hitung (2π / 1.88) ≈ 3.340 rad/tahun, kali 0.7085 ≈ 2.367 rad, lalu + 0.7786 ≈ 3.1456 rad ≈ π radian.
Jadi, pada t=Δt, θ_mars ≈ π, sehingga posisi Mars adalah (-R_mars, 0), yang cocok dengan posisi aphelion roket.
Jadi, pada t=Δt, roket tiba di (-a (1 + e), 0) ≈ (-1.524, 0), dan Mars juga berada di sana.
Sempurna.
Jadi, untuk simulasi, saya bisa menghitung posisi roket, Bumi, dan Mars pada banyak titik waktu dari t=0 hingga t=Δt.
Untuk posisi roket, saya perlu menghitung E dari M = (2π / T_transfer) t, dengan M = E - e sin E, lalu θ dari 2 atan(sqrt((1+e)/(1-e)) tan(E/2)), lalu r = a (1 - e^2) / (1 + e cos θ), dan x = r cos θ, y = r sin θ.
Tetapi, dalam prakteknya, karena orbit transfer adalah elips dengan sumbu mayor sepanjang x, saya bisa langsung menggunakan x = a (cos E - e), y = a sqrt(1 - e^2) sin E.
Jadi, lebih mudah.
Jadi, langkah-langkah perhitungan posisi roket:
Hitung M = (2π / T_transfer) t
Selesaikan E dari M = E - e sin E, misalnya dengan metode Newton-Raphson.
Hitung x = a (cos E - e)
Hitung y = a sqrt(1 - e^2) sin E
Karena kita menempatkan perihelion di sumbu x positif, dan Matahari di (0,0), maka posisi roket adalah (x, y, 0)
Untuk metode Newton-Raphson, saya bisa iterasi E_{n+1} = E_n - (E_n - e sin E_n - M) / (1 - e cos E_n), dengan tebakan awal E_0 = M.
Biasanya konvergen cepat.
Alternatifnya, untuk simplifikasi, saya bisa menggunakan aproksimasi untuk E, tetapi untuk akurasi, lebih baik gunakan iterasi.
Sekarang, untuk posisi Bumi dan Mars, seperti di atas.
Kemudian, untuk visualisasi dengan Matplotlib, saya bisa plot lintasan orbit Bumi, Mars, dan roket.
Karena ini adalah simulasi 3D, tetapi sebenarnya semua berada di bidang xy, jadi z=0, saya bisa plot dalam 2D.
Tetapi tugasnya meminta simulasi 3D, meskipun sebenarnya pergerakan di bidang 2D.
Mungkin maksudnya adalah untuk menampilkan dalam plot 3D agar terlihat lebih menarik, meskipun z=0.
Jadi, saya bisa menggunakan Axes3D dari Matplotlib.
Sekarang, untuk membuat grafik yang sederhana dan mudah dipahami, saya bisa plot orbit Bumi sebagai lingkaran, orbit Mars sebagai lingkaran lain, dan lintasan roket sebagai elips.
Kemudian, saya bisa plot posisi Bumi, Mars, dan roket pada beberapa titik waktu, misalnya pada t=0, t=Δt/2, dan t=Δt.
Atau, lebih baik, saya bisa plot lintasan penuh roket dari t=0 hingga t=Δt, dan menunjukkan posisi Bumi dan Mars pada t=0 dan t=Δt.
Atau, bahkan lebih baik, saya bisa membuat animasi, tetapi mungkin untuk tugas ini, plot statis sudah cukup.
Wait, dalam soal disebutkan "tampilkan lintasan roket tersebut menggunakan Matplotlib, yang menunjukkan posisinya dibandingkan dengan Bumi dan Mars sepanjang waktu", jadi mungkin plot lintasan penuh dengan posisi pada beberapa waktu.
Saya pikir, saya bisa plot orbit Bumi, orbit Mars, dan lintasan roket, lalu tandai posisi awal dan posisi akhir.
Misalnya, plot lingkaran untuk orbit Bumi, lingkaran untuk orbit Mars, dan elips untuk lintasan roket, lalu tandai posisi Bumi dan Mars pada t=0 dan t=Δt, serta posisi roket pada t=0 dan t=Δt.
Atau, untuk lebih jelas, saya bisa plot posisi Bumi, Mars, dan roket pada beberapa titik waktu, misalnya setiap interval tertentu, dan hubungkan dengan garis untuk menunjukkan pergerakan.
Tetapi karena ini adalah plot statis, mungkin agak sulit untuk menunjukkan pergerakan sepanjang waktu.
Alternatifnya, saya bisa plot lintasan roket dengan titik-titik yang menunjukkan posisi pada waktu tertentu, dan similarly untuk Bumi dan Mars.
Tetapi saya pikir, untuk kesederhanaan, saya akan plot orbit Bumi, orbit Mars, dan lintasan roket, lalu tandai posisi awal dan posisi akhir.
Jadi, mari kita rangkum langkah-langkah yang perlu saya lakukan:
Tentukan parameter:
R_bumi = 1 AU
R_mars = 1.524 AU
a = (R_bumi + R_mars)/2 = 1.262 AU
e = (R_mars - R_bumi)/(R_mars + R_bumi) = (1.524 - 1)/(1.524 + 1) = 0.524 / 2.524 ≈ 0.2076
T_transfer = a^{3/2} ≈ 1.262^{1.5} ≈ 1.417 tahun
Δt = T_transfer / 2 ≈ 0.7085 tahun
ω_bumi = 2π rad/tahun
ω_mars = 2π / 1.88 rad/tahun ≈ 3.340 rad/tahun
φ = π - ω_mars * Δt ≈ π - 3.340 * 0.7085 ≈ 3.1416 - 2.367 ≈ 0.7746 radian
Wait, tadi saya hitung ω_mars * Δt ≈ 2.367 rad, dan π ≈ 3.1416, jadi φ = π - 2.367 ≈ 0.7746 radian.
Tetapi sebenarnya, dari persamaan sebelumnya, θ_mars(t=0) - θ_bumi(t=0) = π - ω_mars * Δt, dan karena θ_bumi(t=0)=0, maka θ_mars(t=0)= φ = π - ω_mars * Δt ≈ 0.7746 radian.
Hitung posisi Bumi dan Mars:
Untuk Bumi: x_bumi(t) = R_bumi cos(ω_bumi t), y_bumi(t) = R_bumi sin(ω_bumi t)
Untuk Mars: x_mars(t) = R_mars cos(ω_mars t + φ), y_mars(t) = R_mars sin(ω_mars t + φ)
Hitung posisi roket:
Untuk t dari 0 hingga Δt, hitung M = (2π / T_transfer) t
Selesaikan E dari M = E - e sin E
Hitung x_rocket = a (cos E - e)
Hitung y_rocket = a sqrt(1 - e^2) sin E
Plot dalam Matplotlib:
Plot orbit Bumi: lingkaran dengan jari-jari R_bumi
Plot orbit Mars: lingkaran dengan jari-jari R_mars
Plot lintasan roket: plot x_rocket vs y_rocket untuk t dari 0 hingga Δt
Tandai posisi awal Bumi, Mars, dan roket pada t=0
Tandai posisi akhir Bumi, Mars, dan roket pada t=Δt
Untuk membuatnya lebih menarik, saya bisa menggunakan warna yang berbeda untuk setiap lintasan dan posisi.
Misalnya, biru untuk Bumi, merah untuk Mars, hijau untuk roket.
Juga, saya bisa menambahkan Matahari di (0,0).
Sekarang, untuk implementasi numerik, saya perlu memilih jumlah titik waktu, misalnya N=100, dan hitung posisi pada t = i * Δt / N untuk i=0 hingga N.
Kemudian, untuk menyelesaikan E dari M = E - e sin E, saya bisa membuat fungsi yang melakukan iterasi Newton-Raphson.
Misalnya, definisikan fungsi def solve_E(M, e, tol=1e-6, max_iter=10):
E = M
for _ in range(max_iter):
E_new = E - (E - e * sin(E) - M) / (1 - e * cos(E))
if abs(E_new - E) < tol:
return E_new
E = E_new
return E
Kemudian, saya bisa menghitung E untuk setiap M.
Setelah itu, hitung x dan y roket.
Untuk plot, saya bisa menggunakan matplotlib.pyplot dan mpl_toolkits.mplot3d.Axes3D.
Meskipun sebenarnya, karena z=0, saya bisa plot dalam 2D, tetapi untuk memenuhi permintaan "simulasi 3D", saya akan plot dalam 3D dengan z=0.
Jadi, contoh kode:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
Parameter
R_earth = 1.0
R_mars = 1.524
a = (R_earth + R_mars) / 2
e = (R_mars - R_earth) / (R_earth + R_mars)
T_transfer = a**1.5
delta_t = T_transfer / 2
omega_earth = 2 * np.pi
T_mars = 1.88
omega_mars = 2 * np.pi / T_mars
phi = np.pi - omega_mars * delta_t
Waktu
N = 100
t = np.linspace(0, delta_t, N)
Posisi Bumi
theta_earth = omega_earth * t
x_earth = R_earth * np.cos(theta_earth)
y_earth = R_earth * np.sin(theta_earth)
z_earth = np.zeros(N)
Posisi Mars
theta_mars = omega_mars * t + phi
x_mars = R_mars * np.cos(theta_mars)
y_mars = R_mars * np.sin(theta_mars)
z_mars = np.zeros(N)
Posisi roket
M = (2 * np.pi / T_transfer) * t
E = np.zeros(N)
for i in range(N):
E[i] = solve_E(M[i], e)
x_rocket = a * (np.cos(E) - e)
y_rocket = a * np.sqrt(1 - e**2) * np.sin(E)
z_rocket = np.zeros(N)
Plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
Plot orbit Bumi
theta = np.linspace(0, 2 * np.pi, 100)
x_orbit_earth = R_earth * np.cos(theta)
y_orbit_earth = R_earth * np.sin(theta)
z_orbit_earth = np.zeros(100)
ax.plot(x_orbit_earth, y_orbit_earth, z_orbit_earth, 'b--', label='Orbit Bumi')
Plot orbit Mars
x_orbit_mars = R_mars * np.cos(theta)
y_orbit_mars = R_mars * np.sin(theta)
z_orbit_mars = np.zeros(100)
ax.plot(x_orbit_mars, y_orbit_mars, z_orbit_mars, 'r--', label='Orbit Mars')
Plot lintasan roket
ax.plot(x_rocket, y_rocket, z_rocket, 'g-', label='Lintasan Roket')
Plot posisi awal
ax.scatter([x_earth[0]], [y_earth[0]], [z_earth[0]], color='b', label='Bumi t=0')
ax.scatter([x_mars[0]], [y_mars[0]], [z_mars[0]], color='r', label='Mars t=0')
ax.scatter([x_rocket[0]], [y_rocket[0]], [z_rocket[0]], color='g', label='Roket t=0')
Plot posisi akhir
ax.scatter([x_earth[-1]], [y_earth[-1]], [z_earth[-1]], color='b', marker='o', label='Bumi t=Δt')
ax.scatter([x_mars[-1]], [y_mars[-1]], [z_mars[-1]], color='r', marker='o', label='Mars t=Δt')
ax.scatter([x_rocket[-1]], [y_rocket[-1]], [z_rocket[-1]], color='g', marker='o', label='Roket t=Δt')
Plot Matahari
ax.scatter([0], [0], [0], color='y', label='Matahari')
ax.set_xlabel('X (AU)')
ax.set_ylabel('Y (AU)')
ax.set_zlabel('Z (AU)')
ax.legend()
plt.show()
Tentu saja, saya perlu mendefinisikan fungsi solve_E terlebih dahulu.
Juga, untuk lebih akurat, saya bisa menambahkan lebih banyak titik atau menggunakan metode yang lebih presisi, tetapi untuk tujuan ini, seharusnya sudah cukup.
Jadi, dengan ini, saya telah membuat simulasi 3D sederhana tentang perjalanan roket dari Bumi ke Mars menggunakan transfer Hohmann, dan menampilkannya dengan Matplotlib.
Final Solution
To solve this problem, we need to simulate the trajectory of a rocket traveling from Earth to Mars using the Hohmann transfer orbit, which is an efficient way to move between two circular orbits. We will model the positions of Earth, Mars, and the rocket over time and visualize their trajectories using Matplotlib in a 3D plot.
Approach
Parameters and Initial Setup:
Define the orbital radii of Earth and Mars.
Calculate the semi-major axis and eccentricity of the transfer orbit.
Determine the transfer time using Kepler's third law.
Position Calculations:
Visualization:
Plot the orbits of Earth and Mars as circles.
Plot the trajectory of the rocket as an ellipse.
Mark the initial and final positions of Earth, Mars, and the rocket.
Solution Code
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def solve_E(M, e, tol=1e-6, max_iter=10):
E = M
for _ in range(max_iter):
E_new = E - (E - e * np.sin(E) - M) / (1 - e * np.cos(E))
if abs(E_new - E) < tol:
return E_new
E = E_new
return E
# Parameters
R_earth = 1.0 # AU
R_mars = 1.524 # AU
a = (R_earth + R_mars) / 2 # Semi-major axis of transfer orbit
e = (R_mars - R_earth) / (R_earth + R_mars) # Eccentricity
T_transfer = a**1.5 # Period of transfer orbit in years
delta_t = T_transfer / 2 # Transfer time in years
omega_earth = 2 * np.pi # Angular velocity of Earth in rad/year
T_mars = 1.88 # Orbital period of Mars in years
omega_mars = 2 * np.pi / T_mars # Angular velocity of Mars in rad/year
phi = np.pi - omega_mars * delta_t # Initial phase angle for Mars
# Time steps
N = 100
t = np.linspace(0, delta_t, N)
# Positions of Earth
theta_earth = omega_earth * t
x_earth = R_earth * np.cos(theta_earth)
y_earth = R_earth * np.sin(theta_earth)
z_earth = np.zeros(N)
# Positions of Mars
theta_mars = omega_mars * t + phi
x_mars = R_mars * np.cos(theta_mars)
y_mars = R_mars * np.sin(theta_mars)
z_mars = np.zeros(N)
# Positions of the rocket
M = (2 * np.pi / T_transfer) * t
E = np.array([solve_E(M_i, e) for M_i in M])
x_rocket = a * (np.cos(E) - e)
y_rocket = a * np.sqrt(1 - e**2) * np.sin(E)
z_rocket = np.zeros(N)
# Plotting
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Orbit of Earth
theta = np.linspace(0, 2 * np.pi, 100)
x_orbit_earth = R_earth * np.cos(theta)
y_orbit_earth = R_earth * np.sin(theta)
z_orbit_earth = np.zeros(100)
ax.plot(x_orbit_earth, y_orbit_earth, z_orbit_earth, 'b--', label='Orbit of Earth')
# Orbit of Mars
x_orbit_mars = R_mars * np.cos(theta)
y_orbit_mars = R_mars * np.sin(theta)
z_orbit_mars = np.zeros(100)
ax.plot(x_orbit_mars, y_orbit_mars, z_orbit_mars, 'r--', label='Orbit of Mars')
# Trajectory of the rocket
ax.plot(x_rocket, y_rocket, z_rocket, 'g-', label='Rocket Trajectory')
# Initial positions
ax.scatter([x_earth[0]], [y_earth[0]], [z_earth[0]], color='b', label='Earth at t=0')
ax.scatter([x_mars[0]], [y_mars[0]], [z_mars[0]], color='r', label='Mars at t=0')
ax.scatter([x_rocket[0]], [y_rocket[0]], [z_rocket[0]], color='g', label='Rocket at t=0')
# Final positions
ax.scatter([x_earth[-1]], [y_earth[-1]], [z_earth[-1]], color='b', marker='o', label='Earth at t=Δt')
ax.scatter([x_mars[-1]], [y_mars[-1]], [z_mars[-1]], color='r', marker='o', label='Mars at t=Δt')
ax.scatter([x_rocket[-1]], [y_rocket[-1]], [z_rocket[-1]], color='g', marker='o', label='Rocket at t=Δt')
# Sun
ax.scatter([0], [0], [0], color='y', label='Sun')
ax.set_xlabel('X (AU)')
ax.set_ylabel('Y (AU)')
ax.set_zlabel('Z (AU)')
ax.legend()
plt.show()

Explanation
Parameters and Initial Setup: We define the orbital radii of Earth and Mars, calculate the semi-major axis and eccentricity of the transfer orbit, and determine the transfer time.
Position Calculations: We compute the positions of Earth and Mars using their angular velocities. For the rocket, we use the mean anomaly to find the eccentric anomaly via Newton's method and then calculate its position.
Visualization: We use Matplotlib to create a 3D plot showing the orbits of Earth and Mars, the trajectory of the rocket, and their positions at the start and end of the journey. The Sun is also plotted at the origin.
This approach provides a clear and accurate simulation of the rocket's journey from Earth to Mars using the Hohmann transfer orbit.