首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >艾根:如果我只能计算Aty和Ax,是否有可能创建最小二乘对角预调理素类调理器?

艾根:如果我只能计算Aty和Ax,是否有可能创建最小二乘对角预调理素类调理器?
EN

Stack Overflow用户
提问于 2018-11-08 08:24:09
回答 1查看 266关注 0票数 1

我想要解最小二乘,像系统A^t * A * x = -A^t * x。(我正在为特殊问题实现高斯-牛顿方法)。

我编写了一些特殊的例程,允许我计算A * xA^t * y产品。有了这样的例程,就很容易使用无矩阵的求解器,这要归功于本征。

但是我的方法并不像Eigen::LeastSquaresConjugateGradient那样收敛。我做了一个小测试,它看起来像LeastSquareDiagonalPreconditioner速度收敛很多。

我的问题是-如果我只能计算矩阵乘积,我如何使用LeastSquareDiagonalPreconditioner或实现自己的预调理器?我对预处理/共轭梯度的理解不是很好。

编辑

为了清晰起见,我想在我的产品例程中使用不含矩阵的特征求解器。

编辑2

利用对某些目标函数的正、反模自差得到矩阵向量积.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-08 14:51:19

最简单的方法可能是实现您自己的预处理器类,继承DiagonalPreconditioner,实现类似于LeastSquareDiagonalPreconditioner ::factorize()的东西,但适应您的类型。基本上,您需要计算:

代码语言:javascript
复制
 m_invdiag(j) = 1./mat.col(j).squaredNorm();

对于所有使用策略的列j,您已经为产品操作符实现了该策略。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53203840

复制
相关文章

相似问题

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