gpt4 book ai didi

objective-c - 使用 LAPACK 求解 Ax=B,其中 x >= 0

转载 作者:行者123 更新时间:2023-12-01 17:59:02 25 4
gpt4 key购买 nike

我目前正在开发一个处理水中添加化学物质的 iOS 应用程序。为了找到尽可能少的加法,我正在求解 Ax=B,其中 A 是 6x6 矩阵,B 是一列。据我一直在阅读,加速框架中的 LAPACK 是处理此问题的最佳方法。我已经能够使用 DGESV_ 使它适用于小的加法,但较大的加法对 x 有一些负值。这是一个问题,因为您不能添加负量的化学物质。

所以我需要知道的是 LAPACK 中是否有一个函数可以让我找到 Ax=B 的最小解,其中 x 总是大于或等于 0?如果没有,是否有替代解决方案(除了自己做数学)?

谢谢

最佳答案

除非 A 秩亏,Ax = B 的解与一个正方形是独一无二的。所以没有办法摆脱答案中的负面成分。

如果您假设 A 和 B 可能包含导致负分量的错误,但希望找到包含所有非负分量的“附近”解决方案,那么您可以将其转换为:

minimize |Ax - b|  subject to x >= 0

这是一个二次程序。有一些库可以解决这些问题,但 LAPACK 不是其中之一。

编辑

你的矩阵是满秩的。 Wolfram Alpha非常适合玩这样的小问题。你的 6x6 的行列式是 5x10^11,所以它的条件很好。

我不是 QP 方面的专家,但是这个有特殊的结构。对于标准形式(见 Wikipedia for notation),重写为:
minimize ( x'(A'A)x + (-2b'A)x )  subject to x >= 0

这里的二次系数矩阵 Q = A'A是对称正定的,它(如果我正确地记忆我的矩阵代数)使系统凸并且更容易解决:保证了一个单一的全局解决方案。备注 c = -2b'A .

Here is a page of QP libraries ,一些在 C 中,一些针对凸情况进行了优化。也许其中之一会为您工作。

关于objective-c - 使用 LAPACK 求解 Ax=B,其中 x >= 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12887010/

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