重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果是用程序近似计算的话,可以这样做
创新互联公司长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为烟台企业提供专业的成都网站设计、网站建设,烟台网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
#includestdio.h
#includemath.h
main()
{ long int n,k;
double s1,s2,e=1e-8; //e代表计算精度
n=1;k=1; //k=n×n
s1=(3.0*k+n)/(2*k+3);
do{
s2=s1;
k=k+2*n+1; //(n+1) ^2=n^2+2n+1
n=n+1;
s1=(3.0*k+n)/(2*k+3);
}while(fabs(s1-s2)e) ;
printf("%lf",s1);
}
自定义函数实现
int max(int a,int b)
{
return ab?a:b;
}
楼主的算法在数学上是没有问题的,但在计算机上就不一样了.
x和x+h完全可能相等,
当x+h==x+0并且y(x-h)==y(x+h),然后就是死循环了.
建议楼主把程序中的float都换为double再试一试.
或者把y(x-h)y(x+h)换成y(x-h)=y(x+h).
再者,我搞不明白bool
bRet存在的意义是什么,望楼主释疑.
y=ax^2+bx+c
以上面为例:a=1 b=4 c=0
极值=(4ac-b^2)/4a
double a=1, b=4, c=0;
double jizhi;
jizhi=(4*a*c-b*b)/(4*a);