Langsung ke konten utama

Day 64 : Membuat program sederhana go part 7 : Menghitung sistem persamaan dua variabel

Apa itu Sistem Persamaan Linear Dua Variabel (SPLDV)?

Sistem persamaan linear dua variabel (SPLDV) adalah kumpulan dua persamaan linear yang melibatkan dua variabel, biasanya dinotasikan dengan x dan y. Tujuan SPLDV adalah mencari nilai x dan y yang memenuhi kedua persamaan tersebut secara bersamaan.

Secara umum, bentuk SPLDV adalah:

a1x+b1y=c1a_1x + b_1y = c_1 a2x+b2y=c2a_2x + b_2y = c_2

Keterangan:

  • a1,b1,c1a_1, b_1, c_1 adalah koefisien dan konstanta dari persamaan pertama.
  • a2,b2,c2a_2, b_2, c_2 adalah koefisien dan konstanta dari persamaan kedua.
  • x dan y adalah variabel yang dicari solusinya.

Contoh SPLDV

  1. 2x+3y=52x + 3y = 5
  2. 4xy=24x - y = 2

Tujuan kita adalah mencari nilai x dan y yang membuat kedua persamaan benar secara bersamaan.


Kemungkinan Solusi SPLDV

  1. Solusi unik: SPLDV memiliki satu pasangan solusi (x, y). Ini terjadi jika kedua garis yang diwakili oleh persamaan tersebut berpotongan di satu titik.
  2. Tidak ada solusi: Tidak ada nilai x dan y yang bisa memenuhi kedua persamaan. Ini terjadi jika kedua garis tersebut sejajar dan tidak pernah bertemu.
  3. Tak terhingga banyak solusi: Terjadi jika kedua persamaan mewakili garis yang identik (berimpit).

Metode Penyelesaian SPLDV dalam Program

Dalam program di atas, kita menggunakan metode determinan untuk menyelesaikan SPLDV. Metode ini efektif karena dengan menghitung determinan, kita dapat menentukan:

  • Apakah ada solusi unik (determinannya ≠ 0).
  • Atau tidak ada solusi unik (determinannya = 0).

Determinannya dihitung sebagai:

det=a1b2a2b1\text{det} = a_1 \cdot b_2 - a_2 \cdot b_1

  • Jika det ≠ 0, sistem memiliki solusi unik.
  • Jika det = 0, berarti tidak ada solusi unik (persamaan sejajar atau tidak konsisten).
Berikut adalah implementasi dalam Go untuk menyelesaikan SPLDV menggunakan metode determinan.



package main

import (
    "fmt"
)

func solveLinearEquations(x1, y1, c1, x2, y2, c2 float64) (float64, float64, error) {
    det := x1*y2 - x2*y1
    if det == 0 {
        return 0, 0, fmt.Errorf("Tidak ada solusi unik, karena determinan = 0 (persamaan sejajar atau tidak konsisten)")
    }

    x := (c1*y2 - c2*y1) / det
    y := (x1*c2 - x2*c1) / det

    return x, y, nil
}

func main() {
    var x1, y1, c1, x2, y2, c2 float64

    fmt.Println("Masukkan koefisien untuk persamaan pertama (x1, y1, c1):")
    fmt.Print("x1: ")
    fmt.Scan(&x1)
    fmt.Print("y1: ")
    fmt.Scan(&y1)
    fmt.Print("c1: ")
    fmt.Scan(&c1)

    fmt.Println("Masukkan koefisien untuk persamaan kedua (x2, y2, c2):")
    fmt.Print("x2: ")
    fmt.Scan(&x2)
    fmt.Print("y2: ")
    fmt.Scan(&y2)
    fmt.Print("c2: ")
    fmt.Scan(&c2)

    x, y, err := solveLinearEquations(x1, y1, c1, x2, y2, c2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Printf("Hasil: x = Rp%.2f, y = Rp%.2f\n", x, y)
    }
}


1. Package dan Import

package main

