📄 untitled3.m
字号:
syms x1;
syms x2;
syms fllop a0;
y=x1^2+4*x2^2;%目标函数
e=0.002;
b1=[2,2];%x0初始状态
y0=subs(y,'x1',b1(1));
y0=subs(y0,'x2',b1(2)); %在初始状态下的函数值
k=jacobian(y,[x1,x2]) %梯度
i=0;
while (i==0)|(double(fanshu)-e>0)
i=i+1
b0=b1;
kk0=subs(k,'x1',b0(1));
kk0=subs(kk0,'x2',b0(2)); %变量替换 表达式赋值,求梯度值大小
s1=b0-a0*kk0; %a0为搜索步长
s1=s1.^2; %梯度的每个值都平方
m=[1,4]; %目标函数的系数
k1=m.*s1; %将矩阵的两项相加得下面方程
z=k1(1)+k1(2); %一维搜索函数方程
z1=diff(z); %一维搜索函数方程求导
rot=solve(z1); %求求导方程后的解,即a0的大小
b1=b0-rot*kk0 %x1状态
y1=subs(y,'x1',b1(1));
y1=subs(y1,'x2',b1(2)) %求x1状态下的函数值
kk1=subs(k,'x1',b1(1));
kk1=subs(kk1,'x2',b1(2));
fanshu=sqrt(kk1(1)^2+kk1(2)^2); %x1状态下梯度的范数大小
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -