Sistem Dua Persamaan

Metode substitusi dan eliminasi untuk dua persamaan dua variabel.

Daftar isi

Sistem dua persamaan dua variabel meminta sepasang nilai xx dan yy yang memenuhi dua persamaan sekaligus. Topik ini membahas makna geometrisnya sebagai titik potong dua garis, metode substitusi dan eliminasi untuk mencarinya, serta verifikasi komputasional menggunakan np.linalg.solve. Demo interaktif di bagian akhir memperlihatkan bagaimana perubahan koefisien memindahkan titik potong, menghilangkannya, atau melipatgandakannya.

Titik potong dua garis#

Setiap persamaan linear dua variabel menggambar sebuah garis pada bidang, sehingga sistem dua persamaan berarti dua garis yang dicari kesamaan letaknya. Sistem berikut menjadi contoh sepanjang topik ini.

x+y=5x + y = 5

x−y=1x - y = 1

Secara geometris, kedudukan dua garis hanya memiliki tiga kemungkinan, dan setiap kemungkinan menentukan banyaknya solusi sistem.

Kedudukan dua garisSyaratnyaBanyaknya solusi
Berpotongangradien berbedatepat satu
Sejajargradien sama, konstanta berbedatidak ada
Berimpitgradien dan konstanta samatak hingga

Gambar berikut memperlihatkan sistem di atas. Garis x+y=5x + y = 5 turun dari kiri ke kanan, garis x−y=1x - y = 1 naik, dan keduanya berpotongan tepat di titik (3,2)(3, 2). Titik itulah solusi sistemnya, karena pasangan nilai tersebut memenuhi kedua persamaan sekaligus.

Dua garis dari sistem contoh berpotongan di titik (3, 2)

Metode substitusi#

Substitusi mengekspresikan satu variabel dari salah satu persamaan, lalu menyisipkan ekspresi itu ke persamaan lainnya. Persamaan yang menerima substitusi menyusut menjadi persamaan satu variabel yang sudah dikenal cara menyelesaikannya. Urutan langkahnya sebagai berikut.

  1. Ekspresikan satu variabel dari persamaan yang paling sederhana.
  2. Substitusikan ekspresi tersebut ke persamaan lain sehingga tersisa satu variabel.
  3. Selesaikan persamaan satu variabel itu.
  4. Hitung variabel sisanya dengan substitusi balik.

Diterapkan pada sistem contoh, persamaan x−y=1x - y = 1 dinyatakan ulang sebagai x=y+1x = y + 1. Ekspresi itu disisipkan ke persamaan pertama dan menghasilkan (y+1)+y=5(y + 1) + y = 5, sehingga 2y=42y = 4 dan y=2y = 2. Substitusi balik ke x=y+1x = y + 1 memberikan x=3x = 3. Solusi sistemnya adalah pasangan (3,2)(3, 2). Substitusi paling efisien apabila salah satu variabel sudah terisolasi atau mudah diisolasi, misalnya ketika salah satu persamaan berbentuk y=2xy = 2x.

Metode eliminasi#

Eliminasi menghilangkan satu variabel dengan menjumlahkan atau mengurangkan persamaan setelah koefisiennya disamakan. Pada sistem contoh, koefisien yy sudah saling berlawanan, yaitu +1+1 dan −1-1, sehingga kedua persamaan dapat langsung dijumlahkan. Hasil penjumlahannya adalah (x+y)+(x−y)=5+1(x + y) + (x - y) = 5 + 1, yang menyederhanakan persamaan menjadi 2x=62x = 6 dan memberikan x=3x = 3. Substitusi balik ke x+y=5x + y = 5 memberikan y=2y = 2, sama seperti hasil substitusi.

Apabila koefisiennya belum berlawanan, salah satu persamaan dikalikan dengan bilangan yang tepat terlebih dahulu. Penyesuaian kecil semacam ini selalu memungkinkan karena operasi yang sama pada kedua ruas tidak mengubah persamaan. Tabel berikut merangkum pilihan metode yang lebih efisien.

SituasiMetode yang lebih efisien
Salah satu variabel sudah terisolasisubstitusi
Koefisien sudah sama atau berlawananeliminasi
Sistem berukuran besar yang dikerjakan komputereliminasi dalam bentuk matriks

Kedua metode memberikan solusi yang sama, sehingga pilihan hanya menyangkut banyaknya perhitungan pecahan pada langkah perantara.

Verifikasi dengan NumPy#

