最速下降法步长选取,malab 最速下降法

matlab 最速下降法

最速下降法步长选取,malab 最速下降法

文章插图
最速下降法 , 就是求梯度 。
例如:求f=(x-y)/(x^2+y^2+2)在(-3,-2)处的梯度 。
clc;clear
x=-3;y=-2
f='(x-y)/(x^2+y^2+2)'
fx=diff(f,'x')%对x求偏导数
fy=diff(f,'y')%对y求偏导数
g=[fx fy]%梯度
g=subs(g)%把符号变量转为数值
求一个二元多项式,matlab最速下降法的程序实现程序,一维搜索用黄金分割法.
最速下降法步长选取,malab 最速下降法

文章插图
我来回答吧 , 其实我也是刚做这个 , 只不过并不是很厉害 , 我做了一个进退算法的程序如下:
%本程序是进退算法的程序 。我们可以通过它确定一个合适的初始区间 , 
%之后再利用黄金分割法等其他一维搜索方法确定最优点 。
function [a,b]=jtsf(alpha0) %alpha0是初始点
step=1;%初始步长
a1=alpha0;
a2=a1+step;
f1=f(a1);
f2=f(a2);
if f1>f2
while 1 %始终循环 , 通过break可以结束循环
step=2*step;
a1=a2;
a2=a2+step;
f1=f2;f2=f(a2);
if f1 break;
end
end
else
step=-step/4;
while 1 %始终循环 , 通过break可以结束循环
a2=a1;
a1=a1+step;
f2=f1;
f1=f(a1);
if f1>f2
break;
【最速下降法步长选取,malab 最速下降法】end
end
end
a=a1;
b=a2;
function f=f(x)
f=4*x^2-4*x+7;%函数
===================================
但是我并没有接着做 , 我还得在学习 , 你也可以根据这些在学习吧
还不错 , 希望你采纳 。