查找矢量旁边的参数以获得所需的矢量



我能用什么最简单的算法来找到m1, m2, m3, ..., mn的这些值,满足以下方程(当然达到一定的精度阈值):

m1*v1 + m2*v2 + ... + mn*vn = vd

其中CCD_ 2和CCD_?参数m1, ..., mn应该是正实数。

我需要一个可靠且快速编码的算法。问题的大小会很小(不大于n=100),所以速度不是一个很重要的问题,尤其是精度会相当自由。

您所描述的是一个线性方程组。您可以将其写成以下矩阵方程:

A * x = b

其中,如果k是矢量的维数:

    / v1[1] v2[1] ... vn[1] 
    | v1[2] v2[2] ... vn[2] |
A = | ..................... |
    | ..................... |
     v1[k] v2[k] ... vn[k] /
     / m1 
     | m2 |
 x = | .. |
     | .. |
      mn /
    / vd[1] 
    | vd[2] |
b = | ..... |
    | ..... |
     vd[k] /

有几种方法可以解决这些问题。如果n等于k,并且问题有一个解(可能有,也可能没有),那么你可以通过反转系数矩阵A并计算inverse(A) * b来解决它,使用克雷默规则,或者最常见的是,使用高斯elmination。如果n不等于k,可能会发生一些事情,你可以在谷歌上了解一下。

顺便说一下,你说m1 ... mn必须是正数(非零?)。在这种情况下,您可能希望从线性规划中解决问题,添加m1 > 0m2 > 0等限制,并使用单纯形算法来解决它

无论你用什么,都不建议自己编程算法。每种语言都有大量的库来处理这类问题。

相关内容

  • 没有找到相关文章

最新更新