欢迎来到天天文库
浏览记录
ID:2050952
大小:58.00 KB
页数:2页
时间:2017-11-14
《确定极值点所在区间的进退法子程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、附录:主要程序附录Ⅰ确定极值点所在区间的进退法子程序intJT(doublex[3],doubleh)/*返回计算目标函数值的次数*//*x[0]为初始点,返回左端点,x[1]返回中间点,x[2]返回右端点,h为初始探测步长*/{doubley[3],dum;/*y为与x相应的目标函数值,dum为中间变量*/y[0]=func(x[0]);/*初始点函数值*/x[1]=x[0]+h;y[1]=func(x[1]);if(y[0]2、[0]=x[1];x[1]=dum;dum=y[0];y[0]=y[1];y[1]=dum;}for(;;)/*计算循环*/{h=2*h;/*步长加速*/x[2]=x[1]+h;y[2]=func(x[2]);/*第三点及其目标函数值*/if(y[1]x[2])/*如果是退的,则调整*/{dum=x[0];x[0]=x[2];x[2]=dum;}return(K);/*返回计算目标函数值的次数*/}else{/3、*否则,弃去第一点,重新找*/x[0]=x[1];x[1]=x[2];y[0]=y[1];y[1]=y[2];}}/*endfor(;;)*/}/*结束确定极值点所在区间的进退法子程序*/intmain()/*主程序*/{inti,j,k=0;doublex[3];x[0]=-1;/*初始点*/h0=0.1;/*初始步长*/h=h0;k=JT(x,h);/*一维进退法,返回调用目标函数的次数*/printf("极值点所在区间:[%12.5e%12.5e]",x[0],x[2]);}double4、func(x)/*目标函数*/doublex;{doubley;y=x*x;K=K+1;/*调用目标函数次数,定义为全局变量,并初始化为0*/return(y);}
2、[0]=x[1];x[1]=dum;dum=y[0];y[0]=y[1];y[1]=dum;}for(;;)/*计算循环*/{h=2*h;/*步长加速*/x[2]=x[1]+h;y[2]=func(x[2]);/*第三点及其目标函数值*/if(y[1]x[2])/*如果是退的,则调整*/{dum=x[0];x[0]=x[2];x[2]=dum;}return(K);/*返回计算目标函数值的次数*/}else{/
3、*否则,弃去第一点,重新找*/x[0]=x[1];x[1]=x[2];y[0]=y[1];y[1]=y[2];}}/*endfor(;;)*/}/*结束确定极值点所在区间的进退法子程序*/intmain()/*主程序*/{inti,j,k=0;doublex[3];x[0]=-1;/*初始点*/h0=0.1;/*初始步长*/h=h0;k=JT(x,h);/*一维进退法,返回调用目标函数的次数*/printf("极值点所在区间:[%12.5e%12.5e]",x[0],x[2]);}double
4、func(x)/*目标函数*/doublex;{doubley;y=x*x;K=K+1;/*调用目标函数次数,定义为全局变量,并初始化为0*/return(y);}
此文档下载收益归作者所有