求牛顿迭代法详解(最好能举例说明)
提示: 作者被禁止或删除 内容自动屏蔽
程序代码:
/* 用牛顿切线法求方程的近似值 */
#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;
}
