matlab用最速下降法(梯度法)计算Rosenbrock函数,求程序代码

matlab用最速下降法(梯度法)计算Rosenbrock函数,求程序代码,第1张

Rosenbrock函数

实现代码:

clc,clear all

format long g

x0=[00]

fun=@func

gfun=@gfunc

[x,val,k]=grad(fun,gfun,x0)   %最速下降法(梯度法)

目标函数

function f=func(x)

f=100*(x(1)^2-x(2))^2+(1-x(1))^2

end

梯度函数

function g=gfunc(x)

g=[400*x(1)*(x(1)^2-x(2))-x(2)+2*(x(1)-1)-200*(x(1)^2-x(2))]

end

运行结果

如有问题,可以私信于我。

用遗传算法ga()求Rosenbrock函数的结果,与用上述方法的结果相接近。

怎么全都是注释

-------------------------------------------------------------

不太了解这个算法,还有一些单词不认识(interction是不是iteration?),翻译的不好,凑合着看吧。

F为目标函数,是字符串类型

G是搜索方向,表达式是G=(-1/norm)(grad

F)*grad

F,其中norm可能是法线方向,grad是梯度

grad

F

是F的梯度。G也是字符串类型。

P0是初始点

maxl是最大迭代次数

delta

是搜索方向(单一参数最小化的)偏差

epsilon

是y0方向的允许误差

如果show等于1,图形显示迭代过程。

输出值P0是最低点

y0是p0函数值函数F

err是y0的误差边界

p是向量(包含迭代?)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11065661.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存