NumPy menyelesaikan sistem linear dalam satu pemanggilan np.linalg.solve. Argumennya adalah matriks koefisien dan vektor ruas kanan, dan keduanya disusun mengikuti urutan persamaan serta urutan variabel. Fungsi ini menghitung solusi dengan eliminasi secara numerik, sehingga hasilnya dapat langsung dibandingkan dengan hasil manual.

python Contoh: menyelesaikan sistem dua persamaan
import numpy as np

A = np.array([[1.0, 1.0],
              [1.0, -1.0]])
b = np.array([5.0, 1.0])
solusi = np.linalg.solve(A, b)
print("solusi :", solusi)
print("sisa   :", A @ solusi - b)
print("det(A) :", np.linalg.det(A))
text Keluaran
solusi : [3. 2.]
sisa   : [0. 0.]
det(A) : -2.0

Keluaran menunjukkan solusi (3,2)(3, 2), yang sama dengan hasil substitusi maupun eliminasi. Nilai sisa berupa hasil kali matriks koefisien dengan vektor solusi dikurangi vektor konstanta dan bernilai nol, yang menyatakan solusi memenuhi kedua persamaan. Nilai det(A) berupa determinan yang bukan nol, dan itulah tanda bahwa sistem memiliki tepat satu solusi. Sistem dengan determinan nol perlu diperiksa terpisah karena tidak memiliki solusi tunggal.

python Contoh: mendeteksi sistem garis sejajar
import numpy as np

D = np.array([[1.0, 2.0],
              [2.0, 4.0]])
print("det(D) =", np.linalg.det(D))
text Keluaran
det(D) = 0.0

Determinan bernilai 0.0 pada sistem x+2y=4x + 2y = 4 dan 2x+4y=92x + 4y = 9. Kedua garisnya sejajar karena persamaan kedua adalah dua kali persamaan pertama dengan ruas kanan yang berbeda, sehingga sistemnya tidak memiliki solusi.

Demo interaktif perubahan koefisien#

Demo berikut menggambar garis tetap x+y=5x + y = 5 dan garis kedua yang kemiringan serta konstantanya diatur oleh penggeser. Gerakkan penggeser kemiringan ke kanan dan ke kiri untuk melihat titik potong berpindah sepanjang garis tetap. Atur kemiringan bernilai −1-1 dan konstanta bernilai 5 agar kedua garis berimpit, lalu ubah konstantanya agar keduanya sejajar. Ketiga kemungkinan pada tabel kedudukan garis muncul kembali dalam satu demo.

