gpt4 book ai didi

c++ - Armadillo 中 chol 函数的错误处理

转载 作者:行者123 更新时间:2023-11-30 03:55:08 29 4
gpt4 key购买 nike

当使用 Armadillo 从多变量正态采样时在长时间的模拟中,我得到了 error: chol() failed to converge。所以我决定稍微扰乱 sigma 以避免我的模拟经常被以下代码停止:

try {
R = chol(sigma);
} catch ( ... ) {
sigma += eye(sigma.n_rows,sigma.n_rows) * 1e-6;
R = chol(sigma);
}

但是,这段代码似乎正在减慢速度,我想避免返回错误消息。

我该如何解决这个问题?

最佳答案

Armadillo 有两种形式的 chol() .第一个返回一个矩阵,而第二个将输出存储在指定为参数的矩阵中。要避免使用 try {} catch (...),请使用第二种形式:

bool success = false;

while(success == false)
{
success = chol(R, sigma);

if(success == false)
{
sigma += eye(sigma.n_rows,sigma.n_rows) * 1e-6;
}
}

上述是否收敛(以及收敛速度)高度依赖于sigma的起点。

关于c++ - Armadillo 中 chol 函数的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29202191/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com