大连理工大学2022上半年最优化方法大作业

 收到校友的提问,这次的题目跟我当时不太一样,要求的精确线搜索,而且维数很高,之前的代码需要修改。为此专门写了这个博客,时间仓促,可能会有问题,有啥问题欢迎私信和评论,由于我要做其他事情,其他的请读者看懂了自己写,我只提供最速下降法的代码,其他的举一反三,并不难写。

具体理论,比如迭代方式等可以参看我其他博客

大连理工大学 2021年最优化方法大作业(1)_Jiang_Tesla的博客-CSDN博客_大连理工优化方法课后作业

大连理工大学 2021年最优化方法大作业(2)_Jiang_Tesla的博客-CSDN博客_大连理工大学最优化方法答案

这次的题比较抽象,我们首先应该知道下面两个式子

第二个式子考试也会用到,推导过程我就不写了,因为是精确线搜索,就需要指导兰姆达的具体数值,下面是推导过程

 推导完了咱们就可以上代码讲解了,这里我只对改动部分进行注释,这里带入我的学号了

n = 244;
x = zeros(n,1);
a = unidrnd(10,n,1);
G = a*a'+unidrnd(2)*eye(n);
b =0.5*G*ones(n,1);
eps = 0.0001;
start_zuisu(x,eps,G,b);

%改动的式子方程
function f = fun(x,G,b) 
f = 0.5*x'*G*x + b'*x
end
%改动的梯度
function g = grad(x,G,b) 
 g = G *x +b;
 end 

function start_zuisu(x0,eps,G,b) 
 gk = grad(x0,G,b);
 res = norm(gk);
 k = 0;
 while res > eps 
   fprintf('The %d-th iteration, the residual is %f\n',k,res); 
  fprintf('**********************************************\n');
  lamda = gk'*(G*x0+b)/(gk'*G*gk);%上面推导的兰姆达公式
    x0= x0 - lamda*gk;%最速迭代公式
    k = k+1;
    gk = grad(x0,G,b);
    res = norm(gk); 
 end 
 fprintf('The %d-th iteration, the residual is %f\n',k,res); 
  fprintf('%f\n',x0);
 fprintf('mi  n(f):%f\n',fun(x0,G,b));
 end

写的有点仓促,确实可能有不对的,欢迎指正。

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiang_Tesla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值