Kode sumber demo
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="utf-8">
<title>Demo titik potong dua garis</title>
<style>
  body { font-family: sans-serif; margin: 12px; color: #1a1a1a; }
  h1 { font-size: 15px; margin: 0 0 6px; }
  p { font-size: 13px; margin: 4px 0; }
  svg { width: 100%; height: auto; border: 1px solid #d0d0d0; background: #fafafa; }
  .kontrol { display: flex; gap: 18px; margin: 8px 0; flex-wrap: wrap; }
  .kontrol label { font-size: 13px; }
  .status { font-size: 14px; font-weight: bold; margin: 6px 0 0; }
</style>
</head>
<body>
<h1>Titik potong dua garis</h1>
<p>
  Garis A (tetap): x + y = 5, yaitu y = -x + 5.<br>
  Garis B (diatur): y = <span id="persamaanB">1,0x - 1,0</span>.
</p>
<svg id="kanvas" viewBox="0 0 440 320" aria-label="Grafik dua garis dan titik potongnya"></svg>
<div class="kontrol">
  <label>kemiringan m (garis B):
    <input id="m" type="range" min="-3" max="3" step="0.5" value="1">
  </label>
  <label>konstanta c (garis B):
    <input id="c" type="range" min="-6" max="6" step="1" value="-1">
  </label>
</div>
<p class="status" id="status"></p>
<script>
  // garis A tetap: y = -x + 5, sehingga m = -1 dan c = 5
  const MA = -1, CA = 5;
  const svg = document.getElementById('kanvas');
  const NS = 'http://www.w3.org/2000/svg';

  // pemetaan koordinat matematis (-10..10) ke piksel kanvas
  const px = x => 20 + (x + 10) * 20;
  const py = y => 10 + (10 - y) * 15;

  function el(nama, attr) {
    const e = document.createElementNS(NS, nama);
    for (const k in attr) e.setAttribute(k, attr[k]);
    svg.appendChild(e);
    return e;
  }

  // kisi tipis setiap 5 satuan
  for (let g = -10; g <= 10; g += 5) {
    el('line', {x1: px(g), y1: py(-10), x2: px(g), y2: py(10), stroke: '#e2e2e2'});
    el('line', {x1: px(-10), y1: py(g), x2: px(10), y2: py(g), stroke: '#e2e2e2'});
  }
  el('line', {x1: px(-10), y1: py(0), x2: px(10), y2: py(0), stroke: '#909090'});
  el('line', {x1: px(0), y1: py(-10), x2: px(0), y2: py(10), stroke: '#909090'});
  const garisA = el('line', {stroke: '#2171b5', 'stroke-width': 2.5});
  const garisB = el('line', {stroke: '#e6550d', 'stroke-width': 2.5});
  const titik  = el('circle', {r: 5, fill: '#111111'});

  function fmt(v) {
    return v.toFixed(1).replace('.', ',').replace('-', '\u2212');
  }

  function gambar() {
    const m = parseFloat(document.getElementById('m').value);
    const c = parseFloat(document.getElementById('c').value);
    garisA.setAttribute('x1', px(-11)); garisA.setAttribute('y1', py(MA * -11 + CA));
    garisA.setAttribute('x2', px(11));  garisA.setAttribute('y2', py(MA * 11 + CA));
    garisB.setAttribute('x1', px(-11)); garisB.setAttribute('y1', py(m * -11 + c));
    garisB.setAttribute('x2', px(11));  garisB.setAttribute('y2', py(m * 11 + c));
    document.getElementById('persamaanB').textContent =
      fmt(m) + 'x ' + (c < 0 ? '\u2212 ' + fmt(-c) : '+ ' + fmt(c));
    const status = document.getElementById('status');
    if (Math.abs(m - MA) < 1e-6) {
      titik.setAttribute('display', 'none');
      status.textContent = Math.abs(c - CA) < 1e-6
        ? 'Kedua garis berimpit: tak hingga banyaknya titik potong.'
        : 'Kedua garis sejajar: tidak ada titik potong.';
    } else {
      const x = (CA - c) / (m - MA);
      const y = MA * x + CA;
      titik.removeAttribute('display');
      titik.setAttribute('cx', px(x));
      titik.setAttribute('cy', py(y));
      status.textContent = 'Titik potong: x = ' + x.toFixed(2).replace('.', ',')
        + ', y = ' + y.toFixed(2).replace('.', ',');
    }
  }
  document.getElementById('m').addEventListener('input', gambar);
  document.getElementById('c').addEventListener('input', gambar);
  gambar();
</script>
</body>
</html>

Nilai batas pada demo ini meniru pemeriksaan determinan. Demo menganggap kedua garis sejajar ketika kemiringannya sama, dan menganggapnya berimpit apabila konstantanya juga sama. Kondisi serupa perlu ditangani setiap kali program menyelesaikan sistem persamaan.

Di mana hal ini ditemui dalam kode#

Sistem dua persamaan muncul setiap kali dua kendala diterapkan pada dua nilai yang tidak diketahui. Jadwal piket menyediakan contoh yang mudah dihitung ulang. Dua pekerja menyelesaikan dua jenis tugas dengan laju berbeda. Total banyaknya tugas dan total jam kerja diketahui, dan kedua laju dicari sebagai sepasang variabel. Campuran larutan bekerja dengan pola yang sama, yaitu total volume dan jumlah zat terlarut menjadi dua persamaan untuk dua konsentrasi. Pada grafika, perpotongan sinar (ray tracing) menyelesaikan sistem kecil untuk menemukan titik tumbuk antara lintasan sinar dan permukaan objek. NumPy memperluas pola ini ke sistem berukuran berapa pun, karena np.linalg.solve menerima matriks koefisien berukuran sama dengan banyaknya variabel dan mengembalikan seluruh solusi sekaligus.

Ringkasan#

  • Solusi sistem dua persamaan linear adalah titik potong kedua garisnya, dengan tiga kemungkinan banyaknya, yaitu satu, tidak ada, atau tak hingga.
  • Substitusi mengisolasi satu variabel lalu menyisipkannya, sedangkan eliminasi menjumlahkan atau mengurangkan persamaan setelah koefisien disamakan.
  • np.linalg.solve menghitung solusi sistem dalam satu pemanggilan, dan determinan bernilai nol menandakan sistem tanpa solusi tunggal.
  • Sisa berupa A @ solusi - b yang bernilai nol menyatakan solusi memenuhi seluruh persamaan.

Referensi#