gemseo.mda.gauss_seidel module#

A Gauss-Seidel algorithm for solving MDAs.

class MDAGaussSeidel(disciplines, settings_model=None, **settings)[source]#

Bases: BaseMDASolver

Perform an MDA using the Gauss-Seidel algorithm.

This algorithm is a fixed point iteration method to solve systems of non-linear equations of the form,

\[\begin{split}\left\{ \begin{matrix} F_1(x_1, x_2, \dots, x_n) = 0 \\ F_2(x_1, x_2, \dots, x_n) = 0 \\ \vdots \\ F_n(x_1, x_2, \dots, x_n) = 0 \end{matrix} \right.\end{split}\]

Beginning with \(x_1^{(0)}, \dots, x_n^{(0)}\), the iterates are obtained by performing sequentially the following \(n\) steps.

Step 1: knowing \(x_2^{(i)}, \dots, x_n^{(i)}\), compute \(x_1^{(i+1)}\) by solving,

\[r_1\left( x_1^{(i+1)} \right) = F_1(x_1^{(i+1)}, x_2^{(i)}, \dots, x_n^{(i)}) = 0.\]

Step \(k \leq n\): knowing \(x_1^{(i+1)}, \dots, x_{k-1}^{(i+1)}\) on one hand, and \(x_{k+1}^{(i)}, \dots, x_n^{(i)}\) on the other hand, compute \(x_1^{(i+1)}\) by solving,

\[r_k\left( x_k^{(i+1)} \right) = F_1(x_1^{(i+1)}, \dots, x_{k-1}^{(i+1)}, x_k^{(i+1)}, x_{k+1}^{(i)}, \dots, x_n^{(i)}) = 0.\]

These \(n\) steps account for one iteration of the Gauss-Seidel method.

Initialize self. See help(type(self)) for accurate signature.

Parameters:
  • disciplines (Sequence[Discipline]) -- The disciplines from which to compute the MDA.

  • settings_model (MDAGaussSeidel_Settings | None) -- The MDA settings as a Pydantic model. If None, use **settings.

  • **settings (Any) -- The MDA settings. These arguments are ignored when settings_model is not None.

Settings#

The pydantic model for the settings.

alias of MDAGaussSeidel_Settings

settings: MDAGaussSeidel_Settings#

The settings of the MDA