1 Introduction

Most physical phenomena are modeled by nonlinear differential or algebraic equations. Solving these equations analytically or numerically causes many problems and is the subject of many studies [1, 2, 5,6,7, 11, 14,15,16,17, 19, 23, 24, 27, 29, 30, 33, 34]. An important place among the methods that find solutions to equations is occupied by different variants of homotopy methods [1, 5, 7, 11, 14, 15, 17, 19, 24, 27, 29, 30, 34]. Depending on the variant, these methods make it possible to determine the solution to a given problem numerically or analytically. The concept of homotopy was also used in the proposed method. Some concepts used in solving nonlinear differential and algebraic equations are discussed below.

Analytical methods are an important branch of scientific research methodology alongside numerical techniques. The primary advantage of analytical methods is that they provide much better insight into the solution of a problem, allow the identification of sensitive factors, and enable the faster design of systems. The homotopy analysis method (HAM) is an analytic approximation method for nonlinear ordinary and partial differential equations proposed by Liao [14]. Using the homotopy analysis approach, a continuous mapping of an initial guessed approximation can be constructed to the exact solution of the original equations. An auxiliary linear operator is chosen to construct such a continuous mapping, and an auxiliary parameter is used to ensure the convergence of the solution series. The basic ideas of the HAM and a dozen examples are described in [14]. [27] uses HAM to obtain convergent series solutions of strongly nonlinear problems. In [11], the homotopy analysis transformation method is used to solve various nonlinear differential equations and is a combination of HAM and the Laplace transform method that is a powerful and efficient technique when finding analytical solutions to a broad class of problems. In [7], the generalized plane Couette flow of couple stress fluids between two parallel plates was investigated using the optimal homotopy asymptotic method (OHAM) and new iterative method (NIM). OHAM does not require discretization, is free from an initial guess, and the auxiliary function controls the convergence of the method. NIM straightforwardly handles linear and nonlinear equations, and does not require the calculation of tedious Adomian polynomials but is an iterative method; thus, OHAM requires an initial condition to start, which is its primary disadvantage. The results obtained by these methods, which are in the form of infinite power series, are reported in [7]. The variational iteration method is widely used to solve linear and nonlinear differential equations of integer and fractional order. In [2], the convergence analysis of the modified variational iteration algorithm II (MVIA-II) is performed, and its application in physical and biological sciences is presented. In [33], the optimal auxiliary function method was applied for the first time to the approximate solution of partial differential equations arising in shallow water. Refinement schemes, or partition schemes, are valuable tools for modeling curves. A generalized class of binary interpolating refinement schemes and their properties are given in [6]. Unified algorithms based on refinement schemes for solving linear and nonlinear differential equations with constraints are also presented.

Efficiently finding the roots of algebraic nonlinear equations has wide applications in numerical mathematics and applied science. The Newton-Raphson method has an iterative form and is the most popular technique for solving nonlinear equations. The disadvantage of this method is that the initial approximation of the solution must be chosen close sufficient to the proper solution to guarantee quadratic order of convergence. Finding a criterion for selecting the initial guess is a complex problem. The Newton method also allows the determination of only one solution from a given initial guess. Determining multiple or all solutions to a given system of nonlinear equations, or even a single equation, requires a different approach. [16] proposes new numerical algorithms for finding the roots of one-dimensional nonlinear algebraic equations and uses the variational iteration technique and have sixth-order convergence. An efficient numerical algorithm for solving single nonlinear algebraic equations based on the Newton–Raphson and homotopy analysis methods is discussed in [1]. A comparison of several recent homotopy methods in terms of accuracy was performed in [17]. The methods were tested on systems of nonlinear algebraic equations, and Newton’s homotopy method was shown to be the most favorable option. The necessity of solving systems of polynomial equations occurs often in different fields of science and engineering, such as pattern construction, inverse kinematics, robotics, vision, and calculation of equilibrium states of chemical reaction equations. In [5], the particular category of nonlinear systems is solved using the homotopy continuation method. In [19], a new homotopy combining fixed point and Newton homotopy is proposed to find all real roots of a system of nonlinear algebraic equations. First, the Levenberg–Marquardt method is used to search for the starting point. Then, a continuation method is used to trace paths from the obtained starting point to find the roots. [30] develops theoretical results on the global convergence of a specific class of homotopy methods for solving nonlinear circuits and systems. A set of sufficient conditions that guarantee the global convergence of homotopy methods is given. [15] discusses the application of so-called globally convergent probability-one homotopy methods to various systems of nonlinear equations that occur in circuit simulation. Efficient and reliable determination of one or more operating points of a nonlinear circuit is the first step during any circuit simulation process. In [29], a straightforward SPICE-oriented Newton homotopy method is proposed to find multiple DC solutions. The solution curve-tracing algorithm is based on the arc-length and Newton homotopy methods. An approach based on a mathematical concept called deflation to find multiple operating points is proposed in [23]. The primary idea of deflation is to deform nonlinear equations so that previously determined solutions are removed, and a method capable of finding a single solution is used to determine the next solution. This concept has been combined with the homotopy method and the discrete equivalent of Newton–Raphson nodal analysis.

In this study, the nonlinear equations arising in the fault diagnosis of different classes of analog electronic circuits are specifically considered. Such equations appear in methods using the simulation after test approach. In these methods, a system of nonlinear equations is obtained after measurement tests, the solutions of which are the fault parameters. We thus consider a system of nonlinear equations:

$$\begin{aligned} \begin{array}{*{20}c} {{{\hat{f}}}{}_1\left( {x_1 ,\; \ldots ,\;x_n } \right) = 0} \\ \vdots \\ {{{\hat{f}}}{}_n\left( {x_1 ,\; \ldots ,\;x_n } \right) = 0} \\ \end{array} \end{aligned}$$
(1)

with respect to real unknown variables \(x_1,\; \ldots ,\;x_n\) forming a vector \({{{\hat{\textbf{x}}}}} = \left[ {x_1 \; \ldots \;x_n } \right] ^{\,{\textrm{T}}}\) where \({\textrm{T}}\) denotes the transpose. System (1) can be rewritten in a compact form:

$$\begin{aligned} {{{\hat{\textbf{f}}}}}\left( {{{{\hat{\textbf{x}}}}}} \right) = {\textbf{0}} \end{aligned}$$
(2)

where \({{{\hat{\textbf{f}}}}}\left( {{{{\hat{\textbf{x}}}}}} \right) = \left[ {{{\hat{f}}}_1 \left( {{{{\hat{\textbf{x}}}}}} \right) \; \ldots \;{{\hat{f}}}_n \left( {{{{\hat{\textbf{x}}}}}} \right) \;} \right] ^{\,{\textrm{T}}}\) and \({\textbf{0}} = \left[ {{\textrm{0}}\; \ldots \;{\textrm{0}}} \right] ^{\,{\textrm{T}}}\). Solving (2) is a difficult task and often requires advanced mathematical tools. One of these tools, as described above, is the homotopy method [34], which operates with a homotopy equation:

