牛顿迭代法改造!!!!
来源:互联网 发布:合金装备经典台词知乎 编辑:程序博客网 时间:2024/06/11 15:50
参考:
百度百科 牛顿迭代法
迭代次数可以用控制精度代替,迭代次数无依据
// TestNewdun.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "math.h"
#include "stdlib.h"
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++) //可以 while(1)
{
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");
}/**/
system("pause");
return 0;
}
- 牛顿迭代法改造!!!!
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- 牛顿迭代法
- Jquery第5章节:基础DOM和CSS操作
- 1031. Hello World for U (20)
- 3672: [Noi2014]购票 树剖+线段树+斜率优化
- TensorFlow
- 全排列
- 牛顿迭代法改造!!!!
- spark dataFrame 新增一列函数withColumn
- ECNU 3263 丽娃河的狼人传说(华东师范大学邀请赛) (贪心)
- 高可用集群Keepalived + nginx
- 39.删除链表中重复的结点
- C++ 带符号和无符号char类型赋值超出表示范围的情况
- android 源码查看方式
- 【湘大oj】1173-(立方和)
- POJ 1632 Vase collection 笔记