# Offset-Assisted Factored Solution of Nonlinear Systems
## 2 Review of the Factored Solution Method  
The aim of this section is to briefly review the factored solution approach recently introduced in [8]. Consider a general nonlinear system, compactly written as follows:  
\[h(x)=p \tag{1}\]  
where \(p\in\mathbb{R}^{n}\) is a given parameter vector and \(x\in\mathbb{R}^{n}\) is the unknown vector.  
[PERSON]'s method approaches a solution from an initial guess, \(x_{0}\), by successively solving:  
\[H_{k}\Delta x_{k}=\Delta p_{k} \tag{2}\]  
where subindex \(k\) denotes the iteration counter, \(\Delta x_{k}=x_{k+1}-x_{k}\), \(H_{k}\) is the Jacobian of \(h(\cdot)\), computed at the current point \(x_{k}\), and \(\Delta p_{k}=p-h(x_{k})\) is the mismatch vector.  
The factored solution method assumes that suitable auxiliary vectors, \(y\) and \(u\in\mathbb{R}^{m}\), with \(m>n\), can be introduced so that the original Equation system(1) can be unfolded into three simpler problems:  
\[Ey = p \tag{3}\] \[u = f(y)\] (4) \[Cx = u \tag{5}\]  
where \(E\) and \(C\) are rectangular matrices of sizes \(n\times m\) and \(m\times n\), respectively, and vector \(f(\cdot)\) comprises a set of one-to-one nonlinear functions, also known as a diagonal nonlinear mapping [11],  
\[u_{i}=f_{i}(y_{i})\quad;\quad i=1,\ldots m \tag{6}\]  
each with the closed-form inverse,  
\[y_{i}=f_{i}^{-1}(u_{i})\Rightarrow y=f^{-1}(u) \tag{7}\]  
By eliminating vector \(u\) the above system can also be written in more compact form:  
\[Ey = p \tag{8}\] \[Cx = f(y) \tag{9}\]  
It is worth noting that Equation (8) is a linear underdetermined system, while Equation (9) is an overdetermined one. Among the infinite solutions to Equation (8), only those exactly satisfying Equation (9) constitute solutions to the original nonlinear Equation system (1). As explained in [8],many systems can be found in practice to which such a factorization can be applied, either directly or after trivial algebraic manipulations transforming the original system into suitable canonical forms.  
The augmented Equation systems (3)-(5) can be efficiently solved as follows (the reader is referred to [8], where the solution procedure below is developed from scratch as an optimization problem):  
* Step 0: Given an initial guess, \(x_{0}\), set \(y_{k}=f^{-1}(Cx_{0})\).
* Step 1: 1.1. Compute \(\lambda\) by solving the linear system, \[(EE^{T})\lambda=p-Ey_{k}\] (10) 1.2. Obtain \(\hat{y}\) from, \[\hat{y}=y_{k}+E^{T}\lambda\] (11)
* Step 2: Perform the one-to-one nonlinear transformation, \(\tilde{u}=f(\tilde{y})\), and obtain the (trivial) inverse of the diagonal Jacobian matrix, \(\tilde{F}^{-1}\).
* Step 3: 3.1. Obtain \(x_{k+1}\) by solving, \[\underbrace{E\tilde{F}^{-1}\mathcal{C}}_{\tilde{H}}x_{k+1}=E\tilde{F}^{-1} \tilde{u}\] (12) 3.2. Update \(y_{k+1}=f^{-1}(Cx_{k+1})\). 3.3. Convergence check: if \(||p-Ey_{k+1}||_{\infty}<\epsilon\), then stop; else, return to Step 1.  
Step 1 provides a new vector \(\tilde{y}\) that, satisfying Equation (8), minimizes the distance to the previous value \(y_{k}\). The computational cost of this step is very small provided the Cholesky factors of \(EE^{T}\) were saved during the first iteration, and the mismatch vector, \(p-Ey_{k}\), is taken from the previous execution of Step 3.3. It is worth noting that the Jacobian matrix \(\tilde{H}\) in Step 3.1 has the same structure as the one involved in [PERSON]'s method, Equation (2), but it is computed at a different point.  
Tests performed so far with the factored method on large realistic problems [9] have shown that each iteration of the above factored procedure is generally faster than that of [PERSON]'s method. Moreover, as shown in [8], the factored method exhibits a quadratic convergence rate in the neighborhood of a solution and wider basins of attractions. An outstanding additional feature of the factored method is that, unlike [PERSON]'s method, it can converge to complex solutions when the initial point is not in the basin of attraction of a real solution or simply when real solutions do not exist at all [10].