$$\begin{aligned} {\textbf{f}}_{\textrm{h}} \left( {{{{\hat{\textbf{x}}}}},\;\alpha } \right) = {\textbf{0}} \end{aligned}$$
(3)

where \(\alpha \) is a homotopy parameter and the solution of \( {\textbf{f}}_{\textrm{h}} \left( {{{{\hat{\textbf{x}}}}},\;0} \right) = {\textbf{0}}\) is known or easy to find, while \( {\textbf{f}}_{\textrm{h}} \left( {{{{\hat{\textbf{x}}}}},\;1} \right) = {{{\hat{\textbf{f}}}}}\left( {{{{\hat{\textbf{x}}}}}} \right) \). In the simplest case, the parameter \(\alpha \) is changed from 0 to 1, and the corresponding equation is solved each time while considering the previous result. This approach is conceptually simple but difficult to execute effectively in practical applications. In another homotopy approach \(\alpha \) is considered as \(\left( {n + 1} \right) \)-st variable and the homotopy equation becomes:

$$\begin{aligned} {\textbf{f}}\left( {\textbf{x}} \right) = {\textbf{0}} \end{aligned}$$
(4)

where \({\textbf{x}} = \left[ {x_1 \; \ldots \;x_n \;x_{n + 1} } \right] ^{\,{\textrm{T}}}, x_{n + 1} = \alpha \), and \({\textbf{f}}\left( {\textbf{x}} \right) = {\textbf{f}}_{\textrm{h}} \left( {{{{\hat{\textbf{x}}}}},\;x_{n + 1} } \right) \). Thus, equation (4) represents a system of n individual equations in \(\left( {n + 1} \right) \) unknown variables. Vector \({\textbf{x}}\) that meets (4) and has \(\left( {n + 1} \right) \)th element \(x_{n + 1} = 1\) is the solution of (2). The simplicial methods [24, 34] are dedicated to solving equations such as (4). As a rule, only the standard simplicial method is applied in practice. Unfortunately, this method has the drawback of time-consuming and complex procedures when generating the sequence of simplices. Mathematical literature provides other simplicial methods leading to different algorithms. The method known by the name integer algorithm [34] is a promising method in this field, is described in detail in this paper and is supplemented by some procedures that play a critical role in the computation process. The developed method allows complex diagnostic equations to be solved. To confirm the effectiveness of the method in identifying parametric faults, a diagnostic process was performed for several linear and nonlinear circuits.

Section 2 discusses the primary idea of simplicial methods. Section 3 presents a sketch of the integer algorithm. We describe procedures necessary to effectively implement the algorithm, including creating an initial simplex and an adjacent simplex in Sect. 4. Section 5 discusses the application of the numerical method in diagnosing electronic circuits. A sketch of the diagnostic method and examples of its application to practical circuits are provided. Conclusions and possible further research directions are discussed in Sect. 6. All numerical procedures were implemented in the DELPHI programming environment. Some electronic circuit simulations were performed using IsSPICE 4 software [28, 32]. The third release of HP Agilent Keysight 34401A software [12] was used to control and record data from the 34401A multimeter.

2 Preliminaries

This section provides a brief review of simplicial methods.

2.1 The Main Idea of the Simplicial Methods

A j-simplex is the figure formed by \(j + 1\) independent points \({\textbf{x}}^0,\;{\textbf{x}}^1,\; \ldots ,\;{\textbf{x}}^j\), where each of the points is a vector called a vertex. The simplex can be written in terms of its \(j + 1\) vertices as \( s = \left\{ {{\textbf{x}}^0,\;{\textbf{x}}^1,\; \ldots ,\;{\textbf{x}}^j } \right\} \). A j-simplex is the convex hull of the \(j + 1\) independent points \({\textbf{x}}^i, i = 0,\;1,\; \ldots ,\;j \), and can be described as:

$$\begin{aligned} \left\{ { {{\textbf{w}}\,} \biggr |\quad {\textbf{w}} = \sum \limits _{i = 0}^j {\lambda _i \,{\textbf{x}}^i } ,\quad \sum \limits _{i = 0}^j {\lambda _i \, = 1\,,} \quad \lambda _i \, \ge 0} \right\} . \end{aligned}$$
(5)

The convex hull of some but not all of the vertices \({\textbf{x}}^i\) is termed a face of s. If the face has j vertices, it is called a facet.

We assume that we have a nonlinear function \( {\textbf{f}}\left( {\textbf{w}} \right) {\mathrm{:}}\;R^{n + 1} \rightarrow R^n\), and let \( s = \left\{ {{\textbf{x}}^i } \right\} _0^{n + 1}\) be an \(\left( {n + 1} \right) \) simplex in \( R^{n + 1}\). We consider the facet \(\left\{ {{\textbf{x}}^i } \right\} _1^{n + 1}\) of the simplex s. The point:

$$\begin{aligned} {\textbf{c}} = \sum \limits _{i = 1}^{n + 1} {\frac{1}{{n + 1}}} {\textbf{x}}^i \end{aligned}$$
(6)

is called a centroid of this facet.

The function \({\textbf{f}}\left( {\textbf{w}} \right) \) can be presented in the form \( {\textbf{f}}\left( {\textbf{w}} \right) = \left[ {f_1 \left( {\textbf{w}} \right) \; \ldots \;f_n \left( {\textbf{w}} \right) \;} \right] ^{\,{\textrm{T}}}\) and \( {\textbf{w}} = \left[ {w_1 \; \ldots \;w_{n + 1} \;} \right] ^{\,{\textrm{T}}}\), where \(w_i, i = 1,\; \ldots ,\;n + 1\) are real variables. For any \({\textbf{w}}\), the elements of \( {\textbf{f}}\left( {\textbf{w}} \right) {\mathrm{:}}\;f_1 \left( {\textbf{w}} \right) \; \ldots \;f_n \left( {\textbf{w}} \right) \) are real numbers. Because \({\textbf{f}}\left( {\textbf{w}} \right) \) is a nonlinear function, finding the solution of \({\textbf{f}}\left( {\textbf{w}} \right) = {\textbf{0}}\) is a difficult task. Therefore, we create an auxiliary linear function \({\textbf{G}}\left( {\textbf{w}} \right) \) and solve the equation \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\). The definition of \({\textbf{G}}\left( {\textbf{w}} \right) \) must ensure that if \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\) in a simplex s and the simplex is sufficiently small, then \({\textbf{w}}\) is an approximate solution to \({\textbf{f}}\left( {\textbf{w}} \right) = {\textbf{0}}\). This property can be satisfied by different functions \({\textbf{G}}\left( {\textbf{w}} \right) \), leading to different algorithms.

2.2 Standard Simplicial Algorithm

