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 notNone
.
- Settings#
The pydantic model for the settings.
alias of
MDAGaussSeidel_Settings
- settings: MDAGaussSeidel_Settings#
The settings of the MDA