2个回答
展开全部
#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();
}
#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();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询