The standard simplicial algorithm operates as follows. We evaluate \({\textbf{f}}\) on the vertices \({\textbf{x}}^i\) of the simplex \(s = \left\{ {{\textbf{x}}^i } \right\} _0^{n + 1} \) in \(R^{n + 1}\) so that we have \( {\textbf{f}}\left( {{\textbf{x}}^i } \right) = \left[ {f_1 \left( {{\textbf{x}}^i } \right) \; \ldots \;f_n \left( {{\textbf{x}}^i } \right) \;} \right] ^{\,{\textrm{T}}}, i = 0,\;1,\; \ldots ,\;n + 1 \). Then, given a point of the simplex \({\textbf{w}} = \sum \nolimits _{i = 0}^{n + 1} {\lambda _i \,{\textbf{x}}^i },\quad \sum \nolimits _{i = 0}^{n + 1} {\lambda _i \, = 1\,,} \quad \lambda _i \, \ge 0, i = 0,\; \ldots ,\;n + 1\) define the linear function:

$$\begin{aligned} {\textbf{G}}\left( {\textbf{w}} \right) = \sum \limits _{i = 0}^{n + 1} {\lambda _i \,{\textbf{G}}\left( {{\textbf{x}}^i } \right) } \end{aligned}$$
(7)

where we substitute \({\textbf{G}}\left( {{\textbf{x}}^i } \right) = {\textbf{f}}\left( {{\textbf{x}}^i } \right) \) and solve the equation \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\) for \({\textbf{w}}\). This equation on the simplex s is defined by:

$$\begin{aligned}&\sum \limits _{i = 0}^{n + 1} {\lambda _i \,{\textbf{f}}\left( {{\textbf{x}}^i } \right) = 0,\quad } \sum \limits _{i = 0}^{n + 1} {\lambda _i \, = 1\,,} \quad \lambda _i \, \ge 0 \end{aligned}$$
(8)
$$\begin{aligned}&{\textbf{w}} = \sum \limits _{i = 0}^{n + 1} {\lambda _i \,{\textbf{x}}^i }. \end{aligned}$$
(9)

Because (8) is a system of \(n + 1\) equations in \(n + 2\) variables \(\lambda _0,\;\lambda _1,\; \ldots \;\lambda _{n + 1}\), the solution is a line segment in s. This line segment extends from the interior of a facet of s to the interior of another facet of s. The standard simplicial algorithm traces a solution path consisting of the segments of a set of simplices leading to an approximate solution of the functions \({\textbf{f}}\left( {\textbf{w}} \right) = {\textbf{0}}\). First, it takes a simplex \(s^0\) and traces the line segment across \( s^0\). Then, we take an adjacent simplex \(s^1\) and trace a line segment across \(s^1\), and the procedure continues. The definition (7) where \({\textbf{G}}\left( {{\textbf{x}}^i } \right) = {\textbf{f}}\left( {{\textbf{x}}^i } \right) \) ensures that if \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\) and the simplex is sufficiently small, then \({\textbf{w}}\) is an approximate solution of \( {\textbf{f}}\left( {\textbf{w}} \right) = {\textbf{0}}\), [34]. The property is essential and termed the c-property. A disadvantage of the standard simplicial algorithm is that it is quite difficult and time-consuming to solve equation \({\textbf{G}}\left( {\textbf{w}} \right) ={\textbf{0}}\) (defined by (8)) for \({\textbf{w}} \in s\).

3 Integer Algorithm

Now, we consider another function \({\textbf{G}}\) with the c-property. This function is defined by (7), where:

$$\begin{aligned} {\textbf{G}}\left( {{\textbf{x}}^i } \right) = \left\{ \begin{array}{ll} {\textbf{e}}^j &{}\quad {{\textrm{if}}} ~ {f_j \left( {{\textbf{x}}^i } \right) > 0} ~{\text {for some}}~j = 1,\; \ldots \;n \\ - {\textbf{e}} &{}\quad {{\textrm{if}}} ~{f_j \left( {{\textbf{x}}^i } \right) \le 0} ~{\text {for all}}~j. \\ \end{array} \right. . \end{aligned}$$
(10)

In definition (10), \({\textbf{e}}^j\) is the n-vector of zeros except for a one in the jth position, and \({\textbf{e}}\) is the n-vector of all ones. The set \(\left\{ {{\textbf{G}}\left( {{\textbf{x}}^i } \right) } \right\} _{\,i = 1}^{\,n + 1}\), which is obtained by evaluating \({\textbf{G}}\) at all \(n + 1\) vertices of a facet, is called complete if:

$$\begin{aligned} \left\{ {{\textbf{G}}\left( {{\textbf{x}}^i } \right) } \right\} _{\,1}^{\,n + 1} = \left\{ {{\textbf{e}}^1 ,\;{\textbf{e}}^2 ,\; \ldots ,\;{\textbf{e}}^n ,\; - {\textbf{e}}} \right\} . \end{aligned}$$
(11)

Thus, if the facet is complete, \({\textbf{G}}\left( {{\textbf{x}}^i } \right) \) must be different at each vertex of the facet. If facet \(\left\{ {{\textbf{x}}^i } \right\} _{\,1}^{\,n + 1}\) is complete, equation \({\textbf{G}}\left( {\textbf{w}} \right) ={\textbf{0}}\) becomes \(\sum \nolimits _{i = 1}^n {\lambda _i \,{\textbf{e}}^i - \lambda _{n + 1} \,{\textbf{e}} = {\textbf{0}}}, \sum \nolimits _{i = 1}^{n + 1} {\lambda _i \, = 1\,,} \lambda _i \, \ge 0\). It has a solution \(\lambda _i = \frac{1}{{n + 1}}, i = 1,\; \ldots ,\;n + 1\). Thus, the solution of \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\) on the complete facet \({\textbf{w}} = \sum \nolimits _{i = 1}^{n + 1} {\frac{1}{{n + 1}}{\textbf{x}}^i }\) is the centroid of the facet. In this case, the problem of solving \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\) is trivial. It can be proven [34] that \({\textbf{G}}\) defined by (7), where \({\textbf{G}}\left( {{\textbf{x}}^i } \right) \) are defined by (10) satisfies the c-property. Thus, if \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\) and the simplex is sufficiently small, then \({\textbf{w}}\) is an approximate solution of \({\textbf{f}}\left( {\textbf{w}} \right) = {\textbf{0}} \).

To simplify the algorithm, the vectors \({\textbf{e}}^j\) and \({\textbf{e}}\) in (11) can be coded by integers as follows. We now consider a vector \({\textbf{e}}^j = \left[ {0\;\; \ldots \;\;0\;1\;0\;\; \ldots \;\;0} \right] ^{\,{\textrm{T}}}\) where one is located at the jth position, which means that the jth element of \({\textbf{f}}\left( {{\textbf{x}}^i } \right) \) is positive. The vector will be coded by integer j called a label. Vector \({\textbf{e}} = \left[ {1\;\; \ldots \;\;1} \right] ^{\,{\textrm{T}}}\), which corresponds to \({\textbf{f}}\left( {{\textbf{x}}^i } \right) \) having all nonpositive elements, will be coded by label \( - \left( {n + 1} \right) \). For example, if \(n = 3\) then \({\textbf{e}}^1 = \left[ {1\;\;0\;\;0} \right] ^{\,{\textrm{T}}}\) is coded by label 1, \({\textbf{e}}^2 = \left[ {0\;\;1\;\;0} \right] ^{\,{\textrm{T}}}\) by label 2, \({\textbf{e}}^3 = \left[ {0\;\;0\;\;1} \right] ^{\,{\textrm{T}}}\) by label 3, and \({\textbf{e}} = \left[ {1\;\;1\;\;1} \right] ^{\,{\textrm{T}}} \) by label (-4).

