用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根

最好有这类题的... 最好有这类题的 展开
 我来答
承翮滑飞舟
2019-06-20 · TA获得超过3684个赞
知道大有可为答主
回答量:3174
采纳率:27%
帮助的人:173万
展开全部
牛顿迭代法的步骤大概是这样的:首先给定一个初始值x0,用它来进行迭代。迭代的方法就是在点(x0,f(x0))处做曲线的切线,与横轴得到一个交点(x1,0),x1就是第一次迭代的结果,也就是方程解的一个近似。要想更靠近实际解就要继续迭代,再在点(x1,f(x1))上做切线,与横轴又会得到一个交点,然后重复这个步骤,直到达到满意的精度为止。你说的这个式子就是对式求导得到的
wenpengquan
推荐于2016-12-02 · TA获得超过292个赞
知道答主
回答量:59
采纳率:0%
帮助的人:40.7万
展开全部
#include<stdio.h>

#include<math.h>

#include<conio.h>

#define N 100

#define PS 1e-5//定义精度

#define TA 1e-5//定义精度

float Newton(float (*f)(float),float(*f1)(float),float x0 )

{ float x1,d=0;

int k=0;

do

{ x1= x0-f(x0)/f1(x0);

d=(fabs(x1)<1?x1-x0:(x1-x0)/x1);

x0=x1;

printf("x(%d)=%f\n",k,x0);

}

while((fabs(d))>PS&&fabs(f(x1))>TA) ;

return x1;

}

float f(float x)

{ return 2*x*x*x-4*x*x+3*x-6; }

float f1(float x)

{ return 6*x*x+8*x+3; }//对方程求导

void main()

{ float f(float);

float f1(float);

float x0,y0;

printf("Input x0: ");//输入x0为1.5即求1.5附近的根

scanf("%f",&x0);

printf("x(0)=%f\n",x0);

y0=Newton(f,f1,x0);

printf("\nThe root is x=%f\n",y0);

getch();

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式