import (
    "fmt"
)
  • package main: Menandakan bahwa ini adalah program utama yang akan dieksekusi.
  • import "fmt": Mengimpor package fmt untuk menangani input, output, dan format teks.

2. Fungsi solveLinearEquations

func solveLinearEquations(x1, y1, c1, x2, y2, c2 float64) (float64, float64, error) {
    det := x1*y2 - x2*y1
    if det == 0 {
        return 0, 0, fmt.Errorf("Tidak ada solusi unik, karena determinan = 0 (persamaan sejajar atau tidak konsisten)")
    }

    x := (c1*y2 - c2*y1) / det
    y := (x1*c2 - x2*c1) / det

    return x, y, nil
}

Fungsi ini bertujuan untuk menyelesaikan sistem persamaan:

x1x+y1y=c1x_1 \cdot x + y_1 \cdot y = c_1 x2x+y2y=c2x_2 \cdot x + y_2 \cdot y = c_2

Langkah-langkah:

  1. Hitung Determinan:

    det := x1*y2 - x2*y1

    Determinan digunakan untuk menentukan apakah sistem memiliki solusi unik. Jika determinannya nol, maka persamaan tidak memiliki solusi unik (persamaan sejajar atau tidak konsisten).

  2. Cek Determinan:

    if det == 0 {
            return 0, 0, fmt.Errorf("Tidak ada solusi unik, karena determinan = 0 (persamaan sejajar atau tidak konsisten)")
        }
    • Jika determinan = 0, kembalikan error karena tidak ada solusi unik.
  3. Hitung Nilai x dan y:

    x := (c1*y2 - c2*y1) / det
    y := (x1*c2 - x2*c1) / det
    • Rumus ini adalah hasil eliminasi variabel untuk menemukan nilai x dan y.
  4. Return Nilai x, y, dan error:

    • Jika solusi ditemukan, kembalikan nilai x dan y tanpa error.

3. Fungsi main

func main() {
    var x1, y1, c1, x2, y2, c2 float64

    fmt.Println("Masukkan koefisien untuk persamaan pertama (x1, y1, c1):")
    fmt.Print("x1: ")
    fmt.Scan(&x1)
    fmt.Print("y1: ")
    fmt.Scan(&y1)
    fmt.Print("c1: ")
    fmt.Scan(&c1)

    fmt.Println("Masukkan koefisien untuk persamaan kedua (x2, y2, c2):")
    fmt.Print("x2: ")
    fmt.Scan(&x2)
    fmt.Print("y2: ")
    fmt.Scan(&y2)
    fmt.Print("c2: ")
    fmt.Scan(&c2)

    x, y, err := solveLinearEquations(x1, y1, c1, x2, y2, c2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Printf("Hasil: x = Rp%.2f, y = Rp%.2f\n", x, y)
    }
}

Penjelasan:

  1. Deklarasi Variabel Input:

    var x1, y1, c1, x2, y2, c2 float64
    • Menyimpan koefisien dari kedua persamaan linear.
  2. Input dari Pengguna:

    fmt.Scan(&x1)
    • Program meminta pengguna memasukkan nilai x1, y1, c1, x2, y2, dan c2 untuk kedua persamaan.
  3. Panggil Fungsi solveLinearEquations:

    x, y, err := solveLinearEquations(x1, y1, c1, x2, y2, c2)
    • Fungsi ini digunakan untuk menghitung solusi jika ada.
  4. Cek Error dan Tampilkan Hasil:

    if err != nil {
            fmt.Println("Error:", err)
        } else {
            fmt.Printf("Hasil: x = Rp%.2f, y = Rp%.2f\n", x, y)
        }
    }
    • Jika tidak ada error, hasil x dan y ditampilkan dalam format dua desimal.

Contoh Input dan Output

Input:

Masukkan koefisien untuk persamaan pertama (x1, y1, c1): x1: 2 y1: 3 c1: 5 Masukkan koefisien untuk persamaan kedua (x2, y2, c2): x2: 4 y2: -1 c2: 2

Output:

Hasil: x = Rp1.00, y = Rp1.00

Kesimpulan