Based on the definition (10) of vectors \({\textbf{e}}^j, j = 1,\; \ldots ,\;n \), and \({\textbf{e}}\), we can formally define the labels as follows. If at vertex \({\textbf{x}}^i \) of the facet \(\left\{ {{\textbf{x}}^i } \right\} _{\,1}^{\,n + 1}, j\)th element \(f_j \left( {{\textbf{x}}^i } \right) \) of the vector \({\textbf{f}}\left( {{\textbf{x}}^i } \right) \) is positive we assign label j to this vertex. If \(f_j \left( {{\textbf{x}}^i } \right) \le 0\) for all \( j = 1,\; \ldots ,\;n\), we assign label \( - \left( {n + 1} \right) \) to the vertex \({\textbf{x}}^i \). The labels enable the identification of a complete facet. If facet \(\left\{ {{\textbf{x}}^i } \right\} _{\,1}^{\,n + 1}\) contains vertices possessing all the labels \(1,\;2,\; \ldots ,\;n,\, - \left( {n + 1} \right) \), the facet is complete because in such a case, (11) holds. Thus, this process follows the integer algorithm [34]. We also let s be a simplex that has a complete facet B. Then, s can be presented as \(s = B \cup \left\{ {{{{\bar{\textbf{x}}}}}} \right\} \), where \({{{\bar{\textbf{x}}}}}\) is a vertex of s that does not belong to B. We let the label of \({{{\bar{\textbf{x}}}}}\) be l, where \(l = \left\{ {1,\;2,\; \ldots ,\;n,\; - \left( {n + 1} \right) } \right\} \). Because B is complete, one of its vertices, say \({\textbf{x}}^l\), its label is also l. We thus consider the facet \({{\bar{B}}}\) consisting of \({{{\bar{\textbf{x}}}}}\) and all vertices of B except \({\textbf{x}}^l\); this facet is also complete. B and \({{\bar{B}}}\) are the only complete facets of s. Thus, the centroids of B and \({{\bar{B}}}\) meet the equation \({\textbf{G}}\left( {\textbf{w}} \right) = {\textbf{0}}\), and because \({\textbf{G}}\left( {\textbf{w}} \right) \) is a linear function, the linear segment in simplex s connecting these centroids represents the solution of \({\textbf{G}}\left( {\textbf{w}} \right) ={\textbf{0}}\) in the simplex. Next, \({{\bar{B}}}\) is considered a completely labeled facet of a new simplex \({{\bar{s}}} = {{\bar{B}}} \cup \left\{ {{{\bar{{{\bar{{\textbf{x}}}}}}}}} \right\} \), where \({{\bar{{{\bar{\textbf{x}}}}}}}\) is a vertex of \({{\bar{s}}}\) that does not belong to \({{\bar{B}}}\), and the step is then applied to \({{\bar{s}}}\) as before. The process continues from simplex to simplex in the same way, as shown in Fig. 1. In the case shown in Fig. 1, where \(n = 1, {\textbf{f}}\left( {\textbf{w}} \right) = f\left( {\textbf{w}} \right) , {\textbf{w}} = \left[ {w_1 \;w_2 \;} \right] ^{\,{\textrm{T}}}\). Thus, f can be positive or nonpositive, and there exist only two labels: 1 and \(\left( { - 2} \right) \).

Fig. 1
figure 1

Illustration of the solution path generation process by the integer algorithm for a scalar function of two variables

The integer algorithm generally requires more simplices than the standard simplicial algorithm, but the effort per simplex is significantly reduced [34].

4 Developing and Supplementing the Integer Algorithm

Section 3 shows a sketch of the integer algorithm. To apply this algorithm and ensure its effectiveness, various problems must be solved and are discussed in more detail, along with propositions to solve them.

4.1 Creation of the Initial Simplex

The initial simplex must include a complete facet whose vertices contain all the labels \( 1,\;2,\; \ldots ,\;n,\; - \left( {n + 1} \right) \). Thus, we require \(n + 1\) vectors \({\textbf{x}}^i \) such that \({\textbf{f}}\left( {{\textbf{x}}^1 } \right) \) has positive element \( f_1 \left( {{\textbf{x}}^1 } \right) ,\; \ldots ,\;{\textbf{f}}\left( {{\textbf{x}}^n } \right) \) has a positive element \(f_n \left( {{\textbf{x}}^n } \right) \), and all elements of \({\textbf{f}}\left( {{\textbf{x}}^{n + 1} } \right) \) are nonpositive. To find these vertices (vectors \( {\textbf{x}}^i = \left[ {x_1^i \; \ldots \;x_n^i \;x_{n + 1}^i } \right] ^{\,{\textrm{T}}}, i = 1,\; \ldots ,\;n + 1\)), we force their last elements \(x_{n + 1}^i\) to zero. The element \(x_{n + 1}\) corresponds to the homotopy parameter \( \alpha \). Thus, function (4) is reduced and will be labeled \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \) where \({{{\tilde{\textbf{x}}}}} = \left[ {{{\tilde{x}}}_1^{} \; \ldots \;{{\tilde{x}}}_n^{} } \right] ^{\,{\textrm{T}}}\). In such a case \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) = {\textbf{f}}\left( {\textbf{x}} \right) \), where \({\textbf{x}} = \left[ {{{{\tilde{\textbf{x}}}}}_{}^{\textrm{T}} \;\;0} \right] ^{\,{\textrm{T}}}\). Two proposed procedures allow the creation of the complete facet of the initial simplex.

4.1.1 Procedure for Finding Such \({{{\tilde{\textbf{x}}}}}\) That All Elements of \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \) are Nonpositive

