matlab 最优化编程,Matlab最优化编程例子

题目:分别用最速下降法、FR 共轭梯度法、DFP 法和BFGS 法求解问题:

22112212minf(x)x 2x x 4x x 3x =-++-

取初始点(1)T x (1,1)=,通过Matlab 编程实现求解过程。

公用函数如下:

1、function f= fun( X )

%所求问题目标函数

f=X(1)^2-2*X(1)*X(2)+4*X(2)^2+X(1)-3*X(2); end

2、function g= gfun( X )

%所求问题目标函数梯度

g=[2*X(1)-2*X(2)+1,-2*X(1)+8*X(2)-3]; end

3、function He = Hess( X )

%所求问题目标函数Hesse 矩阵

n=length(X);

He=zeros(n,n);

He=[2,-2;

-2,4];

End

解法一:最速下降法

function [ x,val,k ] = grad( fun,gfun,x0 )

%功能:用最速下降法求无约束问题最小值

%输入:x0是初始点,fun 和gfun 分别是目标函数和梯度

%输出:x 、val 分别是最优点和最优值,k 是迭代次数

maxk=5000;%最大迭代次数

rho=0.5;sigma=0.4;

k=0;eps=10e-6;

while (kg=feval(gfun,x0);%计算梯度

d=-g;%计算搜索方向

if (norm(d)break ;

end

m=0;mk=0;

while (m<20)

if (feval(fun,x0+rho^m*d)end

m=m+1;

end

x0=x0+rho^mk*d;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值