menggunakan sedikit aljabar & geometri
Bagaimana cara menghitung √10 itu?
Coba lihat gambar berikut:
Pada gambar di atas, luas kotak (yang paling besar) adalah 10, dan luas kotak hitam adalah 9. sedangkan panjang pinggiran kotak hitam adalah √9 = 3, dan panjang pinggiran kotak (yang paling besar) adalah √10.
Sekarang, kita perlu menghitung x (karena √10 - √9 = x).
Kita sudah tahu bahwa kotak (yang paling besar) tertumpuk (overlap) dengan kotak hitam, maka total luas kotak merah dan biru adalah 10 - 9 = 1
luas 1 kotak merah = x ⋅ 3. namun karena kotak merah ada 2, maka luas total kotak merah = x ⋅ 3 ⋅ 2.
total luas kotak merah dan biru = x ⋅ 3 ⋅ 2 + x² = 1
1 - x² = x ⋅ 3 ⋅ 2
x = (1 - x²) ÷ (3 ⋅ 2)
Nah, persamaan ini tidak bisa diselesaikan karena nilai x bergantung dengan angka x itu sendiri.
Maka untuk menghitungnya, kita bisa menggunakan iterasi (iteration).
Kita bisa mensubstitusi sebuah persamaan dengan persamaan itu sendiri.
Coba lihat:
x = (1 - x²) ÷ (3 ⋅ 2)
= (1 - ((1 - x²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2)
= (1 - ((1 - ((1 - x²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2)
= (1 - ((1 - ((1 - ((1 - x²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2)
memprogram iterasi perhitungan √10
Ketika kita menggunakan metode iterasi (untuk menghitung sebuah angka), kita tidak bisa menghitung angka dengan persis, tapi kita bisa menghitung aproksimasi angka. semakin banyak iterasi yang dilakukan, semakin akurat kita dengan angka sebenarnya.
Pada iterasi ke-0, kita bisa mengatur x = 0:
Iterasi ke-0:
x₀ ≈ 0
Pada iterasi ke-1, baru kita memasukkan persamaan:
Iterasi ke-1:
x₁ ≈ (1 - x₀²) ÷ (3 ⋅ 2) ≈ (1 - 0²) ÷ (3 ⋅ 2) ≈ 1 ÷ (3 ⋅ 2)
Iterasi ke-2:
x₂ ≈ (1 - x₁²) ÷ (3 ⋅ 2) ≈ (1 - ((1 - 0²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2)
Iterasi ke-3:
x₃ ≈ (1 - x₂²) ÷ (3 ⋅ 2) ≈ (1 - ((1 - ((1 - 0²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2))²) ÷ (3 ⋅ 2)
Perhatikan angka 'kecil'-nya (₀, ₁, ₂, dsb) di variabel x.
Nah sekarang kita bisa membuat program-nya.
sqrt_10.py