#include <stdio.h>
#include <math.h>
#define EPSILON 0.0001
#define MAX_ITERATIONS 50
// Function to calculate the equation: log(x) - cos(x)
double equation(double x) {
return log(x) - cos(x);
}
// Derivative of the equation: 1/x + sin(x)
double derivative(double x) {
return 1.0 / x + sin(x);
}
// Newton-Raphson method
double newtonRaphson(double x0, int* iterations) {
double x1, f0, f1;
printf("%-10s%-12s%-12s%-12s%-12s\n", "Iteration", "x0", "f(x0)", "f'(x0)",
"x1");
for (*iterations = 1; *iterations <= MAX_ITERATIONS; ++(*iterations)) {
f0 = equation(x0);
if (fabs(f0) < EPSILON)
break;
f1 = derivative(x0);
x1 = x0 - f0 / f1;
printf("%-10d%-12.4lf%-12.4lf%-12.4lf%-12.4lf\n",
*iterations, x0, f0, f1, x1);
x0 = x1;
}
return x1;
}
int main() {
double x0 = 2.0; // Initial guess for Newton-Raphson method
double root_newton;
int iterations;
// Newton-Raphson method
root_newton = newtonRaphson(x0, &iterations);
printf("\nRoot (Newton-Raphson Method): %.4lf\n", root_newton);
printf("Number of iterations: %d\n", iterations);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNkZWZpbmUgRVBTSUxPTiAwLjAwMDEKI2RlZmluZSBNQVhfSVRFUkFUSU9OUyA1MAovLyBGdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIGVxdWF0aW9uOiBsb2coeCkgLSBjb3MoeCkKZG91YmxlIGVxdWF0aW9uKGRvdWJsZSB4KSB7CnJldHVybiBsb2coeCkgLSBjb3MoeCk7Cn0KLy8gRGVyaXZhdGl2ZSBvZiB0aGUgZXF1YXRpb246IDEveCArIHNpbih4KQpkb3VibGUgZGVyaXZhdGl2ZShkb3VibGUgeCkgewpyZXR1cm4gMS4wIC8geCArIHNpbih4KTsKfQovLyBOZXd0b24tUmFwaHNvbiBtZXRob2QKZG91YmxlIG5ld3RvblJhcGhzb24oZG91YmxlIHgwLCBpbnQqIGl0ZXJhdGlvbnMpIHsKZG91YmxlIHgxLCBmMCwgZjE7CnByaW50ZigiJS0xMHMlLTEycyUtMTJzJS0xMnMlLTEyc1xuIiwgIkl0ZXJhdGlvbiIsICJ4MCIsICJmKHgwKSIsICJmJyh4MCkiLAoieDEiKTsKZm9yICgqaXRlcmF0aW9ucyA9IDE7ICppdGVyYXRpb25zIDw9IE1BWF9JVEVSQVRJT05TOyArKygqaXRlcmF0aW9ucykpIHsKZjAgPSBlcXVhdGlvbih4MCk7CmlmIChmYWJzKGYwKSA8IEVQU0lMT04pCmJyZWFrOwpmMSA9IGRlcml2YXRpdmUoeDApOwp4MSA9IHgwIC0gZjAgLyBmMTsKcHJpbnRmKCIlLTEwZCUtMTIuNGxmJS0xMi40bGYlLTEyLjRsZiUtMTIuNGxmXG4iLAoqaXRlcmF0aW9ucywgeDAsIGYwLCBmMSwgeDEpOwp4MCA9IHgxOwp9CnJldHVybiB4MTsKfQppbnQgbWFpbigpIHsKZG91YmxlIHgwID0gMi4wOyAvLyBJbml0aWFsIGd1ZXNzIGZvciBOZXd0b24tUmFwaHNvbiBtZXRob2QKZG91YmxlIHJvb3RfbmV3dG9uOwppbnQgaXRlcmF0aW9uczsKLy8gTmV3dG9uLVJhcGhzb24gbWV0aG9kCnJvb3RfbmV3dG9uID0gbmV3dG9uUmFwaHNvbih4MCwgJml0ZXJhdGlvbnMpOwpwcmludGYoIlxuUm9vdCAoTmV3dG9uLVJhcGhzb24gTWV0aG9kKTogJS40bGZcbiIsIHJvb3RfbmV3dG9uKTsKcHJpbnRmKCJOdW1iZXIgb2YgaXRlcmF0aW9uczogJWRcbiIsIGl0ZXJhdGlvbnMpOwpyZXR1cm4gMDsKfQ==