#include <stdio.h>
#include <math.h>
double f(double co[], int n, double x) {
double result = co[0];
for (int i = 1; i <= n; i++)
result = result * x + co[i];
return result;
}
double df(double co[], int n, double x) {
double result = co[0] * n;
for (int i = 1; i < n; i++)
result = result * x + co[i] * (n - i);
return result;
}
int main() {
int n, i, iteration = 1, maxIter = 20;
double co[20], x0, x1, fx, dfx, E, error;
printf("ENTER THE TOTAL NO. OF POWER::: ");
scanf("%d", &n);
for (i = 0; i <= n; i++) {
printf("x^%d :: ", i);
scanf("%lf", &co[i]);
}
printf("\nTHE POLYNOMIAL IS ::: ");
for (i = n; i >= 0; i--)
printf("%.2lfx^%d ", co[n - i], i);
printf("\n");
printf("\nEnter initial guess x0: ");
scanf("%lf", &x0);
printf("Enter tolerance (e.g. 0.0001): ");
scanf("%lf", &E);
printf("\n***********************************************");
printf("\nIteration\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %%Error");
printf("\n***********************************************\n");
while (iteration <= maxIter) {
fx = f(co, n, x0);
dfx = df(co, n, x0);
if (dfx == 0) {
printf("Division by zero!\n");
return 0;
}
x1 = x0 - fx / dfx;
error = fabs((x1 - x0) / x1);
printf("%5d\t%10.6lf\t%10.6lf\t%10.6lf\t%10.6lf\t%10.6lf\n",
iteration, x1, fx, dfx, error, error * 100);
if (error < E)
break;
x0 = x1;
iteration++;
}
printf("\n***********************************************");
printf("\nTHE ROOT OF EQUATION IS %.8lf", x1);
printf("\n***********************************************\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpkb3VibGUgZihkb3VibGUgY29bXSwgaW50IG4sIGRvdWJsZSB4KSB7CiAgICBkb3VibGUgcmVzdWx0ID0gY29bMF07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogeCArIGNvW2ldOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKZG91YmxlIGRmKGRvdWJsZSBjb1tdLCBpbnQgbiwgZG91YmxlIHgpIHsKICAgIGRvdWJsZSByZXN1bHQgPSBjb1swXSAqIG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV0gKiAobiAtIGkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwgaSwgaXRlcmF0aW9uID0gMSwgbWF4SXRlciA9IDIwOwogICAgZG91YmxlIGNvWzIwXSwgeDAsIHgxLCBmeCwgZGZ4LCBFLCBlcnJvcjsKCiAgICBwcmludGYoIkVOVEVSIFRIRSBUT1RBTCBOTy4gT0YgUE9XRVI6OjogIik7CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgZm9yIChpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICBwcmludGYoInheJWQgOjogIiwgaSk7CiAgICAgICAgc2NhbmYoIiVsZiIsICZjb1tpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcblRIRSBQT0xZTk9NSUFMIElTIDo6OiAiKTsKICAgIGZvciAoaSA9IG47IGkgPj0gMDsgaS0tKQogICAgICAgIHByaW50ZigiJS4ybGZ4XiVkICIsIGNvW24gLSBpXSwgaSk7CiAgICBwcmludGYoIlxuIik7CgogICAgcHJpbnRmKCJcbkVudGVyIGluaXRpYWwgZ3Vlc3MgeDA6ICIpOwogICAgc2NhbmYoIiVsZiIsICZ4MCk7CiAgICBwcmludGYoIkVudGVyIHRvbGVyYW5jZSAoZS5nLiAwLjAwMDEpOiAiKTsKICAgIHNjYW5mKCIlbGYiLCAmRSk7CgogICAgcHJpbnRmKCJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CiAgICBwcmludGYoIlxuSXRlcmF0aW9uXHQgeFx0XHQgZih4KVx0XHQgZicoeClcdFx0IEVycm9yXHRcdCAlJUVycm9yIik7CiAgICBwcmludGYoIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOwoKICAgIHdoaWxlIChpdGVyYXRpb24gPD0gbWF4SXRlcikgewogICAgICAgIGZ4ID0gZihjbywgbiwgeDApOwogICAgICAgIGRmeCA9IGRmKGNvLCBuLCB4MCk7CiAgICAgICAgaWYgKGRmeCA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiRGl2aXNpb24gYnkgemVybyFcbiIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgeDEgPSB4MCAtIGZ4IC8gZGZ4OwogICAgICAgIGVycm9yID0gZmFicygoeDEgLSB4MCkgLyB4MSk7CiAgICAgICAgcHJpbnRmKCIlNWRcdCUxMC42bGZcdCUxMC42bGZcdCUxMC42bGZcdCUxMC42bGZcdCUxMC42bGZcbiIsCiAgICAgICAgICAgICAgIGl0ZXJhdGlvbiwgeDEsIGZ4LCBkZngsIGVycm9yLCBlcnJvciAqIDEwMCk7CiAgICAgICAgaWYgKGVycm9yIDwgRSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgeDAgPSB4MTsKICAgICAgICBpdGVyYXRpb24rKzsKICAgIH0KCiAgICBwcmludGYoIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsKICAgIHByaW50ZigiXG5USEUgUk9PVCBPRiBFUVVBVElPTiBJUyAlLjhsZiIsIHgxKTsKICAgIHByaW50ZigiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CiAgICByZXR1cm4gMDsKfQo=