进退法求解极值c语言程序,确定极值点所在区间的进退法子程序.doc

确定极值点所在区间的进退法子程序

附录:主要程序

附录Ⅰ 确定极值点所在区间的进退法子程序

int JT double x[3],double h /*返回计算目标函数值的次数 */

/*x[0]为初始点,返回左端点,x[1]返回中间点,x[2]返回右端点,h为初始探测步长*/

double y[3],dum; /*y为与x相应的目标函数值,dum为中间变量*/

y[0] func x[0] ; /*初始点函数值*/

x[1] x[0]+h;

y[1] func x[1] ;

if y[0] y[1] /*如果上坡,则反向,调头*/ h -h; dum x[0];x[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] y[2] /*第3点比第2点高,则得到“高-低-高”特征的区间,返回*/ if x[0] x[2] /*如果是退的,则调整*/ dum x[0];x[0] x[2];x[2] dum; return K ; /*返回计算目标函数值的次数*/ else /*否则,弃去第一点,重新找*/ x[0] x[1];x[1] x[2]; y[0] y[1];y[1] y[2]; /*end for ;; */

/*结束确定极值点所在区间的进退法子程序*/

int main /*主程序*/

int i,j,k 0;

double x[3];

x[0] -1; /*初始点*/

h0 0.1; /*初始步长*/

h h0;

k JT x,h ; /*一维进退法,返回调用目标函数的次数*/

printf "\n极值点所在区间:[%12.5e %12.5e]\n",x[0],x[2] ; double func x /*目标函数*/

double x;

double y;

y x*x;

K K+1; /*调用目标函数次数,定义为全局变量,并初始化为0*/

return y ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值