我正在尝试解决方程,但我不知道如何做到这一点。我有一个向量x它实际上是一个矩阵类型,我想解决方程x.transpose()* v = 0其中v是另一个向量
有人可以帮助我吗?
我提前感谢你
答案 0 :(得分:2)
取任何向量并将其投影到x
的{{3}}。
Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> x = numpy.matrix([1, 3.14, 2.73]).T
>>> P = x * x.T / (x.T * x) # projector onto the space spanned by x
>>> Pperp = numpy.identity(3) - P # projector onto x's orthogonal complement
>>> Pperp * x
matrix([[ 0.00000000e+00],
[ 0.00000000e+00],
[ -2.22044605e-16]])
>>> y = numpy.matrix(numpy.ones((3,1)))
>>> yperp = Pperp * y
>>> yperp
matrix([[ 0.62484642],
[-0.17798225],
[-0.02416928]])
>>> x.T * yperp
matrix([[ -4.16333634e-16]])
正如所写,这是非常无拘无束的,并给出了一个相当随意的解决方案,但可以建立相同的想法来为所有解决方案找到一组基础向量。
答案 1 :(得分:1)
x.T*v
是在向量x
和v
之间编写dot product的另一种方式,所以听起来你想找到一个向量v
,它是orthogonal到x
。对于一般情况,存在无限多个解(在3维中,想象平面中的任何向量v
垂直于x)。
你在评论中说过,你知道有很多可能的解决方案,你怎么能得到一个,所以这里有一个给你:
v = 0