1.用牛顿迭代法求该方程在1.5附近的根:2X^3-4X^2+3X-6=0
#include
#include
double func(double x) //函数
{return 2*x*x*x-4*x*x+3*x-6.0;}
double func1(double x) //导函数
{return 6*x*x-8*x+3;}
double root(double num)
{
double x0,x1;
x0=num;
if(func1(x0)==0.0) //若通过初值,函数返回值为0
{printf("迭代过程中导数为0!\n");return x0;}
x1=x0-func(x0)/func1(x0);
while((fabs(x1-x0))>1e-6)
{
x0=x1;
x1=x0-func(x0)/func1(x0);
}
printf("该方程在1.5附近的根为:%lf。\n",x1);
return x1;
}
main()
{
root(1.5);
}
2.用二分法求该方程的根:2X^3-4X^2+3X-6=0
#include
#include
main()
{
double func(double x);
double root(double a,double b);
root(-10,10);
}
double func(double x) //函数
{
return 2*x*x*x-4*x*x+3*x-6.0;}
double root(double a,double b)
{
double x;
x=(a+b)/2;
if(func(x)==0.0) //若通过初值,函数返回值x
{printf("该方程在-10到10区间内的根为:%lf,\n",x);return x;}
else
while(fabs(func(x))>1e-6)
{
if(func(x)*func(a)>0) a=x;
else b=x;
x=(a+b)/2;
}
printf("该方程在-10到10区间内的根为:%lf。\n",x);
return x;
}