【发布时间】:2015-01-22 17:48:48
【问题描述】:
让我们把问题分成两部分,第二部分是可选的。
第 1 部分
我有 3 个带有 N 个变量的线性方程,其中 N 通常大于 3。
- x1*a+x2*b+x3*c+x4*d[....]xN*p = B1
- y1*a+y2*b+y3*c+y4*d[....]yN*p = B2
- z1*a+z2*b+z3*c+z4*d[....]zN*p = B3
寻找(a,b,c,d,[...],p),其他都是不变的。
标准的高斯方法不起作用,因为矩阵会比高更宽。当然我可以用它来消除 2 个变量。你知道找出解决方案的算法吗? (我只需要一个。)解系数中的 0 越多越好,但不是必需的。
第 2 部分
解中的系数必须是非负的。
要求: 该算法必须足够快才能实时运行。 (在平均 pc 上每秒 1800 次)。所以试错法是行不通的。 该算法将在 C# 中实现,但如果您想编写代码,请随意使用伪语言。
【问题讨论】:
-
这听起来像是家庭作业。你试过什么,你卡在哪里了?第 1 部分的答案只是基本的线性代数;找一本基本的教科书,它会解释矩阵比高宽的情况。
-
然后请用一些链接或关键字为我指明正确的方向。这不是家庭作业,我可以向你保证。
-
math.stackexchange.com 是第一个问题的理想论坛。
-
我想使用约束编程来找到系数。 R 中将范围限制为 0-1 适合我。我找到了一个 C# 求解器(Mono 所以微软求解器基础不起作用),它可能有效,但恐怕对我来说不够快。有人知道 C# 的一个好的约束求解器吗?
-
解决此问题的另一种方法是 SVD。当我测试它时,我会写信给解决方案。
标签: algorithm math gaussian solver linear-equation