s
L singgung
θ
mg
d 2 dtk d 2θ
dt 2 = L dt 2 = - g sinθ (1)
di mana bob bergerak pada busur lingkaran berjari-jari L, s sejajar dengan
garis singgung busur ini ketika perpindahan sudut bob dari posisi
kesetimbangannya adalah θ, dan −g sin θ adalah komponen percepatan
karena gravitasi ke arah s. (NB Arah s positif dipilih untuk menjauhi posisi
kesetimbangan, ke arah yang membuat θ meningkat.)
Untuk sudut kecil sin θ ≈ θ, dan persamaan (1) dapat didekati dengan
d 2θ g
2
dt =- Lθ (2)
Ini adalah versi linear dari persamaan (1), karena ruas kanan linier pada
θ sedangkan sinθ pada persamaan (1) non linier. Persamaan (2) dapat
diselesaikan secara analitik, memberikan solusi periodik yang biasa:
dθ g
θ = a sin (β t + φ), dt = a ω cos (β t + φ), β= L (3)
1
dθ dω
dt = ω , dt = f (θ, ω, t ) (4)
θ ( t + Δ t ) = θ ( t ) + d θ ( t ) Δ t + d θ ( t ) Δ t 2+ O (Δ t ) 3
2
dt dt 2 2!
θ ( t + Δ t ) = θ ( t ) + ω ( t ) Δ t + f (θ ( t ), ω (2 t ),
Δt
t) +
O (Δ t ) 3
2!
θ n +1 = θ n + ω n Δ t + O (Δ t ) 2
ω n +1 = ω n - θ n Δ t + O (Δ t ) 2
Trapesium
Sederhana
Euler
dθ( dθ(t+Δt)
t) dt
dt
t t+Δt
d θ ( t ) d θ ( t + Δ t )
dt
+ dt
Luas di bawah trapesium = ( t + Δ t - t )
t+ Δ
2 ≅ ∫
t
2
Δt⎛dθ(t) d θ ( t + Δ t ) ⎞
θ n +1 ≅ θ
n
+
⎜
+
⎟
2⎝ dt dt ⎠
d θ ( t + Δ t ) = d θ ( t ) + d θ ( t ) Δ t + O (Δ t ) 2
2
2
dt
dt
dt
d θ ( t + Δ t )
≅ ω n + f (θ n , ω n , t ) Δ t = ω n + k 1 b
dt
Δt
θ + ≅θ + ( ω + ( ω + f (θ , ω , t ) ) Δ t ) = θ + k 1 a + k 2 a
n 1 n n n n n n
2 2
k 1 a = ω n Δ t k2a = ( ω n + f (θ n , ω n , t ) Δ t ) Δ t
Δt⎛dω(t) d ω ( t + Δ t ) ⎞
ω n +1 ≅ ω n + ⎜ +
⎟
2 ⎝ dt dt ⎠
Δt
ω + ≅ ω + ( f (θ , ω , t ) + f (θ + , ω + k 1 b , t + ) ) = ω + k 1 b + k 2 b
n 1 n1 n1
n
2 n n
n
n
2
k 2 b = Δ t f (θ n +1 , ω n + k 1 b , t n +1 )
• bilangan floating point presisi ganda yang mengambil nilai t saat ini,
• ruang tab,
• bilangan floating point presisi ganda yang mengambil nilai arus theta,
• ruang tab lain,
• bilangan floating point presisi ganda yang mengambil nilai omega,
• carriage return (tentu saja tidak terlihat).
Perintah kedua mencetak hal yang persis sama ke file yang alamatnya di
memori komputer adalah Oscp.
Secara umum, perintah untuk mencetak ke file berbentuk:
(Untuk detail lebih lanjut tentang petunjuk lihat Pemrograman di C bagian 8.)
membuka file bernama pendulum.dat. "W" berarti file ini sedang dibuka
sehingga dapat ditulis. Jika Anda ingin membuka file dan membacanya,
Anda harus menggunakan "r", dan jika itu adalah file yang sudah berisi
data dan Anda ingin menambahkan lebih banyak data ke dalamnya, Anda
akan menggunakan "a". Jika file belum ada, perintah buka membuatnya.
Setelah Anda selesai menggunakan file, Anda harus menutupnya dengan pernyataan
formulir
fclose (filepointer);
(9)
# sertakan <stdio.h>
# sertakan <stdlib.h> / * diperlukan untuk fungsi kesalahan * /
# sertakan <math.h>
return deriv;
}
LATIHAN 1
Untuk memplot file data, buka GNUPLOT. Ketik plot saat diminta, dan tarik
menu PLOT dari bilah atas. Klik pada nama file Data… dan kotak dialog
akan memungkinkan Anda untuk menemukan file data yang telah Anda
simpan. Klik pada file yang Anda inginkan dan namanya akan muncul
setelah plot . Sekarang ketik menggunakan 1: 2 dan tekan <RETURN>.
GNUPLOT akan menggunakan kolom pertama dari datafile Anda untuk
sumbu horizontal, dan kolom kedua untuk sumbu vertikal. Untuk memplot
kolom ketiga dan bukan yang kedua, ganti 1: 2 dengan 1: 3. Jika Anda
menggunakan GNUPLOT dengan file pendulum.dat untuk memplot sudut
dan kecepatan sudut sebagai fungsi waktu pada grafik yang sama, baris
perintahnya adalah gnuplot> plot 'pendulum.dat' menggunakan 1: 2,
'pendulum.dat' menggunakan 1: 3
dθ( Δt)
dt
d θ (0) ⎛Δt⎞
θd ⎜ ⎟ ⎝ 2
⎠
dt ⎠
dt
Δ t
2 Δt
d θ ( t ) d θ ( 2 ) d θ ( 2 ) Δ t ⎞ Δ t 2
+ 2 ⎜⎛t - ⎟ + O ( )
=
dt dt dt ⎝ 2 ⎠ 2
Δt
d θ ( t ) dθ( Δ t ⎞ d θ (
t ) d 2 θ ( Δ2t ) ⎛
Δt
Δ Δ2t )
∫ dt ≅ 2 Δ t + 2 ∫ ⎜ t - ⎟ =
Δt+0
0 dt
dt
dt 0 ⎝ 2 ⎠ dt
Suku kedua dalam rangkaian di atas sama dengan nol ketika kita memilih
titik tengah dari langkah waktu untuk ekspansi Taylor. Untuk menggunakan
algoritma ini kita membutuhkan nilai perkiraan untuk θ dan ω pada titik
tengah langkah waktu yang dihasilkan menggunakan metode Simple Euler.
Δ t
θ n +1 - θ n ≅ ω n + 1/2 Δ t + O ( )2
2
Δ t Δ t
ω n + 1/2 ≅ ω n + f (θ n , ω n , t n ) +O( )2
2 2
⎛ Δt⎞
θ + ≅ θ + ⎜ω + f (θ , ω , t ) ⎟Δ t
n1
n
⎝ n
n
n
n 2
⎠
ω + - ω ≅ f (θ + , ω +
,t +
) Δ t + O (Δ t) 2
n1 n n 1/2 n 1/2 n 1/2
2
θ ≅θ +ω Δt
n + 1/2 2
n n
Δ t
ω n + 1/2 ≅ ω n + f (θ n , ω n , t n )
2
k 1a = h ω k 1b= hf (θ, ω, t)
k 2a = h (ω + k 1b / 2)k 2b= hf (θ + k 1a / 2, ω + k 1b / 2, t + h / 2)
k 3a = h (ω + k 2b / 2)k 3b= hf (θ + k 2a / 2, ω + k 2b / 2, t + h / 2)
k 4a = h (ω + k 3b ) k 4b= hf (θ + k 3a , ω + k 3b , t + h)
θ (t + h) = θ (t) + (k 1a + 2 k 2a + 2 k 3a
+ k 4a ) / 6 ω (t + h) = ω (t) + (k 1b + 2
k 2b + 2 k 3b + k 4b ) / 6
LATIHAN 2
1. Edit pendulum.c sehingga menggunakan algoritma Runge-Kutta urutan ke- 4 di
loop for .
2. Periksa program Anda dengan menjalankannya untuk kasus
persamaan nonlinier (1), dengan beberapa nilai awal θ dan ω
yang berbeda, dan bandingkan hasilnya dengan yang diperoleh
pada pertanyaan 2 pada latihan 1.
Plot ω terhadap θ untuk posisi dan kecepatan awal dalam rentang -3.0 <θ (0) <- 1.0,
-0,5 <ω (0) <0,5. Untuk A = 0,90 Anda harus dapat melihat bahwa
gerakan itu periodik, sedangkan untuk A = 1,07 ini adalah kombinasi
osilasi pada dua periode berbeda - telah terjadi penggandaan
periode . Untuk A = 1,5, gerakannya kacau.
8