📄 main.m
字号:
% 利用最速下降法实现下面问题的的求解
% min f(x)=2*x1^2+x2^2
% 初始点 x(1)=(1,1) ,e=0.3
%main
clc
clear
sym x;
x1=[1 1];
e=0.3;
t1= sym('t1');
t2= sym('t2');
x=sym('x');
d1=diff(2*t1^2,1);
d2=diff(t2^2,1);
D1=-subs(d1,t1,x1(1));
D2=-subs(d2,t2,x1(2));
D=(D1^2+D2^2)^0.5;
while(D>e)
df=2*t1^2+t2^2;
df=subs(df,{t1,t2},{sym('x1(1)-x*D1'),sym('x1(2)-x*D2')});
DF=diff(df);
DF=subs(DF,'x1(1)',x1(1)) ;
DF=subs(DF,'x1(2)',x1(2));
DF=subs(DF,'D1',D1);
DF=subs(DF,'D2',D2);
X=-1:0.0001:1;
for i=1:20001
if abs(subs(DF,x,X(i)))<0.01
a=abs(X(i))
break;
end
end
x1(1)=x1(1)+a*D1;
x1(2)=x1(2)+a*D2;
t1= sym('t1');
t2= sym('t2');
x=sym('x');
d1=diff(2*t1^2,1);
d2=diff(t2^2,1);
D1=-subs(d1,t1,x1(1));
D2=-subs(d2,t2,x1(2));
D=(D1^2+D2^2)^0.5
end
fprintf('最速下降法的最优解是:')
x1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -