Sistem teknik — suspensi kendaraan, filter listrik, lengan robot — hampir semuanya bisa diringkas menjadi satu pola: inersia yang menolak perubahan, disipasi yang melucuti energi, dan elemen pemulih yang menarik kembali ke posisi seimbang. Chapter ini membangun model massa-pegas-damper dari pola itu, mensimulasikannya lewat ode45 seperti pada Chapter Simulasi Sistem, lalu memanfaatkan fakta yang menghemat banyak pekerjaan: rangkaian RLC menuruti persamaan yang identik, sehingga satu model dipakai di dua domain. Cakupan kita:
- respons step untuk tiga regime damping: underdamped, critically damped, overdamped
- tabel padanan mekanik–listrik (dualitas elektro-mekanik)
- respons frekuensi lewat sapuan sinus dan letak resonansi
Sistem Massa-Pegas-Damper #
Aturannya satu persamaan: m*x'' + c*x' + k*x = F(t). Massa m (kg) menyimpan energi kinetik, damper c (N·s/m) menyerap energi sebanding kecepatan, dan pegas k (N/m) mendorong balik sebanding simpangan. Dua angka menentukan watak sistem: frekuensi natural wn = sqrt(k/m) dan damping kritis cKritis = 2*sqrt(k*m); rasio zeta = c/cKritis membagi perilaku sistem menjadi tiga regime. Mekanisme di balik layar sama seperti Chapter Simulasi Sistem: ode45 tidak menerima persamaan orde dua, jadi kita menurunkannya menjadi sistem dua orde satu dengan state [x; x'], lalu menyerahkan function handle yang mengembalikan turunannya.
m = 1; % massa (kg)
k = 100; % konstanta pegas (N/m)
F0 = 100; % besar gaya step (N)
wn = sqrt(k/m); % frekuensi natural (rad/s)
cKritis = 2*sqrt(k*m); % damping kritis (N.s/m)
fprintf('Frekuensi natural : wn = %.2f rad/s = %.3f Hz\n', wn, wn/(2*pi));
fprintf('Damping kritis : c = %.1f N.s/m\n\n', cKritis);
cKasus = [2, 20, 40]; % underdamped, kritis, overdamped
nama = {'underdamped', 'critically damped', 'overdamped'};
fprintf('%-18s %5s %6s %9s %9s\n', 'kasus', 'c', 'zeta', 'x_max', 'x_akhir');
for i = 1:3
c = cKasus(i);
zeta = c / (2*sqrt(k*m));
sistem = @(t, x) [x(2); (F0 - c*x(2) - k*x(1))/m];
[t, x] = ode45(sistem, [0, 5], [0; 0]); % respons step dari kondisi awal nol
fprintf('%-18s %5.1f %6.2f %9.4f %9.4f\n', nama{i}, c, zeta, max(x(:,1)), x(end,1));
endOutput yang Dihasilkan:
Frekuensi natural : wn = 10.00 rad/s = 1.592 Hz
Damping kritis : c = 20.0 N.s/m
kasus c zeta x_max x_akhir
underdamped 2.0 0.10 1.7277 0.9945
critically damped 20.0 1.00 1.0000 1.0000
overdamped 40.0 2.00 1.0000 1.0000Mari kita bedah baris-baris kode di atas:
- Baris 1-3 (
m = 1; k = 100; F0 = 100): parameter sistem dan gaya step — gaya konstanF0dinyalakan padat = 0, sehingga posisi akhir yang diharapkan adalah simpangan statikF0/k = 1 m. - Baris 5-6 (
wn,cKritis): dua karakter sistem.wn = sqrt(k/m)adalah frekuensi osilasi bebas;cKritis = 2*sqrt(k*m)adalah nilaicyang memisahkan osilasi dari tanpa-osilasi. - Baris 10-11 (
cKasus,nama): tiga nilaic—2(ζ = 0.1),20(ζ = 1),40(ζ = 2) — mewakili tiga regime. - Baris 16 (
sistem = @(t, x) ...): anonymous function mengembalikan[x'; x'']; baris kedua adalah persamaan gerak yang diolah menjadix'' = (F0 - c*x' - k*x)/m, dengan gaya step masuk sebagai konstantaF0. - Baris 17 (
ode45(sistem, [0, 5], [0; 0])): integrasi 5 detik dari posisi dan kecepatan nol; hasilxberisi dua kolom — posisi (kolom 1) dan kecepatan (kolom 2). - Baris 18 (
fprintf ...):max(x(:,1))mencatat puncak osilasi pertama,x(end,1)posisi akhir — dua statistik yang membedakan ketiga regime dalam satu tabel.
Pembacaan hasilnya: sistem underdamped melampaui target hingga 1.7277 — overshoot sekitar 73% dari posisi akhir 1 m — lalu berosilasi menuju 0.9945 pada t = 5 s (masih meluruh). Sistem kritis dan overdamped tidak pernah melampaui 1; kritis mencapainya paling cepat, overdamped mendekat paling lambat. Ketiganya diringkas dalam tabel berikut:
| Regime | ζ = c/2√(km) | Perilaku respons step | Aplikasi khas |
|---|---|---|---|
| underdamped | ζ < 1 | melampaui target, osilasi meluruh | suspensi mobil penumpang |
| critically damped | ζ = 1 | tercepat tanpa osilasi | pintu penutup otomatis |
| overdamped | ζ > 1 | lambat, tanpa osilasi | suspensi kendaraan berat |
Dualitas Elektro-Mekanik: Rangkaian RLC #
Aturan listriknya: hukum tegangan Kirchhoff pada rangkaian RLC seri menghasilkan L*q'' + R*q' + q/C = V(t), dengan q muatan kapasitor (C), q' arus (A), L induktansi (H), R resistansi (Ω), dan C kapasitansi (F). Struktur persamaan ini identik dengan massa-pegas-damper — bukan kebetulan, melainkan dualitas elektro-mekanik: induktor menyimpan energi medan seperti massa menyimpan energi kinetik, resistor melucuti energi seperti damper, dan kapasitor menarik muatan kembali seperti pegas menarik posisi.
| Mekanik | Listrik (RLC seri) | Peran bersama |
|---|---|---|
| m (kg) | L (H) | inersia — menolak perubahan laju |
| c (N·s/m) | R (Ω) | disipasi — melucuti energi |
| k (N/m) | 1/C (1/F) | pemulih — menarik kembali ke setimbang |
| F(t) (N) | V(t) (V) | sumber penggerak |
| x (m) | q (C) | variabel respons |
| wn = √(k/m) | ω0 = 1/√(L·C) | frekuensi natural |
Diagram di atas memetakan kedua sisi persamaan: tiga komponen mekanik pada blok kiri memiliki pasangan eksak di blok kanan, dan tanda penghubung menyatakan peran fisis yang sama. Konsekuensi praktisnya menguntungkan: kode ode45 dari bagian sebelumnya bisa dipakai ulang untuk RLC hanya dengan mengganti nama variabel. Kita verifikasi padanan angkanya:
L = 1; % induktansi (H)
C = 0.01; % kapasitansi (F)
R = 20; % resistansi (Ohm)
fprintf('\nRLC seri: L = %.2f H, C = %.3f F, R = %.1f Ohm\n', L, C, R);
fprintf('Frekuensi natural : 1/sqrt(L*C) = %.2f rad/s\n', 1/sqrt(L*C));
fprintf('Resistansi kritis : 2*sqrt(L/C) = %.1f Ohm\n', 2*sqrt(L/C));Output yang Dihasilkan:
RLC seri: L = 1.00 H, C = 0.010 F, R = 20.0 Ohm
Frekuensi natural : 1/sqrt(L*C) = 10.00 rad/s
Resistansi kritis : 2*sqrt(L/C) = 20.0 OhmBaris pertama memilih L = 1 dan C = 0.01 sebagai kembaran listrik dari m = 1 dan k = 100 (karena 1/C = 100), dan R = 20 sebagai kembaran c = 20. Hasilnya persis: frekuensi natural 10 rad/s dan resistansi kritis 2*sqrt(L/C) = 20 Ω — padanan cKritis = 20 N·s/m. Rangkaian ini berperilaku critically damped terhadap tegangan step.
Respons Frekuensi: Sapuan Sinus #
Aturan berikutnya: gantikan gaya step dengan paksaan harmonik F(t) = F0*sin(w*t). Setelah transien padam, sistem berosilasi pada frekuensi paksaan w dengan amplitudo steady-state yang bisa dihitung tertutup: X(w) = F0 / sqrt((k - m*w^2)^2 + (c*w)^2) — hasil substitusi sinus ke persamaan gerak. Menyapu beberapa frekuensi memberi kurva respons frekuensi tanpa perlu mensimulasikan ulang tiap titik:
c = 2;
w = [5, 8, 9, 9.9, 10, 12, 15]; % frekuensi paksa (rad/s)
X = F0 ./ sqrt((k - m*w.^2).^2 + (c*w).^2); % amplitudo steady-state (m)
fprintf('\nSapuan sinus (amplitudo steady-state):\n');
fprintf('%7s %8s\n', 'omega', 'X (m)');
for i = 1:numel(w)
fprintf('%7.2f %8.4f\n', w(i), X(i));
endOutput yang Dihasilkan:
Sapuan sinus (amplitudo steady-state):
omega X (m)
5.00 1.3216
8.00 2.5384
9.00 3.8208
9.90 5.0252
10.00 5.0000
12.00 1.9952
15.00 0.7779Baris ketiga memakai operasi per elemen (.^, .* implisit lewat c*w skalar) sehingga seluruh tujuh frekuensi dihitung sekaligus. Pembacaannya: pada w = 5 amplitudo hanya 1.32 m, nyaris sama dengan simpangan statik 1 m; menjelang w = 10 amplitudo melonjak ke 5 m; di w = 15 sistem nyaris diam karena paksaan terlalu cepat diikuti inersia.
Resonansi #
Lonjakan di atas adalah resonansi: ketika frekuensi paksaan mendekati frekuensi natural wn = sqrt(k/m) = 10 rad/s, suku (k - m*w^2) menuju nol dan tinggal damping c*w yang membatasi amplitudo. Makanya puncak sebenarnya bergeser sedikit ke wn*sqrt(1 - 2*zeta^2):
wGrid = 5:0.001:15;
XGrid = F0 ./ sqrt((k - m*wGrid.^2).^2 + (c*wGrid).^2);
[Xpuncak, ip] = max(XGrid);
fprintf('\nPuncak resonansi : omega = %.3f rad/s, X = %.3f m\n', wGrid(ip), Xpuncak);
fprintf('Amplifikasi : X_puncak / X_statik = %.2f kali\n', Xpuncak/(F0/k));Output yang Dihasilkan:
Puncak resonansi : omega = 9.899 rad/s, X = 5.025 m
Amplifikasi : X_puncak / X_statik = 5.03 kaliGrid frekuensi 5:0.001:15 dihitung vektoris penuh, lalu [Xpuncak, ip] = max(XGrid) mengambil nilai dan indeks puncaknya — teknik sweep yang sama dipakai spectrum analyzer. Dengan ζ = 0.1, puncak 9.899 rad/s berjarak 1% dari wn, dan amplitudo teramplifikasi 5 kali simpangan statik. Menaikkan c menurunkan puncak secara kasar sebanding 1/(2*zeta) — inilah alasan damper dan resistor diciptakan.
Ringkasan #
Persamaan m*x'' + c*x' + k*x = F(t) dan RLC seri L*q'' + R*q' + q/C = V(t) adalah satu model dengan dua kostum — dualitas m↔L, c↔R, k↔1/C membuat kode ode45 dipakai ulang lintas domain. Rasio damping ζ membagi respons step menjadi underdamped (overshoot 73% pada ζ = 0.1), critically damped (tercepat tanpa overshoot), dan overdamped. Respons frekuensi X(w) = F0/sqrt((k - m*w^2)^2 + (c*w)^2) melonjak dekat frekuensi natural sqrt(k/m) — resonansi yang teramplifikasi 5 kali pada contoh kita dan dikendalikan oleh damping. Berkas contoh.m pada bagian bawah halaman menjalankan seluruh rantai ini dalam satu script.