c语言 迭代法求近似根

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:49:16
用牛顿的迭代法求方程 2x^3-4x^2+3x-6=0在1.5附近的根。

/*
* File: Newton.c
* Author: Eastsun
* http://eastsun.javaeye.com
*/

#include <stdio.h>
#define MIN_VALUE 0.0000001
#define abs(x) (x>=0?x:-x)

//一个参数为double返回值为double的函数类型
typedef double (*func) (double);

//需要求解的函数

double f(double x) {
return 2 * x * x * x - 4 * x * x + 3 * x - 6;
}
//需要求解的函数的导数

double df(double x) {
return 6 * x * x - 8 * x + 3;
}
//使用牛顿法解方程,init为初始值

double solve(func f, func df, double init) {
double v = f(init);
while (abs(v) >= MIN_VALUE) {
init = init - v / df(init);
v = f(init);
}
return init;
}

int main() {
double r = solve(f, df, 1.5);
printf("Result: %lf", r);
return 0;
}