在Python中求解方程

-3 投票
2 回答
872 浏览
提问于 2025-04-16 23:50

我正在尝试解一个方程,但不知道该怎么做。我有一个向量x,实际上它是一个矩阵类型,我想解这个方程:x.transpose()*v=0,其中v是另一个向量。

有人能帮我吗?

我提前谢谢你们。

2 个回答

1

x.T*v 是表示向量 xv 之间的点积的另一种写法。所以听起来你想找一个与 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]])

这样写的话,结果会比较随意,得到的解也不太确定,但我们可以用同样的思路,找出一组基础向量,来表示所有可能的解。

撰写回答