class NewtonRaphsonHorner {
// Evaluate f(x) using Horner's rule
static double f(double[] coeffs, double x) { //ID=240242058 (MD Sakib)
double result = coeffs[0];
for (int i = 1; i < coeffs.length; i++) {
result = result * x + coeffs[i];
}
return result;
}
// Evaluate derivative f'(x) using Horner's rule
static double fPrime(double[] coeffs, double x) {
int n = coeffs.length - 1;
double result = coeffs[0] * n;
for (int i = 1; i < n; i++) {
result = result * x + coeffs[i] * (n - i);
}
return result;
}
public static void main
(String[] args
) { // Example polynomial: f(x) = 2x^3 + 3x - 1 => coefficients {2,0,3,-1}
double[] coeffs = {2, 0, 3, -1};
double x0 = 0.5; // initial guess
double E = 1e-8;
double error = 1, x1 = x0;
int i = 0;
System.
out.
printf("%-5s %-12s %-12s %-12s %-12s\n",
"Iter",
"x",
"f(x)",
"Error",
"%Error");
while (error >= E) {
double fx = f(coeffs, x0);
double fpx = fPrime(coeffs, x0);
x1 = x0 - fx / fpx;
error
= Math.
abs(x1
- x0
); double perError
= (x0
== 0) ? 0 : (error
/ Math.
abs(x1
)) * 100;
i++;
System.
out.
printf("%-5d %-12.8f %-12.8f %-12.8f %-12.8f\n", i, x1, fx, error, perError
);
x0 = x1;
}
System.
out.
println("\nApproximate root = " + x1
); System.
out.
println("Total iterations = " + i
); }
}
Y2xhc3MgTmV3dG9uUmFwaHNvbkhvcm5lciB7CgogICAgLy8gRXZhbHVhdGUgZih4KSB1c2luZyBIb3JuZXIncyBydWxlCiAgICBzdGF0aWMgZG91YmxlIGYoZG91YmxlW10gY29lZmZzLCBkb3VibGUgeCkgeyAgICAgICAvL0lEPTI0MDI0MjA1OCAoTUQgU2FraWIpCiAgICAKICAgICAgICBkb3VibGUgcmVzdWx0ID0gY29lZmZzWzBdOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY29lZmZzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIHggKyBjb2VmZnNbaV07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgLy8gRXZhbHVhdGUgZGVyaXZhdGl2ZSBmJyh4KSB1c2luZyBIb3JuZXIncyBydWxlCiAgICBzdGF0aWMgZG91YmxlIGZQcmltZShkb3VibGVbXSBjb2VmZnMsIGRvdWJsZSB4KSB7CiAgICAgICAgaW50IG4gPSBjb2VmZnMubGVuZ3RoIC0gMTsKICAgICAgICBkb3VibGUgcmVzdWx0ID0gY29lZmZzWzBdICogbjsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29lZmZzW2ldICogKG4gLSBpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgLy8gRXhhbXBsZSBwb2x5bm9taWFsOiBmKHgpID0gMnheMyArIDN4IC0gMSA9PiBjb2VmZmljaWVudHMgezIsMCwzLC0xfQogICAgICAgIGRvdWJsZVtdIGNvZWZmcyA9IHsyLCAwLCAzLCAtMX07CiAgICAgICAgZG91YmxlIHgwID0gMC41OyAgICAgIC8vIGluaXRpYWwgZ3Vlc3MKICAgICAgICBkb3VibGUgRSA9IDFlLTg7CiAgICAgICAgZG91YmxlIGVycm9yID0gMSwgeDEgPSB4MDsKICAgICAgICBpbnQgaSA9IDA7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIlLTVzICUtMTJzICUtMTJzICUtMTJzICUtMTJzXG4iLCAiSXRlciIsICJ4IiwgImYoeCkiLCAiRXJyb3IiLCAiJUVycm9yIik7CgogICAgICAgIHdoaWxlIChlcnJvciA+PSBFKSB7CiAgICAgICAgICAgIGRvdWJsZSBmeCA9IGYoY29lZmZzLCB4MCk7CiAgICAgICAgICAgIGRvdWJsZSBmcHggPSBmUHJpbWUoY29lZmZzLCB4MCk7CiAgICAgICAgICAgIHgxID0geDAgLSBmeCAvIGZweDsKICAgICAgICAgICAgZXJyb3IgPSBNYXRoLmFicyh4MSAtIHgwKTsKICAgICAgICAgICAgZG91YmxlIHBlckVycm9yID0gKHgwID09IDApID8gMCA6IChlcnJvciAvIE1hdGguYWJzKHgxKSkgKiAxMDA7CgogICAgICAgICAgICBpKys7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIlLTVkICUtMTIuOGYgJS0xMi44ZiAlLTEyLjhmICUtMTIuOGZcbiIsIGksIHgxLCBmeCwgZXJyb3IsIHBlckVycm9yKTsKCiAgICAgICAgICAgIHgwID0geDE7CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgKyB4MSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCBpdGVyYXRpb25zID0gIiArIGkpOwogICAgfQp9Cg==