Metode NewtonRaphson (atau hanya Newton) merupakan teknik iteratif yang digunakan untuk mencari akar persamaan tak linier berupa f(x)=0. Metode ini termasuk dalam kategori metode titik tetap dan memanfaatkan turunan pertama fungsi untuk mempercepat konvergensi.
Jika pada titik x nilai fungsi f(x) tidak nol, maka melalui titik itu dapat digambarkan garis singgung dengan gradien f'(x). Titik potong garis singgung tersebut dengan sumbux menjadi perkiraan akar berikutnya, yaitu x. Secara matematis:
x = x - f(x) / f'(x) Proses ini diulang sampai selisih antara dua iterasi berurutan berada di bawah toleransi yang diinginkan (|x - x| < ) atau nilai fungsi di titik tersebut cukup kecil (|f(x)| < ).
x (tepat atau mendekati akar).f(x) dan f'(x).f'(x) = 0, metode gagal; pilih nilai awal lain.x = x - f(x)/f'(x).|x - x| < atau |f(x)| < , berhenti; nilai x adalah akar.x x dan kembali ke langkah 2.f'(x) mendekati nol, langkah selanjutnya menjadi sangat besar (instabil).Misalkan ingin menemukan akar persamaan f(x) = x - x - 2 = 0.
f(x) = x - x - 2f'(x) = 3x - 1x = 1.5.Iterasi 1: x = 1.5 f(x) = 1.5 - 1.5 - 2 = -0.125 f'(x) = 31.5 - 1 = 5.75 x = 1.5 - (-0.125)/5.75 1.5217Iterasi 2: f(x) 0.0021 f'(x) 5.95 x = 1.5217 - 0.0021/5.95 1.5214 Setelah beberapa iterasi, nilai x 1.52138 memenuhi |f(x)| < 10, sehingga merupakan akar yang diinginkan.
function newtonRaphson(f, df, x0, tol = 1e-7, maxIter = 100) { let x = x0; for (let i = 0; i < maxIter; i++) { const fx = f(x); const dfx = df(x); if (Math.abs(dfx) < 1e-12) throw new Error('Turunan mendekati nol'); const xNext = x - fx / dfx; if (Math.abs(xNext - x) < tol) return xNext; x = xNext; } throw new Error('Tidak konvergen dalam iterasi maksimum');}// Contoh penggunaan:const f = x => Math.pow(x, 3) - x - 2;const df = x => 3 * x * x - 1;console.log(newtonRaphson(f, df, 1.5)); // 1.52138 Metode NewtonRaphson adalah alat kuat untuk menyelesaikan persamaan nonlinier bila turunan pertama dapat dihitung dan nilai awal dipilih dengan tepat. Dengan konvergensi kuadratik, metode ini biasanya lebih cepat daripada teknik iteratif linier seperti bisection. Namun, pengguna harus memperhatikan kondisi turunan dan penempatan nilai awal agar hasil yang diperoleh valid dan stabil.
