import java.util.Scanner;
class SecantHorner {
//id=240242058 "(sakib)"
static double f(double[] coeffs, double x) {
double result = coeffs[0];
for (int i = 1; i < coeffs.length; i++) {
result = result * x + coeffs[i];
}
return result;
}
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in);
double[] coeffs = {1, 0, 0, -4}; // f(x) = x^3 - 4
System.
out.
print("Enter first initial guess x1: "); double x1 = sc.nextDouble();
System.
out.
print("Enter second initial guess x2: "); double x2 = sc.nextDouble();
System.
out.
print("Enter tolerance: "); double tol = sc.nextDouble();
double f1 = f(coeffs, x1);
double f2 = f(coeffs, x2);
double x3 = 0, prev = x2, error;
int i = 0;
System.
out.
printf("%-5s %-12s %-12s %-12s %-12s\n",
"Iter",
"x3",
"f(x3)",
"Error",
"%Error");
while (true) {
x3 = (f2*x1 - f1*x2) / (f2 - f1);
double f3 = f(coeffs, x3);
i++;
error
= Math.
abs(x3
- prev
); double perError
= (x3
!= 0) ? (error
/ Math.
abs(x3
)) * 100 : 0;
System.
out.
printf("%-5d %-12.8f %-12.8f %-12.8f %-12.8f\n", i, x3, f3, error, perError
);
if (Math.
abs(f3
) < tol
) break;
x1 = x2; f1 = f2;
x2 = x3; f2 = f3;
prev = x3;
}
System.
out.
println("\nApproximate root = " + x3
); System.
out.
println("Total iterations = " + i
); }
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKY2xhc3MgU2VjYW50SG9ybmVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWQ9MjQwMjQyMDU4ICIoc2FraWIpIgogICAgc3RhdGljIGRvdWJsZSBmKGRvdWJsZVtdIGNvZWZmcywgZG91YmxlIHgpIHsKICAgICAgICBkb3VibGUgcmVzdWx0ID0gY29lZmZzWzBdOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY29lZmZzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIHggKyBjb2VmZnNbaV07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoKICAgICAgICBkb3VibGVbXSBjb2VmZnMgPSB7MSwgMCwgMCwgLTR9OyAvLyBmKHgpID0geF4zIC0gNAoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciBmaXJzdCBpbml0aWFsIGd1ZXNzIHgxOiAiKTsKICAgICAgICBkb3VibGUgeDEgPSBzYy5uZXh0RG91YmxlKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgc2Vjb25kIGluaXRpYWwgZ3Vlc3MgeDI6ICIpOwogICAgICAgIGRvdWJsZSB4MiA9IHNjLm5leHREb3VibGUoKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciB0b2xlcmFuY2U6ICIpOwogICAgICAgIGRvdWJsZSB0b2wgPSBzYy5uZXh0RG91YmxlKCk7CgogICAgICAgIGRvdWJsZSBmMSA9IGYoY29lZmZzLCB4MSk7CiAgICAgICAgZG91YmxlIGYyID0gZihjb2VmZnMsIHgyKTsKICAgICAgICBkb3VibGUgeDMgPSAwLCBwcmV2ID0geDIsIGVycm9yOwogICAgICAgIGludCBpID0gMDsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIiUtNXMgJS0xMnMgJS0xMnMgJS0xMnMgJS0xMnNcbiIsICJJdGVyIiwgIngzIiwgImYoeDMpIiwgIkVycm9yIiwgIiVFcnJvciIpOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICB4MyA9IChmMip4MSAtIGYxKngyKSAvIChmMiAtIGYxKTsKICAgICAgICAgICAgZG91YmxlIGYzID0gZihjb2VmZnMsIHgzKTsKICAgICAgICAgICAgaSsrOwoKICAgICAgICAgICAgZXJyb3IgPSBNYXRoLmFicyh4MyAtIHByZXYpOwogICAgICAgICAgICBkb3VibGUgcGVyRXJyb3IgPSAoeDMgIT0gMCkgPyAoZXJyb3IgLyBNYXRoLmFicyh4MykpICogMTAwIDogMDsKCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIlLTVkICUtMTIuOGYgJS0xMi44ZiAlLTEyLjhmICUtMTIuOGZcbiIsIGksIHgzLCBmMywgZXJyb3IsIHBlckVycm9yKTsKCiAgICAgICAgICAgIGlmIChNYXRoLmFicyhmMykgPCB0b2wpIGJyZWFrOwoKICAgICAgICAgICAgeDEgPSB4MjsgZjEgPSBmMjsKICAgICAgICAgICAgeDIgPSB4MzsgZjIgPSBmMzsKICAgICAgICAgICAgcHJldiA9IHgzOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJcbkFwcHJveGltYXRlIHJvb3QgPSAiICsgeDMpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgaXRlcmF0aW9ucyA9ICIgKyBpKTsKICAgIH0KfQo=