利用函数完成用牛顿迭代法求 在(-10,10)之间的根 (急!!!1)

来源:百度知道 编辑:UC知道 时间:2024/07/01 04:32:55
我是大一的学生老师布置的作业,一点头绪也没有啊,请高手帮忙啦,给出代码,谢谢啦
函数是2*X*X*X-4.5X*X+3*X-6=0,老师好像有说什么用切线什么的呀,可是我没听清楚,帮帮忙啦,谢谢

求什么函数的根?

简单地写了一个通用的, 你根据需要完善吧.

#include <stdio.h>
#include <math.h>

const int kMaxIterations = 50; // 限制最大迭代次数

double MyFunction(double x) // 要求解的函数
{
return x*x - 5.0;
}

double dMyFunction(double x) // 要求解的函数的导数
{
return 2.0*x;
}

// 牛顿迭代法求根
// 没有限定根的范围(你自己加, 还要想一下当前近似根超出范围怎么办)
// 没有处理可能的零作除数的情况
// 需要给出函数的导函数. 若要改进这点(即不要求给出导函数), 可以借导数的定义近似求导数.
double FindRoot(double x0, double (*func)(double),
double (*dfunc)(double), double prec)
{
double x = x0;
double x_old = func(x);
int i = 0;
while (fabs(x_old-x) > prec) {
x_old = x;
x = x - func(x) / dfunc(x);
i++;
if (i > kMaxIterations) {
printf("Fail to convergence\n");
break;
}
}
return x;
}

int main()
{
double x0 = 2.0; // 指定初值
double precision = 0