坐标轮换的matlab程序,matlab的坐标轮换法程序.docx

matlab的坐标轮换法程序

function y=ff(x1,x2)%y=10*(x1+x2-5)^2+(x1-x2)^2; y=x1^2+x2^2-x1*x2-10*x1-4*x2+60;function alpha=goldmethod2(x01,x02,d,h0)% 输入分割比gamagama=0.618; % 确定搜索的区间[a,b][a,b]=search2(x01,x02,d,h0); %计算a1,a2和函数值y1,y2, 确定最优步长 alphaa1=b-gama*(b-a);y1=ff(x01+d(1)*a1,x02+d(2)*a1);a2=a+gama*(b-a);y2=ff(x01+d(1)*a2,x02+d(2)*a2);for n=1:100 if y1>=y2 x1(n)=a1;x2(n)=a2;yp1(n)=y1;yp2(n)=y2; a=a1;a1=a2;y1=y2; a2=a+gama*(b-a);y2=ff(x01+d(1)*a2,x02+d(2)*a2); else x1(n)=a1;x2(n)=a2;yp1(n)=y1;yp2(n)=y2; b=a2;a2=a1;y2=y1; a1=b-gama*(b-a);y1=ff(x01+d(1)*a1,x02+d(2)*a1); end aa(n)=(a+b)/2; %输出极值点 y(n)=ff(x01+d(1)*aa(n),x02+d(2)*aa(n)); %输出极值点函数值 e(n)=abs(b-a); alpha=(a+b)/2; if abs(b-a)<1e-5 break; endend clear;h0=0.1;x0=[0,0];e=[1,0;0,1];xp=[0,0];for k=1:20 k for i=1:2 i x01=x0(1);x02=x0(2);d=e(i,:); alpha=goldmethod2(x01,x02,d,h0); % 确定最优步长 alpha alpha x1=x0+alpha*d; x0=x1; xp end xn=x1; if abs(xn-xp)<1e-1 break; end xp=xn;endclear;% 给定初始值h0=0.1;x0=[0,0];e=[1,0;0,1];n=2;for k=1:20 k % k 代表第轮计算 % 1111111111 第 1 到 n 次搜索计算111111111111 for i=1:1 % 第1次搜索 i x01=x0(1);x02=x0(2);d=e(i,:); F0=ff(x0(1),x0(2)); alpha=goldmethod2(x01,x02,d,h0); % 确定最优步长 alpha alpha x(i,:)=x0+alpha*d; F(i)=ff(x(i,1),x(i,2)); Delta(i)=F(i)-F0; end for i=2:n % 第2到n次搜索 i x01=x(i-1,1);x02=x(i-1,2);d=e(i,:); alpha=goldmethod2(x01,x02,d,h0); % 确定最优步长 alpha alpha x(i,:)=x(i-1,:)+alpha*d; F(i)=ff(x(i,1),x(i,2)); Delta(i)=F(i-1)-F(i); end % 1111111111111111111111111111111111111111111111111111111111 % 22222222222222222 精度是否满足要求 22222222222222222222222 if abs(x(n,:)-x0)<1e-3 break; end % 2222222222222222222222222222222222222222222222222222222222 % 3333333333333333333 第n次结束参数计算 33333333333333333333 d=x(n,:)-x0; x(n+1,:)=2*x(n,:)-x0; [Delta_m,j]=max(Delta); F2=F(n);F3=ff(x(n+1,1),x(n+1,2)); % 3333333333333333333333333333333333333333333333333333333333 % 44444444444444444 搜索方向是否进行替换 44444444444444444444 if F3=Delta_m/2*(0-F3)^2 x01=x(n,1);x02=x(n,2); alpha=goldmethod2(x01,x02,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值