We now expand \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \) into a Taylor series about \( {{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} = \left[ {{{\tilde{x}}}_1^{{\textrm{nom}}} \; \ldots \;{{\tilde{x}}}_n^{{\textrm{nom}}} } \right] ^{\,{\textrm{T}}} \) where \({{\tilde{x}}}_1^{{\textrm{nom}}} \; \ldots \;{{\tilde{x}}}_n^{{\textrm{nom}}}\) are some positive reference values of the variables \({{\tilde{x}}}_1^{} \; \ldots \;{{\tilde{x}}}_n\), as explained in Sect. 5, and neglect the higher order terms:

$$\begin{aligned} {{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \cong {{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) + {\textbf{D}}\left( {{{{\tilde{\textbf{x}}}}} - {{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) \end{aligned}$$
(12)

where \({\textbf{D}} = \left[ {d_{ij} } \right] _{\,n \times n}, d_{ij} = \frac{{\partial {{\tilde{f}}}_i }}{{\partial x_j }}\left( {{{\tilde{x}}}^{{\textrm{nom}}} } \right) , i,j = 1,\; \ldots ,\;n\). We create a vector \({\textbf{h}} = \left[ {h_1^{} \; \ldots \;h_n^{} } \right] ^{\,{\textrm{T}}}\) whose elements are negative and write:

$$\begin{aligned} {{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) + {\textbf{D}}\left( {{{{\tilde{\textbf{x}}}}} - {{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) = {\textbf{h}} \end{aligned}$$
(13)

which can be rewritten as:

$$\begin{aligned} {{\textbf{D}{{\tilde{\textbf{x}}}}}} = {\textbf{u}} \end{aligned}$$
(14)

where \({\textbf{u}} = {\textbf{h}} + {{\textbf{D}{{\tilde{\textbf{x}}}}}}^{{\textrm{nom}}} - {\textbf{f}}\left( {{{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) \), \({\textbf{h}} < {\textbf{0}}\).

We want to find a positive vector \({{{\tilde{\textbf{x}}}}} \in \left\{ {\left( {1 - k} \right) {{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}},\;\left( {1 + k} \right) {{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right\} \) where k is a positive number smaller than one, say 0.005, such that \({{\textbf{D}{{\tilde{\textbf{x}}}}}} \le {\textbf{u}}\). For this purpose, we apply the bounded variable simplex optimization method [3] as follows:

$$\begin{aligned} \begin{aligned} {\text {minimize}}&\quad a\quad \left( a - {\text {an arbitrary constant}} \right) \\ {\text {subject to}}&\\&\quad {{{\textbf{D}{{\tilde{\textbf{x}}}}}} \le {\textbf{u}}} \\&\quad \left( {1 - k} \right) {{{{\tilde{{\textbf{x}}}}}}}^{{\textrm{nom}}} \le {{{{\tilde{{\textbf{x}}}}}}} \le \left( {1 + k} \right) {{ {{\tilde{{\textbf{x}}}}}}}^{{\textrm{nom}}} \;. \\ \end{aligned} \end{aligned}$$
(15)

The solution \({{{\tilde{\textbf{x}}}}}\) satisfies the relation:

$$\begin{aligned} {\textbf{f}}\left( {{{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) + {\textbf{D}}\left( {{{{\tilde{\textbf{x}}}}} - {{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) \le {\textbf{h}} < {\textbf{0}}. \end{aligned}$$
(16)

However, because the left-hand side of (16) is an approximation of \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \), we check whether \(f_j \left( {{{{\tilde{\textbf{x}}}}}} \right) \le 0\) for all \(j = 1,\; \ldots ,\;n\). If not, we choose a new vector \({{{\tilde{\textbf{h}}}}} = {\textbf{h}} + {\textbf{b}}\), where \({\textbf{b}} = \left[ {b_1^{} \; \ldots \;b_n^{} } \right] ^{\,{\textrm{T}}}\) contains all negative elements, and repeat the procedure. Otherwise, we create vertex \({\textbf{x}} = \left[ {{{{\tilde{\textbf{x}}}}}\;\;0} \right] ^{\,{\textrm{T}}}\) having the label \( - \left( {n + 1} \right) \).

4.1.2 Procedure for Finding \({{{\tilde{\textbf{x}}}}}\), which Makes the ith Element of \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \) Positive

We now consider the function \({{{\tilde{\textbf{f}}}}}\left( {{{{\tilde{\textbf{x}}}}}} \right) \), select its ith component, and write it similarly:

$$\begin{aligned} {{\tilde{f}}}_i \left( {{{{\tilde{\textbf{x}}}}}} \right) \cong {{\tilde{f}}}_i \left( {{{{\tilde{\textbf{x}}}}}^{{\textrm{nom}}} } \right) + \sum \limits _{j = {\textrm{1}}}^n {d_{ij} \left( {{{\tilde{x}}}_j - {{\tilde{x}}}_j^{{\textrm{nom}}} } \right) } . \end{aligned}$$
(17)

Depending on the sign of \(d_{ij}\) we choose \({{\tilde{x}}}_j, j = 1,\; \ldots ,\;n \), as follows. For \(j = i\) we set \({{\tilde{x}}}_j = \left( {1 + w_1 } \right) {{\tilde{x}}}_j^{{\textrm{nom}}}\) if \(d_{ij} > 0\) or \({{\tilde{x}}}_j = \left( {1 - w_1 } \right) {{\tilde{x}}}_j^{{\textrm{nom}}}\) if \(d_{ij} < 0\). For \(j \ne i\) we set \({{\tilde{x}}}_j = \left( {1 + w_2 } \right) {{\tilde{x}}}_j^{{\textrm{nom}}}\) if \(d_{ij} > 0\) or \({{\tilde{x}}}_j = \left( {1 - w_2 } \right) {{\tilde{x}}}_j^{{\textrm{nom}}}\) if \(d_{ij} < 0\), where \(w_1\) and \(w_2\) are positive numbers, say \(w_1 = 0.01, w_2 = 0.005\). Next, we check whether \({{\tilde{f}}}_i \left( {{{{\tilde{\textbf{x}}}}}} \right) > 0\). If not, we repeat the procedure for increased values of \(w_1 \) and \(w_2\).

Procedures 4.1.1 and 4.1.2 allow finding a complete facet of the initial simplex. To find the last vertex of the initial simplex, we calculate the centroid c of the facet and form vector \({\textbf{x}} = \left[ {x_1^{} \; \ldots \;x_n^{} \;x_{n + 1}} \right] ^{\,{\textrm{T}}}\) setting \(x_i = c_i\) for \(i = 1,\; \ldots ,\;n\) and \(x_{n + 1} = \alpha _0\), where \(\alpha _0\) is a small value of the homotopy parameter, e.g., 0.02. Another initial simplex can be created by setting \(x_i = c_i\) for \(i = 1,\; \ldots ,\;n\) and \(x_{n + 1} = - \alpha _0\). We use both simplices in the proposed algorithm.

4.2 Creation of the Adjacent Simplex

Simplex s that is considered in the integer algorithm (see Sect. 3) is denoted as \(s = B \cup \left\{ {{{{\bar{\textbf{x}}}}}} \right\} \), where B is a complete facet and \({{{\bar{\textbf{x}}}}}\) is a vertex of s that does not belong to B. Its label l creates another complete facet \({{\bar{B}}}\) forming a base of succeeding simplex. If all elements of the function \({\textbf{f}}\left( {{{{\bar{\textbf{x}}}}}} \right) \) are nonpositive, the label l is defined uniquely and equals \( - \left( {n + 1} \right) \). Label \(1 \le l \le n\) means that the lth element of the function \({\textbf{f}}\left( {{{{\bar{\textbf{x}}}}}} \right) \) is positive. However, \({\textbf{f}}\left( {{{{\bar{\textbf{x}}}}}} \right) \) typically has several positive elements, and each of them can be chosen as the label, leading to different subsequent simplexes. Random selection of the label of vertex \({{{\bar{\textbf{x}}}}}\) usually results in many simplices generated during the integer algorithm and deteriorates the convergence of the sequence. Therefore, a systematic method is required to label vertices \({{{\bar{\textbf{x}}}}}\). Such a heuristic method based on numerous numerical experiments is presented in the sequel using an initial \(\left( {n + 1} \right) \)-simplex having \(n + 2\) vertices and a complete facet B having \(n + 1\) vertices \({\textbf{x}}^0,\; \ldots ,\;{\textbf{x}}^n\). The method is shown for \(n = 2\) in Figs. 2, 3 and 4. To create the complete facet \({{\bar{B}}}\), we consider the distances \(d_i\) \(\left( {i = 0,\; \ldots ,\;n} \right) \) between vertex \({\textbf{x}}^{n + 1}\) and all vertices of B (see Fig. 2). We arrange the lengths of these distances in increasing order. Next, we select the smallest one (in Fig. 2, \(d_1\)) and consider its terminal on \(B, {\textbf{x}}^m\) (in Fig. 2, \({\textbf{x}}^1\)). If it is possible, we assign the label of \({\textbf{x}}^m\) to vertex \({\textbf{x}}^{n + 1}\). Otherwise, we select the next smallest distance. In this manner, we obtain the other complete facet \({{\bar{B}}}\) defined by vertices \({\textbf{x}}^i, i = \left\{ {0,\; \ldots ,\;n} \right\} , i \ne m\) and \({\textbf{x}}^{n + 1}\) (see Fig. 3). The segment connecting the centroids of B and \({{\bar{B}}}\) is a solution path inside s. To create an adjacent simplex, we use \({{\bar{B}}}\) and the vertex obtained by reflecting vertex \({\textbf{x}}^m \) relative to the centroid of \({{\bar{B}}}\) (see Fig. 4). We continue the process that leads to a sequence of simplices.

Fig. 2
figure 2

Initial simplex with marked labels of each vertex of B

Fig. 3
figure 3

Creation of the other complete facet \({{\bar{B}}}\)

Fig. 4
figure 4

Creation of the adjacent simplex

5 Sketch of the Method for Fault Diagnosis and Examples

Fault diagnosis in analog circuits is an essential issue in the field of electronic circuit design [4, 8, 10, 13, 20, 22]. The most commonly considered types of faults are soft and hard faults. Soft faults are caused by deviations of circuit element values from their nominal values, and hard faults refer to catastrophic changes to a circuit or component. As mentioned in the introduction, solving nonlinear algebraic equations is often required to diagnose analog circuits. Nonlinear equations occur when trying to find the parameter values of faulty elements in so-called multiple soft fault diagnosis [24,25,26]. The procedures used in this area exploit a diagnostic test performed adequately to the type of circuit under test (linear, nonlinear, dc, ac), and a diagnostic equation is formulated that relates the measured quantities to the sought parameters. Such an equation, even for linear systems, is nonlinear, and its solution requires the application of appropriate numerical procedures. This problem does not exist in the approaches devoted to detecting or classifying defects belonging to predefined classes [9, 18, 21, 31, 35]. A sketch of the diagnostic procedure, which proposes using the integer algorithm concept described in the previous sections, is presented below.

5.1 Sketch of the Method

  1. 1.

    Perform the diagnostic test. Some voltages in the circuit driven by a selected set of input voltages are measured. The test is different for linear and nonlinear circuits, as explained through the examples presented in Sect. 5.2.

  2. 2.

    Denote the measured voltages by \(u_1,\; \ldots ,\;u_n\) and form a vector \({\textbf{u}} = \left[ {u_1 \; \ldots \;u_n \;} \right] ^{\,{\textrm{T}}}\). They depend on the circuit parameters \(x_1,\; \ldots ,\;x_n\) leading to the equations \(u_i = \varphi _i \left( {x_1,\; \ldots ,\;x_n } \right) , i = 1,\; \ldots ,\;n\). Thus, we write:

    $$\begin{aligned} {\textbf{u}} = {\varvec{\varphi }} \left( {\textbf{x}} \right) \end{aligned}$$
    (18)

    where \({\textbf{u}} = \left[ {u_1 \; \ldots \;u_n \;} \right] ^{\,{\textrm{T}}}, {\textbf{x}} = \left[ {x_1 \; \ldots \;x_n \;} \right] ^{\,{\textrm{T}}}, {\varvec{\varphi }}\left( {\textbf{x}} \right) = \left[ {\varphi _1 \left( {\textbf{x}} \right) \; \ldots \;\varphi _n \;\left( {\textbf{x}} \right) } \right] ^{\,{\textrm{T}}}\).

  3. 3.

    The circuit parameters \(x_i\) and \(i = 1,\; \ldots ,\;n\) are expressed in terms of the relative parameters \({{\hat{p}}}_i\), \(x_i = x_i^{{\textrm{nom}}} {{\hat{p}}}_i\), and \(i = 1,\; \ldots ,\;n\), where \(x_i^{{\textrm{nom}}}\) is the nominal value of the ith parameter. Thus, the test equation becomes:

    $$\begin{aligned} {\varvec{{{\bar{\varphi }}} }} \left( {{{{\hat{\textbf{p}}}}}} \right) - {\textbf{u}} = {\textbf{0}} \end{aligned}$$
    (19)

    where \({{{\hat{\textbf{p}}}}} = \left[ {{{\hat{p}}}_1 \; \ldots \;{{\hat{p}}}_n \;} \right] ^{\,{\textrm{T}}}\).

  4. 4.

    For the test equation (19), the Newton homotopy equation is written as:

    $$\begin{aligned} {\textbf{f}}_h \left( {{{{\hat{\textbf{p}}}}},\;\alpha } \right) = {\varvec{{{\bar{\varphi }}} }} \left( {{{{\hat{\textbf{p}}}}}} \right) - {\textbf{u}}^{{\textrm{nom}}} - \alpha \left( {{\textbf{u}} - {\textbf{u}}^{{\textrm{nom}}} } \right) = {\textbf{0}} \end{aligned}$$
    (20)

    where \({\textbf{u}}^{{\textrm{nom}}}\) is a vector of the voltages in the nominal circuit (i.e., the circuit with nominal values of all parameters \(x_i\)) and \( \alpha \) is a homotopy parameter.

  5. 5.

    The homotopy equation (20) can be rewritten as \({\textbf{f}}\left( {\textbf{p}} \right) = {\textbf{0}}\), where \({\textbf{p}} = \left[ {p_1 \; \ldots \;p_n \;,p_{n + 1} } \right] ^{\,{\textrm{T}}}\), \(p_1 = {{\hat{p}}}_1,\, \ldots ,\, p_n = {{\hat{p}}}_n, p_{n + 1} = \alpha \) is solved for \({\textbf{p}}\) using the integer algorithm.

As mentioned above, this study aims to develop an efficient method for solving nonlinear diagnostic equations to determine the real parameters of the elements satisfying these equations. This problem arises in any method that allows a complete diagnostic process, including verification methods. In these methods, the assumption of the fault of certain elements is verified by solving the diagnostic equation at a preselected test. The resulting parameter values are then compared with the ranges derived from the tolerances, and the fault of the elements associated with these parameters is concluded. The number of measured quantities must equal the number of identified parameters. Thus, the proposed method can be used to determine parameters for different classes of circuits with the preselected test. The test selection is an issue beyond the scope of the paper. The method’s effectiveness was confirmed in the laboratory for two circuits (Example 1 and Example 3). In Example 1, a linear circuit in the frequency domain was considered. The fault of the elements belonging to the testable sets was verified by measuring the rms values of the voltages at different frequencies. In Example 3, the verification process was performed in a nonlinear circuit, and the DC voltages at selected circuit nodes were measured during the measurements. In Example 2, the testing of the method’s effectivity was performed solely by simulation.

5.2 Examples

To describe the performance of the proposed method, we consider the three circuits shown in Figs. 57 and 8, and in all cases, we perform triple soft fault diagnosis. We terminated the computational process if no solution was determined after generating 10,000 simplexes (i.e., the homotopy parameter \(\alpha \) did not reach a value equal to 1). The calculations were performed for both variants of the initial simplex (see the end of Sect. 4.1.2). In the linear circuit of Fig. 5, the faulty parameters belong to the set \(\left\{ {R_1,\;R_2,\;R_3,\;R_4,\;R_5,\;R_6,\;C_1,\;{\textrm{and}}\;C_2 } \right\} \). In the nonlinear circuit shown in Fig. 7 designed in CMOS technology transconductance parameters, \(K_\textrm{p}\) of the MOS transistors are the faulty parameters. In the circuit shown in Fig. 8 designed in bipolar technology, the faulty parameters belong to the set \(\left\{ {R_1,\;R_2,\;R_3,\;R_4,\;R_5,\;R_6,\;R_7 } \right\} \).

Computations were performed on a PC with an Intel (R) Core (TM) i7-6700 processor, and we implemented the diagnostic procedure in the DELPHI programming environment.

5.2.1 Example 1

We consider the filter [8, 22, 26] based on the three operational amplifiers shown in Fig. 5. The nominal values of the parameters are given in the figure. The testability of this circuit, with the selected test point \(V_A\), is three, and there are 16 testable 3-element sets of the circuit parameters (see the reference [22]): \(\left\{ {R_1,\;R_2,\;C_1 } \right\} , \left\{ {R_1,\;R_2,\;R_6 } \right\} \), \(\left\{ {R_1,\;R_3,\;C_1 } \right\} , \left\{ {R_1,\;R_3,\;R_6 } \right\} , \left\{ {R_1,\;R_4,\;C_1 } \right\} , \left\{ {R_1,\;R_4,\;R_6 } \right\} , \left\{ R_1, R_5,\; C_1 \right\} \), \(\left\{ R_1, R_5,\; R_6 \right\} , \left\{ {R_1,\;R_6,\;C_1 } \right\} ,\left\{ {R_1,\;R_6,\;C_2 } \right\} , \left\{ {R_2,\;R_6,\;C_1 } \right\} , \left\{ {R_3,\;R_6,\;C_1 } \right\} \), \(\left\{ R_1, C_1, C_2 \right\} , \left\{ {R_4,\;R_6,\;C_1 } \right\} , \left\{ {R_5,\;R_6,\;C_1 } \right\} , \left\{ {R_6,\;C_1,\;C_2 } \right\} \). Thus, the method allows for diagnosing up to three faulty elements.

Fig. 5
figure 5

A Tow–Thomas filter

The circuit was built using a breadboard; three high-gain, internally compensated operational amplifiers of quad general-purpose op-amp LM 348-N connected to a \(\pm 15\)V supply; resistors; and capacitors with values for the fault-free circuit equal to \(R_1 = 29.97\,{\textrm{k}}\Omega , R_2 = 20.04\,{\textrm{k}}\Omega , R_3 = 10.04\,{\textrm{k}}\Omega , R_4 = 10.02\,{\textrm{k}}\Omega , R_5 = 20.03\,{\textrm{k}}\Omega , R_6 = 15.02\,{\textrm{k}}\Omega , C_1 = 100.7\,{\textrm{nF}}, C_2 = 99.60\,{\textrm{nF}}\). The circuit was laboratory tested using a measurement system consisting of a 34401A digital multimeter and DF1410 DDS function generator. To arrange the test, the voltages having rms values equal to 3 V and frequencies equal to 60, 100, and 150, all in Hz, were applied to the input node, and the rms values of the voltage \(V_A\) were read with an accuracy of 1 mV.

To investigate the method, 16 faulty cases corresponding to 16 testable 3-element sets, each including up to three faulty elements, were considered. The proposed diagnostic method uses the measurement data obtained in the real circuit, assuming that the unfaulty parameters have nominal values. We use a linear model of the operational amplifiers, shown in Fig. 6c, consisting of an input resistor \(100\;{\textrm{k}}\Omega \), an output resistor \(100\;\Omega \), and a voltage-controlled current source with a gain coefficient equal to \(1000\;{{\textrm{A}} / {\textrm{V}}}\). The model makes it possible to use the standard nodal method instead of the modified method and reduces the number of equations solved during each analysis. Because most circuits using operational amplifiers are strong negative feedback circuits, changing the model parameters within wide ranges does not affect the measurement results. With operational amplifier failure leading to operation in the saturation region, the linear model is inadequate, and this case is not considered in this study.

In all cases, the method correctly estimated the values of faulty parameters. The results of ten of the cases are summarized in Table 1. Because the values of the unfaulty elements are not precisely equal to the nominal values, some errors appear. The measured voltages of \(V_A\) at frequencies equal to 60, 100, and 150 Hz in the unfaulty circuit are 4.472, 4.990, and 2.682, respectively, all in volts. For the first fault in the table, the measured voltages of \(V_A\) were 2.567, 4.332, and 3.786 volts. The total diagnostic time for each case does not exceed two seconds.

Fig. 6
figure 6

Designation of the operational amplifier (a), a typical model with a voltage controlled voltage source (b), and the equivalent model used in the paper (c)

Table 1 Example 1—Results of the diagnosis

5.2.2 Example 2

We consider the differential amplifier shown in Fig. 7 with the load resistance \( R_\textrm{test} = 6.2\,{\textrm{k}}\Omega \). The channel width and length of all transistors are shown in Fig. 7. The MOS transistors are characterized by the Shichman–Hodges model built up in Level 1 of SPICE [28, 32]. The nominal parameters of the MOS transistors are as follows. PMOS transistors: \(\gamma = 0.6\,{\textrm{V}}^{0.5}, I_\textrm{S} = 10^{ - 14} \,{\textrm{A}}, K_\textrm{p} = 40\,\upmu {{{\textrm{A}}}/{{\textrm{V}}^{\textrm{2}} }}, \textrm{PHI} = 0.6\,{\textrm{V}}, R_\textrm{D} = R_\textrm{S} = 10\,\Omega \), \(v_{t_{\textrm{0}} } = - 0.90\,{\textrm{V}}, V_\textrm{T} = 25.86\,{\textrm{mV}}, R_\textrm{ds} = 1 \times 10^{12} \,\Omega \), NMOS transistors: \(\gamma = 0.5\,{\textrm{V}}^{0.5}, I_\textrm{S} = 10^{ - 14}\,{\textrm{A}}, K_\textrm{p} = 120\,\upmu {{{\textrm{A}}}/{{\textrm{V}}^{\textrm{2}} }}\), \(\textrm{PHI} = 0.6\,{\textrm{V}}, R_\textrm{D} = R_\textrm{S} = 10\,\Omega \), \(v_{t_{\textrm{0}} } = 0.80\,{\textrm{V}}, V_\textrm{T} = 25.86\,{\textrm{mV}}\), \(R_\textrm{ds} = 1 \times 10^{12} \,\Omega \). The intrinsic transconductance parameters, \({K_\textrm{p}}_i\), are considered possibly faulty. The faults can be caused by deviation of the gate oxide thickness or carrier mobility. To perform the diagnostic test, we choose the measurement nodes 1, 3, and 4 and apply input voltages \(V_\textrm{in1} = 2.6,V_\textrm{in2} = 2.5,V_{{\textrm{DD}}} = 5.0\), all in volts. Parameter faults were simulated using the SPICE program. The measurement accuracy was assumed to be 0.1 mV. The diagnosis was performed numerically.

Fig. 7
figure 7

Differential amplifier

Table 2 Example 2—Results of the diagnosis
Fig. 8
figure 8

Preamplifier circuit

Fifteen cases containing up to three faulty parameters were considered to study the method’s effectiveness. The diagnostic process was performed assuming that the healthy parameters had nominal values. Results are summarized in Table 2. In 14 cases, the method correctly estimated the values of the faulty parameters. The total diagnostic time for each case does not exceed two seconds.

In the study, \({K_\textrm{p}}\) parameter faults for all transistor combinations were considered. Faults corresponding to changes in the \({K_\textrm{p}}\) parameter up to approximately \(\pm 38\)% of the nominal value were considered. Only for combinations M2, M4, and M5 was no solution obtained in the assumed number of simplexes. To check whether this was due to the assumed parameter values (assumed failure), the diagnostic process was performed for several other parameter sets. Each time, the method failed. It is difficult to identify the reason for this behavior of the method. In nonlinear systems, multiple solutions of the test equations are more likely to occur (i.e., the test equations can be satisfied by different sets of values of the same parameters). Because the proposed method does not target such a problem, divergence or slow convergence can occur. In such cases, it is necessary to use a different diagnostic test.

5.2.3 Example 3

We now consider the preamplifier circuit, including seven resistors and two bipolar transistors, shown in Fig. 8. Nominal element values are shown in the figure. The circuit was built using a breadboard; a general-purpose high-current NPN transistor array CA 3083 (two of five transistors, T1 and T2 inside the chip, are used); and resistors with values for the fault-free circuit equal to \(R_1 = 6.810\,{\textrm{k}}\Omega \), \(R_2 = 2.703\,{\textrm{k}}\Omega , R_3 = 21.98\,{\textrm{k}}\Omega \), \(R_4 = 269.3\,{\textrm{k}}\Omega , R_5 = 42.82\,{\textrm{k}}\Omega \), \(R_6 = 282.3\,\Omega , R_7 = 283.8\,\Omega \). A DC diagnostic test is arranged for soft fault diagnosis. For this purpose, the output voltages \(V_A, V_B\), and \(V_C\) are read with an accuracy of 1 mV using a 34401A digital multimeter.

To describe the performance of this method, 40 faulty cases were considered, each including up to three faulty elements from the set \(R_1, R_2, R_3, R_4, R_5, R_6, R_7\). The diagnostic process was performed using the measurement data obtained in the laboratory and assuming that the unfaulty parameters have nominal values and the parameters of the Gummel-Poon model [28, 32], which characterizes the transistors as follows: BF = 210, BR = 16, \({\textrm{IKF}} = 0.1209\;{\textrm{A}}, {\textrm{IKR}} = 29.8 \times 10^{ - 3}\, {\textrm{A}}, {\textrm{IS}} = 10.000 \times 10^{ - 15}\, {\textrm{A}}, {\textrm{ISC}} = 116.12 \times 10^{ - 15}\, {\textrm{A}} \), \({\textrm{ISE}} = 99.086 \times 10^{ - 15} {\textrm{A}}\), NC = 2.0, NE = 1.88, NF = 1.005, NR = 1.0, RE = RB = 0, RC = 10 \(\Omega \). In 75% of the cases, the method correctly estimated the values of the faulty parameters. The ten cases’ results are summarized in Table 3. The measured voltages in the healthy circuit are 7.898, \(-\)5.756, and 1.940, all in volts. The measured voltages for the first fault in the table were 7.538, \(-\)5.822, and 3.369 volts. The total diagnostic time for each case does not exceed one second.

In circuits made in bipolar technology, due to strong exponential-type nonlinearities present in transistor models, the problem of ambiguity of solutions often arises. In addition, determining testability at a specified test for nonlinear circuits is a complex and open problem. Both problems mentioned above can lead to divergence or slow convergence of methods aimed at determining a single solution. In the cases where the method fails, this effect has been observed.

Table 3 Example 3—Results of the diagnosis

6 Conclusion

The primary goal of this study was to develop an efficient method for solving nonlinear equations with particular attention given to those occurring in fault diagnosis of analog circuits. The core point of the proposed method is the integer algorithm [34]. To date, this algorithm has not been used to solve nonlinear equations found in real-world problems but to obtain specific mathematical results (e.g., Sperner’s lemma from combinatorial topology). This study adapted the algorithm to solve various fault diagnosis problems of linear and nonlinear electronic circuits. The examples presented in this paper show that the method is a valuable tool for multiple soft fault diagnoses in electronic circuits. The effectiveness of the proposed method has been confirmed by laboratory and numerical experiments.

Future research should attempt to generalize the proposed method to search for multiple algebraic solutions to nonlinear equations. The problem of interest occurs both when analyzing certain classes of nonlinear systems, such as flip-flops, neural networks, and line receivers, and when diagnosing electronic systems. A typical homotopy method leads to the solution path starting at the homotopy parameter equal to 0 and ending at a value equal to one, which corresponds to the determination of the solution. If we continue the homotopy procedure, the path can pass through points where the value of the homotopy parameter equals one many times. The remaining coordinates of these points are successive solutions to the original system of nonlinear equations.