algorithm – 查找向量旁边的参数以获得所需的向量

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

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

其中v1,v2,…,vn和vd给出了3-10维的向量?参数m1,…,mn应为正实数.

我需要一种可靠且快速编码的算法.问题规模会很小(不大于n = 100),因此速度不是一个非常重要的问题,特别是准确性会相当自由.

最佳答案 你所描述的是一个
system of linear equations.你可以把它写成下面的矩阵方程:

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和计算逆(A)* b来解决它,使用Cramer’s rule,或者最常见的是,使用Gaussian elmination如果n不等于k,可能会发生几件事,你可以通过谷歌搜索一下.

顺便说一下,你说m1 …… mn必须是正数(非零?).在这种情况下,您可能希望从linear programming处理您的问题,添加限制,如m1> 0,m2> 0等,并使用simplex algorithm来解决它.

无论你使用什么,真的不建议自己编程算法.每种语言都有大量的库可以解决这类问题.

点赞