gemseo / algos / linear_solvers

# linear_problem module¶

Linear equations problem.

class gemseo.algos.linear_solvers.linear_problem.LinearProblem(lhs, rhs=None, solution=None, is_symmetric=False, is_positive_def=False, is_converged=None)[source]

Bases: BaseProblem

Representation of the linear equations’ system $$Ax = b$$.

It also contains the solution, and some properties of the system such as the symmetry or positive definiteness.

Parameters:
• lhs (ArrayType | LinearOperator) – The left-hand side (matrix or linear operator) of the problem.

• rhs (ndarray | None) – The right-hand side (vector) of the problem.

• solution (ndarray | None) – The current solution.

• is_symmetric (bool) –

Whether to assume that the LHS is symmetric.

By default it is set to False.

• is_positive_def (bool) –

Whether to assume that the LHS is positive definite.

By default it is set to False.

• is_converged (bool | None) – Whether the solution is converged to the specified tolerance. If False, the algorithm stopped before convergence. If None, no run was performed.

check()[source]

Check the consistency of the dimensions of the LHS and RHS.

Raises:

ValueError – When the shapes are inconsistent.

Return type:

None

compute_residuals(relative_residuals=True, store=False, current_x=None)[source]

Compute the L2 norm of the residuals of the problem.

Parameters:
• relative_residuals (bool) –

If True, return norm(lhs.solution-rhs)/norm(rhs), else return norm(lhs.solution-rhs).

By default it is set to True.

• store (bool) –

Whether to store the residuals value in the residuals_history attribute.

By default it is set to False.

• current_x – Compute the residuals associated with current_x, If None, compute then from the solution attribute.

Returns:

The residuals value.

Raises:

ValueError – If solution is None and current_x is None.

Return type:

ndarray

plot_residuals()[source]

Plot the residuals’ convergence in log scale.

Returns:

The matplotlib figure.

Raises:

ValueError – When the residuals’ history is empty.

Return type:

Figure

convergence_info: int | str

The information provided by the solver if convergence occurred or not.

is_converged: bool

If the solution is_converged.

is_lhs_linear_operator: bool

Whether the LHS is symmetric.

is_positive_def: bool

Whether the LHS is positive definite.

is_symmetric: bool

Whether the LHS is symmetric.

lhs: LinearOperator | SparseArrayType

The left-hand side of the equation.

If None, the problem can’t be solved and the user has to set it after init.

residuals_history: list[float]

The convergence history of residuals.

rhs: ndarray

The right-hand side of the equation.

solution: ndarray

The current solution of the problem.

solver_name: str

The solver name.

solver_options: dict[str, Any]

The options passed to the solver.