估计向量标量以接近另一个向量

Estimating vector scalars to approach another vector

我有三个分别按a、b 和c 缩放的向量。如何估计 a、b 和 c,使向量之和最接近第四个向量?

如果你逐行阅读你的例子,你有三个等式。

a*4 + b*11 + c*9 = 2
a*6 + b*5 + c*7 = 8
a*3 + b*5 + c*9 = 5

然后你可以很容易地解决每个变量

a = (2 - b*11 - c*9) / 4
b = (8 - a*6 - c*7) / 5
b = (8 - ((2 - b*11 - c*9) / 4)*6 - c*7) / 5
b*5 + b*16.5 = 8 - 3  - c*13.5 - c*7
b = (8 - 3  - c*13.5 - c*7) / 21.5
a = (2 - ((8 - 3  - c*13.5 - c*7) / 21.5)*11 - c*9) / 4

现在你可以用最后一个方程求解 c 了。当你让 c 在 a&b 的最后两个方程中使用它的值来求解它们时。

使用 Numpy。 solve() 函数正是您要找的。

import numpy as np

from numpy.linalg import solve

A = np.array([[4,11,9],[6,5,7],[3,5,9]])
B = np.array([3,8,5])
X = solve(A,B)

print(A)
print(B)
print(X)

输出应该是:

[[ 4 11  9]
 [ 6  5  7]
 [ 3  5  9]]
[3 8 5]
[ 1.28723404 -0.54787234  0.43085106]