读书人

啊这个程序究竟表达的是什么意思

发布时间: 2012-03-25 20:55:17 作者: rapoo

请教各位啊,这个程序究竟表达的是什么意思?
[code=C/C++][/code]
#include "stdio.h"
#include "math.h"
float fun(float k) /*定义一元函数*/
{
return (k*(k*(k*(k*(k+1)+2)-2)+1)-3);
}
main()
{
float xmin=0, /*起始最小值*/
xmid=0, /*起始最大值*/
xmax=0,
fmin=0,
fmid=0,
fmax=0;
do{
printf("\n Input xmin & xmax:");
scanf("%f%f",&xmin,&xmax); /*得到初始范围*/
fmin=fun(xmin); /*调用一元函数*/
fmax=fun(xmax);
}while(fmin*fmax>0); /*满足条件则循环*/
for(;fabs(fmax-fmin)>=1e-5;) /*设定终止条件*/
{
xmid=(xmin+xmax)/2;
fmid=fun(xmid);
if(fmid*fmin<0) /*根据判断结果进行迭代*/
{
xmax=xmid;
fmax=fmid;
}
else
{
xmin=xmid;
fmin=fmid;
}
}
printf("\n x=%5.3f \n",xmid);
return;
}

[code=C/C++][/code]
好像是逐渐在往中间某个值在靠近,这个最后的xmid究竟代表什么呢

[解决办法]
soswaidao 友情帮顶~~~~友情帮顶~~~~
[解决办法]
貌似是用牛顿法解方程吧,pls google牛顿法解方程
[解决办法]
现在下班了,我晚上那个回去看哈

大概就是先确定两个数,然后把这两个数带入上面的那个函数,得到fmin,fmax

然后得到一个无限趋近于他们的中间数的一个实现;
其中fabs(fmax-fmin)求的是他的绝对值,e是一个无限趋近于的极限值,好像以前数学有讲到过...
[解决办法]
如果不是算法,那么写程序的人就有毛病,自己可以看懂,别人怎么维护
[解决办法]
就是求解方程(k*(k*(k*(k*(k+1)+2)-2)+1)-3)=0呀
xmid就是与精确解误差小于1e-5的数值解

[解决办法]
同意
楼上
[解决办法]
看的头有点大!

读书人网 >C++

热点推荐