Я пытаюсь использовать функцию BLAS dtrmv для умножения вектора треугольной матрицы. Согласно документации:Julia triangular matrix vector BLAS wrapper BLAS.trmv
trmv (ул, Tā, дА, А, б) Возвращает оп (A) * B, где оп определяется TA (N идентичности, T для транспонированной A, и C для сопряженного транспонирования A). Используется только треугольник ul (U для верхнего, L для нижнего). dA указывает, является ли A единично-треугольным (диагональ считается все единичной, если U или неединичной, если N). Умножение происходит на месте на b.
У меня возникли проблемы с этим. Вот мой пример:
julia> BLAS.trmv('L','N','N',Mchol,Z)
ERROR: MethodError: `trmv` has no method matching trmv(::Char, ::Char, ::Char, ::LowerTriangular{Float64,Array{Float64,2}}, ::Array{Float64,1})
Closest candidates are:
trmv(::Char, ::Char, ::Char, ::Union{DenseArray{Float64,2},SubArray{Float64,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, ::Union{DenseArray{Float64,1},SubArray{Float64,1,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}})
trmv(::Char, ::Char, ::Char, ::Union{DenseArray{Float32,2},SubArray{Float32,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, ::Union{DenseArray{Float32,1},SubArray{Float32,1,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}})
trmv(::Char, ::Char, ::Char, ::Union{DenseArray{Complex{Float64},2},SubArray{Complex{Float64},2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, ::Union{DenseArray{Complex{Float64},1},SubArray{Complex{Float64},1,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}})
...
julia> typeof(Mchol)
LowerTriangular{Float64,Array{Float64,2}}
julia> typeof(Z)
Array{Float64,1}
У меня возникли проблемы с интерпретацией ошибки. Может ли кто-нибудь помочь?
EDIT: решаемые Mchol как вычислено Mchol = Чхоль (M)»! не работает, но MChol вычисляется LAPACK.potrf ('L', Mchol) работы