是否存在用于确定最小可解线性方程组的算法

时间:2017-01-22 08:39:23

标签: algorithm math

我有一组带有W变量的N(N是非常大的)线性方程。

为了提高效率,我需要找到可解决的最小数量的线性方程(有一个独特的解决方案)。可以假设当X == Y时,包含Y变量的一组X方程具有唯一解。

例如,如果我输入以下内容:

2a = b - c
a = 0.5b
b = 2 + a

我想返回方程组:

a = 0.5b
b = 2 + a

目前,我有一个使用一些启发式的实现。我创建一个矩阵,列是变量,行是方程。我搜索矩阵以找到一组完全连接的方程,然后逐个尝试去除方程式以查看剩余的方程组是否仍然是可解的,如果它是连续的,如果不是,则返回方程组。 / p>

这是否有一个已知的算法,我是否尝试重新发明轮子? 有没有人有关于如何更好地接近这个的意见?

感谢。

1 个答案:

答案 0 :(得分:1)

简短回答是“是”,有已知的算法。例如,您可以添加单个等式,然后计算矩阵的等级。然后添加下一个等式并计算等级。如果它还没有上升,那么新的等式没有任何帮助,你可以摆脱它。一旦排名==变量的数量,您就拥有了一个独特的解决方案,并且您已经完成了。有些图书馆(例如ColtJAMAla4j等)会为您执行此操作。

更长的答案是,这是非常难以正确完成的,特别是如果你的矩阵变大了。你最终会遇到很多数值稳定性问题,等等。我不是数值线性代数专家,但我知道如果你不小心的话,这里有龙。话虽如此,如果你的矩阵很小并且“条件良好”(行/列几乎不平行)那么你应该保持良好状态。这取决于你的申请。