在Python中求解方程
我正在尝试解一个方程,但不知道该怎么做。我有一个向量x,实际上它是一个矩阵类型,我想解这个方程:x.transpose()*v=0,其中v是另一个向量。
有人能帮我吗?
我提前谢谢你们。
2 个回答
1
x.T*v
是表示向量 x
和 v
之间的点积的另一种写法。所以听起来你想找一个与 x
垂直的向量 v
。在一般情况下,可能有无数个解(在三维空间中,可以想象任何一个在与 x
垂直的平面上的向量 v
)。
你在评论中提到你知道有很多可能的解,但你想知道怎么得到 一个,所以这里给你一个:
v = 0
2
随便拿一个向量,把它投影到 与代码中的x正交的空间里。
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]])
这样写的话,结果会比较随意,得到的解也不太确定,但我们可以用同样的思路,找出一组基础向量,来表示所有可能的解。