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函数的结猜仿果,与基埋用上述方法的结果相接近。

最速下降法,就是求梯度. 例如:求f=(x-y)/(x^2+y^2+2)在(-3,-2)处的塌斗和梯度. clcclear x=-3y=-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)%把符号变量转为数销码值


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

原文地址: http://outofmemory.cn/yw/12290479.html

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

发表评论

登录后才能评论

评论列表(0条)

保存