Печать матрицы, сохраненной в виде SparseMatrixStructure

#swift #linear-algebra #accelerate

#swift #линейная алгебра #ускорение

Вопрос:

Я работаю с платформой Accelerate от Apple, используя разреженные матричные операции.

Я создал разреженную матрицу таким образом:

     var  values: Array<Double> = [0.125, 0.08, -0.01, 0.405, -0.02, 0.005]

    var rowIndices: [Int32] = [0, 1, 2,     // Column 0
                               3, 4,     // Column 1
                               5 ]           // Column 3
     
    var columnStarts = [0, 3, 5, 6]

let structure: SparseMatrixStructure = rowIndices.withUnsafeMutableBufferPointer { rowIndicesPtr in
        columnStarts.withUnsafeMutableBufferPointer { columnStartsPtr in
            var attributes = SparseAttributes_t()
            attributes.triangle = SparseLowerTriangle
            attributes.kind = SparseSymmetric
            
            return SparseMatrixStructure(
                rowCount: 3,
                columnCount: 3,
                columnStarts: columnStartsPtr.baseAddress!,
                rowIndices: rowIndicesPtr.baseAddress!,
                attributes: attributes,
                blockSize: 1
            )
        }
  

Я делаю вызов для факторизации матрицы:

  let llt: SparseOpaqueFactorization_Double = values.withUnsafeMutableBufferPointer { valuesPtr in
        let a = SparseMatrix_Double(
            structure: structure,
            data: valuesPtr.baseAddress!
        )
        
        return SparseFactor(SparseFactorizationCholesky, a)
    }
  

Мне действительно нужно проверить, каков результат факторизации, т. Е. Распечатать результат. Не вижу никакого способа даже получить результат, не говоря уже о его распечатке.

Кто-нибудь может помочь мне понять, как получить результат и распечатать его?

Ответ №1:

В конце концов решил это сам. Я использовал:

 let subfactors = SparseCreateSubfactor(SparseSubfactorL, llt)
  

чтобы извлечь объект подфакторов из факторизации, затем умножьте подфакторы на идентификационную матрицу, чтобы получить факторизацию.