CVX第一次安装指南

故事起因是我需要安装CVX,因此来记录一下安装过程中遇到的一些困难和总结。

非必要的学术licence的申请

首先是学术licence的申请,但没想到这一步就遇到了很大的问题,申请网站如下https://cvxr.com/cvx/academic/

在这里插入图片描述

没错,bug在于Invalid host ID,这让我非常恼火,我搜索了论坛相关讨论,得出结论这个所谓的 licenses 早就 obsolete了,但是目前很多安装指南的第一步还是让人去申请许可证,误人子弟。


在这里插入图片描述

CVX入门:“Hello, World” 程序的学习

好,我们现在已经成功下载了CVX工具包,现在我们来看第一个程序吧。

我们展示传统的Matlab代码和CVX规范如何混合以形成和解决多个优化问题。下面的代码解决了最小化 ∥ A x − b ∥ 2 + γ ∥ x ∥ 1 \|Ax-b\|_2 +\gamma \|x\|_1 Axb2+γx1 的问题,对于对数间隔的(正)值的向量 γ \gamma γ 。这为我们提供了 ∥ A x − b ∥ 2 \|Ax-b\|_2 Axb2 ∥ x ∥ 1 \|x\|_1 x1 之间的最佳权衡曲线上的点。下图给出了这条曲线的一个例子。

cvx_quiet(true);
gamma = logspace( -2, 2, 20 );
l2norm = zeros(size(gamma));
l1norm = zeros(size(gamma));
fprintf( 1, '   gamma       norm(x,1)    norm(A*x-b)\n' );
fprintf( 1, '---------------------------------------\n' );
for k = 1:length(gamma),
    fprintf( 1, '%8.4e', gamma(k) );
    cvx_begin
        variable x(n);
        minimize( norm(A*x-b)+gamma(k)*norm(x,1) );
    cvx_end
    l1norm(k) = norm(x,1);
    l2norm(k) = norm(A*x-b);
    fprintf( 1, '   %8.4e   %8.4e\n', l1norm(k), l2norm(k) );
end
plot( l1norm, l2norm );
xlabel( 'norm(x,1)' );
ylabel( 'norm(A*x-b)' );
grid on

注意这个 A A A b b b 的值我没有明确生成,自己可以定义一个合适的矩阵和向量即可。

在这里插入图片描述

丰富的入门学习资料可以参考CVX的 documentation,网址为https://web.cvxr.com/cvx/doc/quickstart.html#least-squares

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

No_one-_-2022

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

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

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

打赏作者

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

抵扣说明:

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

余额充值