Если я определяю A = [1]
, я получаю, что A
не равно A'
, поскольку они бывают разных типов:
julia> A=[1]
1-element Array{Int64,1}:
1
julia> A'
1×1 LinearAlgebra.Adjoint{Int64,Array{Int64,1}}:
1
julia> A == A'
false
Если я определяю другой вектор B = [1, 2, 3]
и пытаюсь для продуктов с A'
и A
я получаю следующий вывод:
B=[1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> B*A'
3×1 Array{Int64,2}:
1
2
3
julia> B*A
ERROR: MethodError: no method matching *(::Array{Int64,1}, ::Array{Int64,1})
...
...
Кажется, проблема в сигнатуре оператора *
, которая, кажется, не принимает два Array{Int64,1}
в качестве операндов при определении другого вектор C = [4 5]
мы получаем:
julia> C=[4 5]
1×2 Array{Int64,2}:
4 5
julia> B*C
3×2 Array{Int64,2}:
4 5
8 10
12 15
Итак, *
определяется для операндов типов Array{Int64,1}
и Array{Int64,2}
соответственно. Почему я не могу умножить вектор столбца на одноэлементный вектор A
, но могу использовать A'
?