# pentapy.solve

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

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`