📄 powellshuxue.m
字号:
%此程序为仿真书中的例子
%最后结果的精度要看过程中的步长
%从多次仿真结果可以看出,所得的结果很稳定
%在len=2时,得到的结果与书中完全相同
%目标函数是y=(x1+x2).^2+(x1-1).^2
clear;
clc;
D=[1 0;
0 1];
d1=D(1,:);
d2=D(2,:);
x0=[2,1];
% y=(x0(1)+x0(2)).^2+(x0(1)-1).^2;
len=10;
for j=1:10
m=0;
n=0;
l=0;
for i=-len:0.01:len
x1=x0+i*d1;
m=m+1;
x(m,:)=x1;
y1(m)=(x1(1)+x1(2)).^2+(x1(1)-1).^2;
end
[MIN,index]=min(y1);
x1=x(index,:);
for i=-len:0.01:len
x2=x1+i*d2;
n=n+1;
x(n,:)=x2;
y2(n)=(x2(1)+x2(2)).^2+(x2(1)-1).^2;
end
[MIN,index]=min(y2);
x2=x(index,:);
d3=x2-x0;
for i=-len:0.01:len
x3=x1+i*d3;
l=l+1;
x(l,:)=x3;
y3(l)=(x3(1)+x3(2)).^2+(x3(1)-1).^2;
end
[MIN,index]=min(y3);
x3=x(index,:);
x0=x3;
d1=d2;
d2=d3;
end
x0 %显示仿真求得的最佳结果
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -