求牛顿迭代法详解(最好能举例说明)
提示: 作者被禁止或删除 内容自动屏蔽
/* 用牛顿切线法求方程的近似值 */ #include <cstdio> #include <cmath> #include <conio.h> double func(double x); // 原函数 double func1(double x); // 一阶导数 double func2(double x); // 二阶导数 void main(void) { double x1 = 1.0; // 区间左端点 double x2 = 5.0; // 区间右端点 double x = x1; // 方程的解 const double error = 0.0001; // 结果误差范围 if (func(x1) * func(x2) < 0) { while (fabs(func(x)) > error) { if (func(x1) * func2(x1) > 0) { x1 -= func(x1) / func1(x1); x = x1; } else if (func(x2) * func2(x2) > 0) { x2 -= func(x2) / func1(x2); x = x2; } } printf_s("x = %.4f\n", x); } else { printf_s("no result!\n"); } _getch(); } double func(double x) { return 2 * x * x * x - 4 * x * x + 3 * x - 6; } double func1(double x) { return 6 * x * x - 8 * x + 3; } double func2(double x) { return 12 * x - 8; }