C语言编程,指针,编写函数,用牛顿迭代法求方程f(x)=2x3-4x2+3x-6=0在1.5附近的根。请给出运算结果

牛顿迭代公式为:xn+1=xn-f(xn)/f'(xn)其中,f'(xn)是f在xn处的导数。结束条件:|f(xn+1)|<eps与|xn+1-xn|<eps同时成立(e... 牛顿迭代公式为:xn+1=xn-f(xn)/f'(xn)
其中,f'(xn) 是f在xn处的导数。
结束条件:|f(xn+1)|< eps与|xn+1-xn|< eps同时成立(eps是一个很小的正数,从键盘入)
同时编写主函数,在主函数中调用并输出函数值。
函数原型如下:
double root(double (*f)(double),double (*f1)(double),double x,double eps);
其中,形参f接收原函数f(x),形参f1接收导函数f'(x)

如输入:
1e-8
如输出结果为:
2.000000
展开
 我来答
金色潜鸟
2018-05-19 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5629万
展开全部
#include <stdio.h>
#include <math.h>
double root(double (*f)(double),double (*f1)(double), double x,double eps);
double fx(double x){
return 2*x*x*x-4*x*x+3*x-6;
}
double fp(double x){
return 6*x*x-8*x+3;
}
int main()
{
double x=1.5,y,eps=1e-08;
printf("input eps 1e-08\n"); scanf("%lf",&eps);
y = root(fx,fp,x,eps);
printf("%lf\n",y);

return 0;
}
double root(double (*f)(double x),double (*f1)(double x), double x,double eps){
double x0,x1;
x0=x;
while(1){
x1= x0 - (*f)(x0)/ (*f1)(x0);
if (fabs(x1-x0)<eps) break;
x0=x1;
};
return x1;
}

运行与输出:
input eps 1e-08
1e-08
2.000000
jjjjttthhh
2018-05-18 · TA获得超过3.9万个赞
知道大有可为答主
回答量:3.6万
采纳率:86%
帮助的人:3680万
展开全部
2x³-4x²+3x-6=0
(2x³-4x²)+(3x-6)=0
2x²(x-2)+3(x-2)=0
(x-2)(2x²+3)=0
x1=2
2x²+3=0
2x²=-3
x²=-3/2
x=±√6i/2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式