matrix¶
The matrix module defines an abstract Matrix
object and several
implementations. Matrix objects support basic addition and subtraction
operations and provide a consistent insterface for solving linear systems.
Matrices can be converted into other forms suitable for external processing via
the export
method.
- class nutils.matrix.Matrix(shape, dtype)¶
Bases:
object
matrix base class
- abstract property T¶
transpose matrix
- abstract __add__(self, other)¶
add two matrices
- abstract __matmul__(self, other)¶
multiply matrix with a dense tensor
- abstract __mul__(self, other)¶
multiply matrix with a scalar
- abstract __neg__(self)¶
negate matrix
- __weakref__¶
list of weak references to the object (if defined)
- export(self, form)¶
Export matrix data to any of supported forms.
- Parameters:
form (
str
) –“dense” : return matrix as a single dense array
”csr” : return matrix as 3-tuple of (data, indices, indptr)
”coo” : return matrix as 2-tuple of (data, (row, col))
- rowsupp(self, tol=0)¶
return row indices with nonzero/non-small entries
- solve(self, rhs=None, *, lhs0=None, constrain=None, rconstrain=None, solver='arnoldi', atol=0.0, rtol=0.0, **solverargs)¶
Solve system given right hand side vector and/or constraints.
- Parameters:
rhs (
float
vector orNone
) – Right hand side vector. ANone
value implies the zero vector.lhs0 (class:float vector or
None
) – Initial values: compute the solution by solvingA dx = b - A lhs0
. ANone
value implies the zero vector, i.e. solvingA x = b
directly.constrain (
float
orbool
array, orNone
Column) – constraints. For float values, a number signifies a constraint, NaN signifies a free dof. For boolean, aTrue
value signifies a constraint to the value inlhs0
, aFalse
value signifies a free dof. ANone
value implies no constraints.rconstrain (
bool
array orNone
) – Row constrains. A True value signifies a constrains, a False value a free dof. ANone
value implies that the constraints follow those defined inconstrain
(by implication the matrix must be square).solver (
str
) – Name of the solver algorithm. The set of available solvers depends on the type of the matrix (i.e. the active backend), although the ‘direct’ and ‘arnoldi’ solvers are always available.rtol (
float
) – Relative tolerance: seeatol
.atol (
float
) – Absolute tolerance: require that|A x - b| <= max(atol, rtol |b|)
after applying constraints and the initial value. In caseatol
andrtol
are both zero (the defaults) solve to machine precision. Otherwise fail withnutils.matrix.ToleranceNotReached
if the requirement is not reached.**kwargs – All remaining arguments are passed on to the selected solver method.
- Returns:
Left hand side vector.
- Return type:
- solve_leniently(self, *args, **kwargs)¶
Identical to
nutils.matrix.Matrix.solve()
, but emit a warning in case tolerances are not met rather than an exception, while returning the obtained solution vector.
- exception nutils.matrix.MatrixError¶
Bases:
Exception
General error message for matrix-related failure.
- __weakref__¶
list of weak references to the object (if defined)
- exception nutils.matrix.BackendNotAvailable¶
Bases:
MatrixError
Error message reporting that the selected matrix backend is not available on the system.
- exception nutils.matrix.ToleranceNotReached(best)¶
Bases:
MatrixError
Error message reporting that the configured linear solver tolerance was not reached. The
.best
attribute carries the non-conforming solution.