Julia 逆矩阵误差

Julia 逆矩阵误差,julia,Julia,我想用向量乘以它的轨迹来求矩阵或数的逆,但它给了我一个错误 v=[1,2,3] inv(v'*v) `inv` has no method matching inv(::Array{Int64,1}) while loading In[45], in expression starting on line 2 我想在最后得到一个数字或一个方阵。 我不想使用pinv函数,因为我需要做进一步的操作,我需要一个数字或一个方阵。 如何解决这个问题?提前感谢v是3元素向量,v'*

我想用向量乘以它的轨迹来求矩阵或数的逆,但它给了我一个错误

v=[1,2,3]           
inv(v'*v)

`inv` has no method matching inv(::Array{Int64,1})
while loading In[45], in expression starting on line 2
我想在最后得到一个数字或一个方阵。 我不想使用pinv函数,因为我需要做进一步的操作,我需要一个数字或一个方阵。 如何解决这个问题?提前感谢

v是3元素向量,v'*v是1元素向量:

julia> v = [1,2,3]
3-element Array{Int64,1}:
 1
 2
 3

julia> v'*v
1-element Array{Int64,1}:
 14
不能反转向量。如果要计算v自身的标量点积,可以使用点函数,然后使用inv将其反转:

v是三元向量,v'*v是一元向量:

julia> v = [1,2,3]
3-element Array{Int64,1}:
 1
 2
 3

julia> v'*v
1-element Array{Int64,1}:
 14
不能反转向量。如果要计算v自身的标量点积,可以使用点函数,然后使用inv将其反转:


这个问题问了很久之后才出现,但也许它对某些人有用。要详细说明一下:

[1,2,3]是数组{Int64,1}或向量{Int64}类型的向量或一维 [1 2 3]是数组{Int64,2}类型的1x3矩阵 [1 2 3]'本质上是数组{Int64,2}类型的3x1矩阵。这是不完全正确的,它实际上是一个懒惰的未经评估的版本,但它将按其应有的方式运行 因此,您希望实现的目标可以如下所示:

v = [1 2 3]
display(v' * v)
inv(v' * v)
由于正确的原因,此操作现在失败:-,即3x3矩阵不可逆


顺便说一句,您可以使用hcatv将向量{T}类型和长度n的向量v转换为数组{T,2}类型的n×1-数组。

这是在提出问题很久之后出现的,但可能对某些人有用。要详细说明一下:

[1,2,3]是数组{Int64,1}或向量{Int64}类型的向量或一维 [1 2 3]是数组{Int64,2}类型的1x3矩阵 [1 2 3]'本质上是数组{Int64,2}类型的3x1矩阵。这是不完全正确的,它实际上是一个懒惰的未经评估的版本,但它将按其应有的方式运行 因此,您希望实现的目标可以如下所示:

v = [1 2 3]
display(v' * v)
inv(v' * v)
由于正确的原因,此操作现在失败:-,即3x3矩阵不可逆


顺便说一句,你可以用hcatv将向量{T}类型和长度n的向量v转换成数组{T,2}类型的n×1-数组。

如果我改为[1,2,3]*[1,2 3],那么列*行i应该有矩阵……我怎么能面对这个问题呢?将列向量与行向量相乘得到的矩阵是秩1,因此是奇异的,没有逆矩阵。在这种情况下,你想精确地反转什么?我想找到invG'*G,其中,一般来说,G是一个mxp向量。在大多数情况下,但不是所有情况下,p=1,所以我也得到了这个错误。令人恼火的是Julia没有处理一个1x1向量的快速反转。如果G是一个矩阵,这个操作就可以很好地工作。在你的例子中,G是一个向量,这是一种不同的情况。如果我改为[1,2,3]*[1,2,3],那么列*行我应该有矩阵…我怎么能面对这个问题?将列向量与行向量相乘得到的矩阵是秩一,因此是奇异的,没有逆矩阵。在这种情况下,你想精确地反转什么?我想找到invG'*G,其中,一般来说,G是一个mxp向量。在大多数情况下,但不是所有情况下,p=1,所以我也得到了这个错误。令人恼火的是Julia没有处理一个1x1向量的快速反转。如果G是一个矩阵,这个操作就可以很好地工作。在你的例子中,G是一个向量,这是一种不同的情况。