使用其他向量展开向量

3

我想解决这个方程:

       v0 = a1*v1 + a2*v2 + a3*v3 + a4*v4 + a5*v5  

v0, v1, v2, v3, v4, v5 是已知列矩阵(向量),a1, a2, a3, a4, a5 是需要计算的数字。我想知道在 numpy,sympyscipy 中是否有函数可以直接计算此方程,或者我如何解决此方程。

请给我一个链接或书面示例。


5
这是一个非常好的问题,只是表述不太恰当。针对这个问题,我要告诉你的是:你需要使用 numpy.linalg.solve - Joe Kington
1个回答

2
你的等式表示一个方程组,其中v0的每个元素都是由数组v1,v2,v3,v4,v5中对应元素的和表示的。
这是一个完全确定的情况,即未知数a1,a2,a3,s4,s5的数量等于方程的数量,也就是向量v1,v2,v3,v4,v5的长度。
from numpy import allclose,zeros_like
from numpy.random import rand    
from numpy.linalg import solve

# generate the 5 vectors as random arrays
mat = rand(5,5)
v1,v2,v3,v4,v5 = mat.T
v0 = rand(5)
x= solve(mat,v0)

#first check
assert allclose(dot(mat,x),v0)

#2nd check, which is the equation of the OP
res = zeros_like(v0)
for xj,vj in zip([v1,v2,v3,v4,v5],x):
    res+= xj*vj

assert allclose(res,v0)

非常感谢您,亲爱的gg349。 - Haj Nasser
1
@user3109979,如果这个答案能够满足您的需求,以及其他问题的答案,请考虑接受它。 - gg349

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接