让我们简单一点:我有一个不确定的线性方程组
Ax = b
我希望获得一个有效的解决方案,无论系统的哪个无限解决方案。我希望尽可能高效地获得它。
我检查了一般的LAPACK例程,看起来他们无法处理欠定的情况。例如,如果来自PLU因子分解的因子U是单数的,那么dgesv()
(其文档找到here)将返回INFO
中大于1的整数,并且它将如果是这样的话,解决系统。
我还检查了线性最小二乘问题(LLS)(documentation here)的一些例程,它确实解决了我的问题,但没有达到我想要的效率。如果我提供的LLS问题不明确,LLS例程将返回最小化
的向量||斧-B ||
哪个是有效的解决方案。但是,它被计算为优化问题的解决方案,我想知道是否有更有效的方法来获得有效的解决方案以解决我的欠定问题。
类似的问题是here,但我相信我的问题比那更具体:我正在使用LAPACK,我想尽可能有效地解决一个不确定的线性方程组。< / p>
答案 0 :(得分:2)
对于未确定的方程组:
正确的方法是使用奇异值分解( SVD )。 Lapack 以 dgesvd 的形式提供奇异值分解。
要执行 SVD ,您必须将问题归一化,将其转换为格式为// In your webview inject this code
<script>
window.postMessage("Sending data from WebView");
</script>
的矩阵问题。通过引入另一个自由度(另一个变量)很容易做到这一点。这将转换向量My = 0
和矩阵x -> y
。在矩阵A -> M
上执行 SVD 时,最小的奇异向量将是您未确定的最小二乘问题的解决方案。
我建议使用 matlab 或 octave 进行实验,然后再浪费时间编码。