Program ini adalah implementasi sederhana untuk menyelesaikan dua persamaan linear dua variabel. Dengan menggunakan determinan, program bisa menentukan apakah solusi unik ada atau tidak. Jika tidak ada solusi unik, program akan mengeluarkan pesan error.

Komentar

Postingan populer dari blog ini

Day 109 : Akhir dari Perjalanan PKL: Terima Kasih untuk PT Excellent

Hari ini adalah hari terakhir saya menjalani PKL di PT Excellent. Momen ini menjadi penutup dari perjalanan yang luar biasa penuh pembelajaran, pengalaman, dan kenangan yang tak terlupakan. Saya ingin menyampaikan rasa terima kasih yang sebesar-besarnya kepada keluarga besar PT Excellent atas kesempatan, bimbingan, dan kepercayaan yang telah diberikan kepada saya selama saya melaksanakan PKL di sini. Selama PKL, saya mendapatkan banyak pengetahuan baru yang sebelumnya belum pernah saya pelajari. Dari segi teknis, saya belajar banyak tentang teknologi seperti Zimbra, bahasa pemrograman Golang, hingga DevOps hal-hal yang awalnya terasa asing, kini menjadi ilmu yang berharga dan menjadi ilmu baru bagi saya. Namun, pembelajaran saya di PT Excellent tidak hanya terbatas pada aspek teknis. Saya juga belajar tentang kedisiplinan, tanggung jawab, profesionalisme, serta bagaimana pentingnya kolaborasi dalam lingkungan kerja. Terima kasih kepada Mas Ridwan, yang selalu membimbing saya dengan sab...

Day 108 : H-2 menuju akhir PKL

Waktu rasanya berjalan begitu cepat. Hari ini sudah masuk H-2 menuju akhir masa PKL saya di PT Excellent. Ada perasaan campur aduk antara lega karena akhirnya berhasil menyelesaikan semuanya, senang karena banyak pengalaman baru yang saya dapatkan, tapi juga sedikit. PKL di PT Excellent bukan cuma soal kerjaan atau belajar teknis, tapi juga perjalanan penuh cerita dan pelajaran. Setiap hari yang saya jalani di sini selalu memberi pengalaman baru, baik dari tugas yang menantang, bimbingan dari mentor, maupun suasana kerja yang hangat. Salah satu hal yang paling membekas adalah semangat belajar dari Pak Bos. Beliau pernah bercerita tentang bagaimana sibuknya beliau tapi tetap bisa belajar bahasa baru bahkan lebih dari satu bahasa. Itu benar-benar membuka mata saya, bahwa waktu senggang yang sering terbuang sebenarnya bisa dimanfaatkan untuk hal-hal yang lebih produktif. Mas Ridwan, yang selalu menemani kami saat briefing pagi, juga memberikan banyak pelajaran berharga. Setiap pagi kami b...

Day 82 : Membuat image dengan bahasa pemrograman golang

Hari ini, saya melanjutkan perjalanan belajar Docker dengan memanfaatkan Visual Studio Code (VSCode), editor favorit saya. Fokus utama saya adalah memahami cara membuat Docker image menggunakan alur kerja yang terintegrasi dengan VSCode. Proses ini tidak hanya efisien tetapi juga menyenangkan karena VSCode memiliki ekosistem yang kaya, termasuk berbagai ekstensi pendukung yang mempermudah pekerjaan. Mengapa Menggunakan VSCode untuk Docker? VSCode menyediakan lingkungan pengembangan yang lengkap dengan berbagai fitur, seperti: Docker Extension : Mempermudah pengelolaan image, container, dan jaringan Docker langsung dari editor. Terminal Terintegrasi : Menjalankan perintah Docker langsung dari VSCode tanpa perlu beralih aplikasi. Debugging Tools : Membantu melacak masalah aplikasi yang berjalan di dalam container, terutama bagi pengembang Golang. Dengan semua keunggulan ini, VSCode menjadi alat yang sangat mendukung dalam pengembangan berbasis Docker. Langkah-langkah Membuat Docker Image...