估计向量标量以接近另一个向量
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]
我有三个分别按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]