pentapy.solve

pentapy.solve(mat, rhs, is_flat=False, index_row_wise=True, solver=1)[source]

Solver for a pentadiagonal system.

The matrix can be given as a full n x n matrix or as a flattend one. The flattend matrix can be given in a row-wise flattend form:

[[Dup2[0]  Dup2[1]  Dup2[2]  ... Dup2[N-2]  0          0       ]
 [Dup1[0]  Dup1[1]  Dup1[2]  ... Dup1[N-2]  Dup1[N-1]  0       ]
 [Diag[0]  Diag[1]  Diag[2]  ... Diag[N-2]  Diag[N-1]  Diag[N] ]
 [0        Dlow1[1] Dlow1[2] ... Dlow1[N-2] Dlow1[N-1] Dlow1[N]]
 [0        0        Dlow2[2] ... Dlow2[N-2] Dlow2[N-2] Dlow2[N]]]

Or a column-wise flattend form:

[[0        0        Dup2[2]  ... Dup2[N-2]  Dup2[N-1]  Dup2[N] ]
 [0        Dup1[1]  Dup1[2]  ... Dup1[N-2]  Dup1[N-1]  Dup1[N] ]
 [Diag[0]  Diag[1]  Diag[2]  ... Diag[N-2]  Diag[N-1]  Diag[N] ]
 [Dlow1[0] Dlow1[1] Dlow1[2] ... Dlow1[N-2] Dlow1[N-1] 0       ]
 [Dlow2[0] Dlow2[1] Dlow2[2] ... Dlow2[N-2] 0          0       ]]

Dup1 and Dup2 are the first and second upper minor-diagonals and Dlow1 resp. Dlow2 are the lower ones. If you provide a column-wise flattend matrix, you have to set:

index_row_wise=False
Parameters:
  • mat (numpy.ndarray) – The Matrix or the flattened Version of the pentadiagonal matrix.

  • rhs (numpy.ndarray) – The right hand side of the equation system.

  • is_flat (bool, optional) – State if the matrix is already flattend. Default: False

  • index_row_wise (bool, optional) – State if the flattend matrix is row-wise flattend. Default: True

  • solver (int or str, optional) –

    Which solver should be used. The following are provided:

    • [1, "1", "PTRANS-I"] : The PTRANS-I algorithm

    • [2, "2", "PTRANS-II"] : The PTRANS-II algorithm

    • [3, "3", "lapack", "solve_banded"] : scipy.linalg.solve_banded

    • [4, "4", "spsolve"] : The scipy sparse solver without umf_pack

    • [5, "5", "spsolve_umf", "umf", "umf_pack"] : The scipy sparse solver with umf_pack

    Default: 1

Returns:

result – Solution of the equation system

Return type:

numpy.ndarray