0.618方法matlab流程图,非线性规划 黄金分割法(0.618法) MATLAB程序

>> [p,ans]=nlp618('f1',-1,1,0.16)step =     6p =   -1.0000    1.0000   -0.2360    0.2360   -0.6526   -1.1246   -0.2360    1.0000    0.2360    0.5278   -1.1246   -0.9706   -0.2360    0.5278    0.0558    0.2360   -1.0496   -1.1246    0.0558    0.5278    0.2360    0.3475   -1.1246   -1.1060    0.0558    0.3475    0.1672    0.2360   -1.1113   -1.1246    0.1672    0.3475    0.2360    0.2787   -1.1246   -1.1234    0.1672    0.2787         0         0         0         0ans =    0.2229程序文件 nlp618.mfunction [p,ans]=nlp618(f_name,a,b,e)%//%输入f_name为函数名,[a,b]初始区间,e为最小区见要求%输出p为所有的计算情况,u为最优解,step为计算步骤%//a(1)=a;b(1)=b;L=e;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));k=1;m(1)=feval(f_name,t(1));n(1)=feval(f_name,u(1));while(b(k)-a(k)>L)    if(m(k)>n(k))    a(k+1)=t(k);    b(k+1)=b(k);    t(k+1)=u(k);    u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));    else    a(k+1)=a(k);    b(k+1)=u(k);    u(k+1)=t(k);    t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));    endm(k+1)=feval(f_name,t(k+1));n(k+1)=feval(f_name,u(k+1));ans=feval(f_name,t(k+1));k=k+1;endt(k)=0;u(k)=0;m(k)=0;n(k)=0;p=[a',b',t',u',m',n'];ans=(a(k)+b(k))/2;step=k-1%函数function y=f1(x)y=2*x^2-x-1;//运行实例:>> [p,ans]=nlp618('f1',-1,1,0.16)step =     6p =   -1.0000    1.0000   -0.2360    0.2360   -0.6526   -1.1246   -0.2360    1.0000    0.2360    0.5278   -1.1246   -0.9706   -0.2360    0.5278    0.0558    0.2360   -1.0496   -1.1246    0.0558    0.5278    0.2360    0.3475   -1.1246   -1.1060    0.0558    0.3475    0.1672    0.2360   -1.1113   -1.1246    0.1672    0.3475    0.2360    0.2787   -1.1246   -1.1234    0.1672    0.2787         0         0         0         0ans =    0.2229

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值