## 5 Numerical Results with Adaptive Time-Step Sizes  
In this section, we introduce and design several adaptive time-step controllers to solve the system in Equation (8). When adaptive step-size controllers are designed, there are three important factors: the method for advancing the solution in each time step, the approach of estimating the local error in each time step, and the strategy which changes the size of the time step [51]. For advancing the solution, three methods have been used here to design the controllers, which are the LNe3, CLL, and Runge-Kutta methods. For estimating the local error, one needs the values of the function \(u\) calculated in two different ways but at the _same_ time level. However, most of the examined algorithms do not automatically serve two different approximations of the unknown function. The LNe3 and the CLL methods are among those very few which do, so embedded formulas can be designed based on them, as will be explained for each method later. The strategy for changing the time-step size can be briefly explained here. Let us assume that we applied an explicit scheme of order \(q\) with time-step size \(h_{present}\) to the system in Equation (8) for advancing the solution from \(u^{n}\) to \(u^{n+1}\). Assume that we used some approach for estimating the local error during that time step and let us denote the calculated local error by _LE_. The norm of the error estimation can be written as follows [52] (p. 26):  
\[err^{n+1}=\max\biggl{\{}\frac{|LE|}{Abs\mathit{Tol}+|u^{n+1}|\mathrm{Re} \mathit{Tol}}\biggr{\}} \tag{21}\]  
where _AbsTol_ and _ReTol_ are the relative and the absolute tolerances which can be specified by the user. The used nomenclatures hide the fact that \(LE\) and \(u^{n+1}\) are vectors because  
Figure 10: The time development of the errors, i.e., the absolute difference between the analytical solution and that of the stable numerical methods, for \(h=10^{-3}\) as a function of time. they are applied to a system of ODEs instead of a single ODE. Using the calculated norm \(err^{n+1}\), we can change the time-step size using the following formula [53]:  
\[h_{new}=\min\Bigl{(}f_{\max},\max\Bigl{(}f_{\min}.f_{\mathrm{s}}\beta^{n+1} \Bigr{)}\Bigr{)}h_{present} \tag{22}\]  
where \(\beta^{n+1}\) is a function of the norm of the error estimation \(err^{n+1}\), and that function depends on the type of the controller. The safety factor is taken as \(f_{\mathrm{s}}=0.9\) while the factors \(f_{\max}\) and \(f_{\min}\) are chosen to be 5 and 0.1, respectively [54] (p. 168). In the case of the elementary controller, which we are using in this paper, the function can be written as follows:  
\[\beta^{n+1}=\left(err^{n+1}\right)^{\frac{n-1}{q}} \tag{23}\]  
If \(err^{n+1}\leq 1\), we accept the time step, and the solution is advanced with \(u_{i}^{n+1}\), and the time step will be modified by Equation (22). If \(err^{n+1}>1\), we reject both the time step and the solution \(u_{i}^{n+1}\), and we repeat the calculations with a new time step calculated again by Equation (22). Now, we will illustrate the approaches for calculating the local error estimation for each method. **The LNe3 method**  
As we introduced in Section 3, the LNe3 method consists of three stages. In the first stage, we use the CNe scheme while the LNe scheme is used in the second and third stages. All three stages provide values of the unknown function \(u\) at the end of the actual time step. It means that there are three possibilities to compare these values with one another in order to estimate the local error. The first possibility means that the difference between the numerical solutions calculated in the first and second stages is used as a local error estimator as follows:  
\[LE_{\mathrm{C}1L2}=\left|\hat{u}^{n+1}-u^{n+1}\right| \tag{24}\]  
where \(\hat{u}^{n+1}\) and \(u^{n+1}\) are the solutions calculated by Equations (12) and (15), respectively. The indices \(C1\) and \(L2\) in the last nomenclature \(LE_{\mathrm{C}1L2}\) refer to the stages used to estimate the local error.