首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解有界的线性最小二乘方程组

解有界的线性最小二乘方程组
EN

Stack Overflow用户
提问于 2020-05-21 15:10:49
回答 2查看 111关注 0票数 0

我对Eigen是个新手,我想用Eigen来解有界的线性最小二乘系统。Eigen网站上的例子很简单,但我不确定如何设置解决方案的界限。

示例代码如下:

代码语言:javascript
运行
复制
#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

int main()
{
   MatrixXf A = MatrixXf::Random(3, 2);
   cout << "Here is the matrix A:\n" << A << endl;
   VectorXf b = VectorXf::Random(3);
   cout << "Here is the right hand side b:\n" << b << endl;
   cout << "The least-squares solution is:\n"
        << A.bdcSvd(ComputeThinU | ComputeThinV).solve(b) << endl;
}

它是在求解Ax=b,我在寻找x有界处的解。例如,我正在寻找Ax=b的最佳解决方案,使0

EN

回答 2

Stack Overflow用户

发布于 2020-05-22 06:43:42

本质上,您正在寻找二次规划问题的解决方案:||Ax - b||^2_2 -> min,服从0 <= x <= 1(注意,不等式并不严格)。AFAIK,Eigen没有提供这种开箱即用的功能,但有很多其他库可以做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2020-06-21 16:14:25

你就快到了。有了这样的界限,你只需要缩放无界最小二乘解x,如果它的范数大于界限:

代码语言:javascript
运行
复制
double bound = 1;
if(x.norm() > bound)
    x = x*bound/x.norm();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61929161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档