牛顿迭代法 C
2015-03-16 09:33
232 查看
double func(double x) //函数
{
return x*x*x*x-3*x*x*x+1.5*x*x-4.0;
}
double func1(double x) //导函数
{
return 4*x*x*x-9*x*x+3*x;
}
int Newton(double *x,double precision,int maxcyc) //迭代次数
{
double x1,x0;
int k;
x0=*x;
for(k=0;k<maxcyc;k++)
{
if(func1(x0)==0.0)//若通过初值,函数返回值为0
{
printf("迭代过程中导数为0!\n");
return 0;
}
x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算
if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //达到结束条件
{
*x=x1; //返回结果
return 1;
}
else //未达到结束条件
x0=x1; //准备下一次迭代
}
printf("迭代次数超过预期!\n"); //迭代次数达到,仍没有达到精度
return 0;
}
int main()
{
double x,precision;
int maxcyc;
printf("输入初始迭代值x0:");
scanf("%lf",&x);
printf("输入最大迭代次数:");
scanf("%d",&maxcyc);
printf("迭代要求的精度:");
scanf("%lf",&precision);
if(Newton(&x,precision,maxcyc)==1) //若函数返回值为1
printf("该值附近的根为:%lf\n",x);
else //若函数返回值为0
printf("迭代失败!\n");
getch();
return 0;
}
{
return x*x*x*x-3*x*x*x+1.5*x*x-4.0;
}
double func1(double x) //导函数
{
return 4*x*x*x-9*x*x+3*x;
}
int Newton(double *x,double precision,int maxcyc) //迭代次数
{
double x1,x0;
int k;
x0=*x;
for(k=0;k<maxcyc;k++)
{
if(func1(x0)==0.0)//若通过初值,函数返回值为0
{
printf("迭代过程中导数为0!\n");
return 0;
}
x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算
if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //达到结束条件
{
*x=x1; //返回结果
return 1;
}
else //未达到结束条件
x0=x1; //准备下一次迭代
}
printf("迭代次数超过预期!\n"); //迭代次数达到,仍没有达到精度
return 0;
}
int main()
{
double x,precision;
int maxcyc;
printf("输入初始迭代值x0:");
scanf("%lf",&x);
printf("输入最大迭代次数:");
scanf("%d",&maxcyc);
printf("迭代要求的精度:");
scanf("%lf",&precision);
if(Newton(&x,precision,maxcyc)==1) //若函数返回值为1
printf("该值附近的根为:%lf\n",x);
else //若函数返回值为0
printf("迭代失败!\n");
getch();
return 0;
}
相关文章推荐
- 牛顿迭代法求方程根
- C语言程序设计 牛顿迭代法
- 牛顿迭代法 求解方程
- 很牛的牛顿迭代法
- 牛顿迭代法求求一个数的算术平方根
- 计算方法之牛顿迭代法求方程根
- 牛顿迭代法
- 牛顿迭代法开N次方根
- 利用牛顿迭代法求解非线性方程组
- 牛顿迭代法
- 华为OJ1964-求解立方根(牛顿迭代法)
- C语言(2)--牛顿迭代法、舍罕王的赏赐、解两个不等式、枚举类型变量输出三原色全排列
- 利用牛顿迭代法求平方根
- HDU 2199(牛顿迭代法)/(二分)(高次方程求解)
- 辗转相除法、埃拉托色尼筛选法、牛顿迭代法证明与C++实现
- 利用牛顿迭代法求平方根
- 牛顿迭代法(Newton's Method)
- C语言之基本算法25—牛顿迭代法求方程近似根
- “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】