基于matlab的坐标轮换法程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)

% 输入分割比gama

gama=0.618;

% 确定搜索区间[a,b]

[a,b]=search2(x01,x02,d,h0);

%计算a1,a2和函数值y1,y2, 确定最优步长alpha

a1=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;

end

end

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;

end

clear;

% 给定初始值

h0=0.1;

x0=[0,0];

e=[1,0;0,1];

n=2;

for k=1:20

k % k 代表第轮计算

% 111111111111111111 第1 到n 次搜索计算111111111111111111 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,d,h0); % 确定最优步长alpha

alpha

x(n+1,:)=x(n,:)+alpha*d;

e(j,:)=[];

e(n,:)=d;

x0=x(n+1,:);

else

相关文档
最新文档