1 Introduction

The multivariate curve resolution (MCR) problem in chemometrics consists of factorizing a component-wise nonnegative data matrix \(D \in {\mathbb {R}}_+^{k \times n}\) of spectral data according to the bilinear Lambert-Beer law as

$$\begin{aligned} D=CS^T. \end{aligned}$$
(1)

If, for instance, D contains row-wise a sequence of spectra taken from an on-going chemical reaction with s chemical species, then (ideally) the columns of \(C \in {\mathbb {R}}_+^{k \times s}\) are the s time concentration profiles of the s chemical species. Further, the columns of \(S \in {\mathbb {R}}_+^{n \times s}\) are the associated pure component spectra. Typically, the factorization problem (1) has many solutions, namely component-wise nonnegative matrices C and S of the respective dimensions so that \(CS^T\) reconstructs D. The chemically true factors are among these solutions. This fact is known under the keyword of rotational ambiguity [1, 16, 17]. The sets of all feasible nonnegative factors C and S can be represented with respect to a low-dimensional basis of left- and right singular vectors of D by the set of feasible solutions (SFS), see among others [6, 9, 20, 24, 27, 28]. For systems with three chemical species (with \(s=3\)) the SFS is a bounded two-dimensional set. For the basic and important case of three-component systems Borgen and Kowalski [6] published in 1985 a geometric algorithm to construct the SFS. The construction of the SFS is explained in Section 2 and this geometric representation is also known as Borgen plots or Borgen–Rajkó plots in literature. A generalization for noisy, experimental data has been suggested in [12]. Various other geometrical and numerical approaches have already been developed, see the survey [9] and [13, 26, 28] for some specific techniques. In 2005 Rajkó and István [24] published analytical expressions for the inner boundary curve (IBC) of the SFS also known as the limiting curve and laid the foundations for an analytical solution of the three-component MCR problem. An improvement of this method was provided by Beyramysoltan et al. in 2014 [5]. Most of the above-mentioned publications underlies the important case of chemical systems with three species. We also make this restriction for the present work and assume that \(\text {rank}(D)=\text {rank}(C)=\text {rank}(S)=3\). This means for a singular value decomposition of the spectral data matrix D that three singular values are non-zero. Then the associated three left singular vectors of D are a basis of the column vectors of C and the associated right singular vectors also form a basis for representing the column vectors of the matrix factor S.

1.1 Data sets

The analytical studies in this work are accompanied and illustrated by evaluations for model problems. For the purpose of their comprehensibility the chosen dimensions are relatively small. A nonnegative 9-by-8 model matrix D is introduced in Appendix A. Its small dimensions ensure that the construction steps of the boundary curve elements of SFS can easily be studied. We remark that this example matrix has no background of a spectroscopic data set; however, this fact does not imply any restrictions on the generality of our approach.

Moreover, to illustrate practical chemical applications, we apply our approach to an experimental FT-IR spectroscopic data set of the catalyst formation within the rhodium-catalyzed hydroformylation process, for more details see [14]. This reaction subsystem consists of three main absorbing components—the olefin species, the acyl complex and the hydrido complex. The aldehyde product of this reaction is not seen in the spectral window. The spectral data matrix D is a \(850\times 645\) matrix, see Fig. 1. The associated time interval for the 850 spectra is \([4.7, 883.6]\text {min}\) and the 645 spectral channels are given in the wavenumber interval \([1962.3, 2117.6]\,\text {cm}^{-1}\). The ”true” pure component spectra and concentration profiles are obtained with the help of kinetic hard modelling and are also shown in Fig. 1. The results are presented in Sect. 5.1.

1.2 Organization of the paper

First, Sect. 2 introduces the geometric background of the nonnegative matrix factorization problem underlying multivariate curve resolution and introduces the SFS. The third section presents a geometric approach to construct the inner boundary curve of the SFS together with closed-form expressions of the coordinates of the boundary curve. So-called contact change values which are the key quantities for an algorithmic implementation of an IBC computation algorithm are discussed in Sect. 4. Finally, Sect. 5 contains a complexity analysis and proves further properties of the IBC. Complicated mathematical formula, two proofs and the pseudocode of the algorithms are placed in the appendices.

Fig. 1
figure 1

The data matrix and the true pure components of the FT-IR hydroformylation data set

1.3 Notation

Component-wise nonnegative matrices and vectors are simply called nonnegative and are represented for example by \(A\in {\mathbb {R}}_+^{c\times d}\). The colon notation [10] is used to specify columns or rows of a matrix. For instance, \(A_{i,:}\) designates the ith row vector of A and \(A_{:,j}\) is the jth column vector of A.

2 Geometric representation of the solution set

2.1 Inner polygon, outer polygon and the SFS

A standard approach to solving the MCR problem is based on singular value decompositions (SVD) [6, 20] for dimensionality reduction. Let \(D = U \Sigma V^T\) be a truncated singular value decomposition of the \(k\times n\) matrix D with the rank 3. Then the three nonzero singular values form the diagonal of the diagonal matrix \(\Sigma \in {\mathbb {R}}^{3 \times 3}\). The columns of \(U \in {\mathbb {R}}^{k \times 3}\) and \(V \in {\mathbb {R}}^{n \times 3}\) are the associated left and right singular vectors. An SVD is not unique even if the singular values are pairwise different. Then there is still an orientation ambiguity, namely that pairs of left and right singular vectors \((U_{:,i},V_{:,i})\) can be substituted by \((-U_{:,i},-V_{:,i})\) without changing the properties of an SVD. Within the SVD plane these substitutions correspond to an axis flip. To ensure that we use fixed axes orientations for the following analysis, we assume that the SVD satisfies

$$\begin{aligned} \max (V_{:,i})\ge \max (-V_{:,i}),\quad i = 1,2,3. \end{aligned}$$

In words, the entry with absolute maximum in each column of V is chosen to be positive. This orientation is used in FACPACK [26]. However it is possible to use different sign conventions depending on the application, for example, the SignFlip Function as suggested by Bro et al. in [7], which aims to provide stable orientations for series of slightly altered data matrices. It has to be noted that the orientation has no impact on the resulting nonnegative factorizations.

Any nonnegative factorization \(D=CS^T\) can be represented with respect to the bases of left and right singular vectors [21]. This means that a transformation \({\hat{T}} \in {\mathbb {R}}^{3 \times 3}\) exists so that

$$\begin{aligned} D = \underbrace{U \Sigma ( {\hat{T}}^{-1}}_{=C} \underbrace{{\hat{T}} ) V^T}_{=S^T}. \end{aligned}$$

The rows of \({\hat{T}}\) can be scaled according to

$$\begin{aligned} T_{i,:} = \frac{1}{{\hat{T}}_{i,1}}{\hat{T}}_{i,:},\quad i=1,2,3, \end{aligned}$$
(2)

which further reduces some degree of freedom of the set of solutions of the MCR problem. Each row of the transformation is element-wise multiplied with the reciprocal of its first element. Thus the first column \(T_{:,1}\) is an all-ones vector. This scaling is only permitted under the weak assumption of irreducibility of \(D^T D\), see for example Theorem 2.2 in [25], which ensures that the first column \({\hat{T}}_{:,1}\) contains no zeros. This mathematical property is a consequence of the Perron–Frobenius theory of nonnegative matrices. This row-scaling can be called the first singular vector scaling. Rajkó and István in [24] use a different scaling based on row sums of D. A one-one nonlinear transformation between these two scaling approaches exists showing their comparability [12]. This is closely related to Borgen norms, see [23].

Usually many matrices T exist which result in nonnegative factors C and S. This refers to the so-called factor ambiguity or rotational ambiguity underlying the set of solutions of the MCR problem, see [1] for an overview. For MCR problems with three chemical species, the set of possible nonnegative factors S, which can be called an SFS, can be represented by bounded sets in the two-dimensional real space. The same properties hold for the factor C. A formal definition of the SFS reads as follows.

Definition 1

The SFS (Set of Feasible Solutions) for the factor S is defined as

$$\begin{aligned}&{\mathcal {M}}_S = \left\{ x \in {\mathbb {R}}^{2\times 1} : \; \exists T \in {\mathbb {R}}^{3 \times 3},\; T_{1,2:3} = x^T,\; T_{:,1} = {\mathbf {1}},\; \text{ rank }(T) = 3,\; \right. \nonumber \\&\left. \qquad \qquad \qquad \quad C=U\Sigma T^{-1} \ge 0,\; S^T=TV^T \ge 0 \right\} \end{aligned}$$
(3)

with the three-dimensional all-ones column vector \({\mathbf {1}}\). Analogously, the SFS \({\mathcal {M}}_C\) for the other (dual) factor C can be determined by a similar construction based on \(T^{-1}\).

Note that the existence of a regular T in Definition 1 implies the correctness of the equation \(D = CS^T\), because

$$\begin{aligned} D = U\Sigma V^T = U\Sigma (T^{-1} T) V^T = (U\Sigma T^{-1}) (T V^T) = CS^T. \end{aligned}$$

The inherent structure of the nonnegative matrix factorization problem imposes various mathematical and geometric restrictions on the SFS. Geometric construction approaches and many numerical approximation algorithms have been suggested to construct or to compute the SFS. See the references [6, 12, 15, 19, 24] and many others. A geometrically constructed SFS for noise-free, ideal data goes back to the influential work by Borgen and Kowalski [6]. A generalization to noisy, experimental data has been suggested in [12, 29].

Key objects for the construction of the SFS are an outer polygon \({\mathcal {F}}\), where the letter F refers to the outdated name FIRPOL, and an inner polygon \({\mathcal {I}}\) which stands for INNPOL. These polygons exist for the factor C and also for S. The respective target can be expressed by an index, that is we consider \({\mathcal {I}}_C\) and \({\mathcal {F}}_C\) for the factor C and \({\mathcal {I}}_S\) and \({\mathcal {F}}_S\) for the factor S. The precise definitions of these polygons read as follows.

Definition 2

The polygon \({\mathcal {F}}\) is the intersection of affine half-planes

$$\begin{aligned} {\mathcal {F}} = \left\{ x \in {\mathbb {R}}^{2} : x^T a_i \ge -1,\quad i = 1,\ldots , m_a \right\} \end{aligned}$$

and \({\mathcal {I}}\) is defined as

$$\begin{aligned} {\mathcal {I}} = \mathrm {convhull} \left( \left\{ b_j \in {\mathbb {R}}^{2} : j = 1, \ldots , m_b \right\} \right) \end{aligned}$$

where for the factor S the \(a_i\) and \(b_i\) are given by

$$\begin{aligned} a_i = \frac{(V^T)_{2:3,i}}{(V^T)_{1,i}}, \quad m_a = n, \quad b_j = \frac{((U \Sigma )_{j,2:3})^T}{(U \Sigma )_{j,1}}, \quad m_b = k \end{aligned}$$

and similarly for the factor C

$$\begin{aligned} a_i = \frac{((U \Sigma )_{i,2:3})^T}{(U \Sigma )_{i,1}}, \quad m_a = k, \quad b_j = \frac{(V^T)_{2:3,j}}{(V^T)_{1,j}}, \quad m_b = n. \end{aligned}$$

The outer polygon \({\mathcal {F}}\) is a superset of \({\mathcal {M}}\). This means that \( {\mathcal {F}}_C \supset {\mathcal {M}}_C\) and \({\mathcal {F}}_S \supset {\mathcal {M}}_S\). Further, \({\mathcal {F}}\) encloses the inner polygon \({\mathcal {I}}\), see for example [20]. See Section 2.3 for more details on the geometric construction and in which way the inner polygon serves as an “interior” restriction for the SFS.

2.2 Duality principles in MCR

Definition 2 strongly motivates the concept of duality, as \({\mathcal {F}}_C\) and \({\mathcal {I}}_S\) as well as \({\mathcal {F}}_S\) and \({\mathcal {I}}_C\) are generated by the same vectors. The duality theory for these pairs of inner and outer polygons has its roots in [11, 22] and has also been explored in [28]. The basic relations of duality are briefly presented below.

Definition 3

A nonzero (point) \(a \in {\mathbb {R}}^{2}\) is dual to the affine line

$$\begin{aligned} \left\{ x \in {\mathbb {R}}^{2} : x^T a = -1 \right\} . \end{aligned}$$
(4)

Remark 1

The line construction (4) is closely related to the Hesse normal form of a line. From \(x^T a = -1\) we get the equivalent condition in the shape of the Hesse normal form for a nonzero vector \(a\in {\mathbb {R}}^{2}\)

$$\begin{aligned} x^T\frac{a}{\Vert a\Vert } - \left( - \frac{1}{\Vert a\Vert } \right) =0. \end{aligned}$$

This describes an affine straight line oriented orthogonal to the vector a whose smallest distance \(1/\Vert a\Vert \) to the origin is attained in the point \(-a/\Vert a\Vert ^2\).

Duality induces various relations between the inner and outer polygon and the SFS for the two factors C and S. If we want to refer to the so-called primal factor, then we use the notation \({\mathcal {F}}, {\mathcal {I}}, {\mathcal {M}}\) and add a subscript d for the dual factor, namely \({\mathcal {F}}_d, {\mathcal {I}}_d, {\mathcal {M}}_d\). In the following examples, S is chosen as the primal factor, unless stated otherwise. Definition 3 enables useful relationships between the two (dual) geometric representations. Most notably, a vertex of \({\mathcal {I}}\) is dual to a line that contains a facet of \({\mathcal {F}}_d\) and a line that contains a facet of \({\mathcal {I}}\) is dual to a vertex of \({\mathcal {F}}_d\). Some duality relations are illustrated in Fig. 2. For the mathematical proofs of these relations see [3, 28]; a deepened analysis is planned for a forthcoming publication. These relations allow us to continue the theoretical and practical considerations without having to specify which of the two factors is the primal one.

With the help of duality the inner and outer polygon can be determined easily. This as well as the convex hull algorithm from Matlab [18] was used in the improved method of Beyramysoltan et. al. [5]. In our method we assume that the inner and outer polygons have already been calculated.

Fig. 2
figure 2

Seven duality relations illustrated for the three-component model problem. The numbers represent different cases of duality. The primal polygons are shown on the left. The dual objects are plotted on the right. The same color is used for dual pairs of points and affine straight lines. Vertices of one polygon correspond to lines that contain edges of the dual polygon. The relations between \({\mathcal {F}}\) and \({\mathcal {I}}_d\) as well as \({\mathcal {I}}\) and \({\mathcal {F}}_d\) are reflected in the chosen color scheme. The lower two plots illustrate these duality relations for points that are not on the boundary of the respective polygons (Color figure online)

2.3 Geometric construction of the set of feasible solutions

The polygons \({\mathcal {F}}\) and \({\mathcal {I}}\) are the key-geometric objects for the construction of the SFS. The construction approach was introduced by Borgen and Kowalski [6] with their simplex rotation algorithm. According to (2) and (3) a factorization of D corresponds to a triangle with the three vertices \(T_{1,2:3}\), \(T_{2,2:3}\) and \(T_{3,2:3}\). Such a factorization \(D=CS^T\) is feasible, that is it yields nonnegative factors C and S, if and only if the triangle includes the inner polygon \({\mathcal {I}}\) and is enclosed by the outer polygon \({\mathcal {F}}\); for these fundamental relations see for example Theorem 3.11 in [12]. Each vertex of the triangle represents a possible spectral profile or a possible concentration profile of a pure component. Consequently, the nonnegative matrix factorization problem is equivalent to the geometric problem of determining a nested triangle with the mentioned properties. The SFS is the set of all vertices of all feasible triangles and expresses the factor ambiguity of the nonnegative matrix factorization problem. According to [6] the geometric construction of the set of all factorizations can be achieved by the construction of boundary cases. These boundary cases are explained next.

A Borgen-a, b-triangle is defined as a triangle that lies between the boundaries of the inner polygon \({\mathcal {I}}\) and the outer polygon \({\mathcal {F}}\), that has a vertices located on the boundary of \({\mathcal {F}}\), and b of its edges touch \({\mathcal {I}}\). It is a generalization of the Borgen triangle, as given in [5, 24] or the limiting simplex in [6]. Such triangles approximate the SFS and are called Borgen-3, 3-triangles according to our definition.

Furthermore, each feasible matrix T, according to Definition 1, results in a Borgen-ab-triangle. If the triangle does not touch neither \({\mathcal {F}}\) nor \({\mathcal {I}}\), then it is a Borgen-0, 0-triangle.

Main focus for the construction of the the SFS is on Borgen-2, 3-triangles \({\mathcal {T}}\). They consist of two outermost vertices with three innermost edges, that is they have two vertices located on the boundary of \({\mathcal {F}}\), and all their edges touch the inner polygon \({\mathcal {I}}\). Without rotation this third vertex is as close as possible to the inner polygon and represents a boundary of the SFS through the limitations imposed by the positions of \({\mathcal {F}}\) and \({\mathcal {I}}\), and we call it a free vertex. Such innermost boundary points of the SFS are the free vertices. A typical triangle satisfying these conditions is illustrated for the primal factor in Fig. 3. The primal triangle is plotted green with vertices plotted in cyan. Figure 3 also shows the dual lines (in cyan) which form the dual triangle \({\mathcal {T}}_d\). Note that the dual triangle of a Borgen-2, 3-triangle is always a Borgen-3, 2-triangle.

By rotating the Borgen-2, 3-triangle around the inner polygon \({\mathcal {I}}\) a continuous curve of innermost boundary points is constructed. During the rotation process the two outermost vertices are continuously moved to the boundary of the outer polygon and the innermost vertex is always constructed according to the rules given above. The curve is given by the positions of all free vertices which have been constructed during the triangle rotation process. Parts of this curve form the inner boundary of the SFS whereas the outer boundary of the SFS is determined by the boundary of the outer polygon. Hence we call the constructed curve the inner boundary curve (IBC) of the given three-component problem and refer to it as \({\mathcal {B}}\). If we intersect the IBC with the boundary of the outer polygon \({\mathcal {F}}\), then the enclosed finite regions which are located in the outer polygon define the SFS. These areas are plotted gray in Fig. 3. In this figure, the IBC is plotted by a black line. Its parts in the outer polygon are of importance for the SFS construction. However, the IBC curve also exists outside the polygon \({\mathcal {F}}\), see Fig. 3.

Fig. 3
figure 3

Duality of a Borgen-2, 3-triangle \({\mathcal {T}}\) whose vertices are plotted in cyan (left plot) for the model problem as given in Appendix A. The dual triangle \({\mathcal {T}}_d\) (a Borgen-3, 2-triangle) is shown in the right plot and is drawn with edges in cyan. The free vertex is a point on the IBC \({\mathcal {B}}\) (Color figure online)

In many cases the IBC is a continuous (closed) curve. However, in some situations the IBC can tend to infinity which prevents the existence of a continuous or closed IBC. An example situation is shown in Fig. 4. A singularity of the IBC occurs, if the dual triangle \({\mathcal {T}}_d\) does not include the origin for certain rotation angles. The SFS is not affected by such singularities of the IBC since this occurs outside the outer polygon where the feasibility of triangles is not satisfied.

Fig. 4
figure 4

We modify the model problem in order to construct a rare limit case and consider the IBC \({\mathcal {B}}\) for the model matrix (13) after subtraction of 9 from each of its matrix elements. Left: A Borgen-2, 3-triangle \({\mathcal {T}}\) does not always exist (see green lines) for the primal problem. Right: The corresponding dual triangle \({\mathcal {T}}_d\) violates the necessary condition of enclosing the origin. Then the IBC \({\mathcal {B}}\) is not closed, but tends to infinity (Color figure online)

3 Function representation of the IBC

In 2005 Rajkó and István [24] published analytical expressions for a piecewise representation of the IBC. Here we deepen this analysis, introduce a general approach of presenting the IBC by piecewise analytical expressions in function form on the basis of contact change values, generalize the classical approach by using duality arguments and derive analytical expressions with a focus on their numerical stability. The goal is to present a simple, efficient and stable algorithmic implementation by using duality relations.

3.1 Derivation of a closed-form expression for points on the IBC

The Borgen-2, 3-triangles construction only requires the coordinates of the vertices of \({\mathcal {I}}\) and also the edges of \({\mathcal {F}}\). The location of the free vertex depends on these given parameters, as well as on the triangle rotation. See Fig. 5 for the variable names of the Borgen-2, 3-triangle \({\mathcal {T}}\) and its dual Borgen-3, 2-triangle \({\mathcal {T}}_d\). All points are denoted by lowercase letters with a dot above. The corresponding dual lines are written with a bar above the same lowercase letter. The edges of the polygons are also represented by their corresponding line equations and no further distinction between lines and edges is required. The subscript letters l and r stand for left and right with the view direction from the point \({\dot{t}}\) of the dual plot.

Fig. 5
figure 5

The primal Borgen-2, 3-triangle \({\mathcal {T}}\) (left plot) and the the dual Borgen-3, 2-triangle \({\mathcal {T}}_d\) (right plot). Dual objects (pairs of a point in one plot and a line in the other plot) are plotted by the same color. The primal triangle \({{\mathcal {T}}}\) corresponds to the dual triangle \({{\mathcal {T}}}_d\). Further, \({{\mathcal {F}}}\) is dual to \({{\mathcal {I}}}_d\) and \({\mathcal I}\) is dual to \({{\mathcal {F}}}_d\). Variable names carry a dot above the variable letter if they refer to points. A line above the letter indicates a variable name of an affine line. The same letter is used for dual variables. For example, \({\dot{t}}\) is dual to \({\bar{t}}\) (Color figure online)

Rajkó and István [24] and Beyramysoltan et. al. [5] use coordinate pairs for the points \({\dot{e}} = (x,y)\) and slope-intercept form for lines

$$\begin{aligned} {\bar{e}} = \left\{ (x,y) : y = g+h x \right\} . \end{aligned}$$

We prefer to write line equations in the Hesse form, see (4),

$$\begin{aligned} {\bar{e}} = \left\{ (x,y)^T \in {\mathbb {R}}^{2} :e_1 x + e_2 y = -1 \right\} , \quad {\dot{e}} =(e_1, e_2)^T \in {\mathbb {R}}^2\setminus (0,0)^T. \end{aligned}$$
(5)

This offers a double advantage. The line \({\bar{e}}\) is dual to the point \({\dot{e}}\); compare this with Definition 3. Consequently, no computation is required for this transformation and no numerical precision is lost. Only lines passing through the origin cannot be of the form (5). However, duality does not allow lines through the origin. Thus (5) is the appropriate notation for our scope of application and increases the numerical stability.

The approach [24] considers a rotation of a triangle as a function of the x-coordinate of \({\dot{s}}_l\). Here we choose the angle \(\alpha \) between the positive x-axis and a vector towards \({\dot{t}}\) in the dual plot as the free variable. This representation has some advantages with respect to the piecewise boundary construction. Thanks to duality the change in \(\alpha \) corresponds to the rotation of \({\bar{t}}\) around \({\mathcal {I}}\). Thus, a full rotation of the tangent around the \({\mathcal {I}}\) takes place for \(\alpha \in \left[ -\pi , \pi \right) \). This is possible because the origin is included in \({\mathcal {I}}\) and \({\mathcal {F}}\), see [20].

The goal is to construct a closed-form expression for the points \({\dot{p}}\) on the IBC that depends on \(\alpha \) and has five additional parameters and \(o_r\). These parameters fix the local geometric setup and allow us to determine the associated point on the IBC. Both the point form and the line form can be used for the parameter representation because they are equivalent. The construction begins with the calculation of the point \({\dot{t}}=(t_1,t_2)^T\). For this purpose we consider the geometric situation shown in Fig. 5 where the intersection of the vertex \({\dot{t}}\) with the line is to be determined. The line equation reads

(6)

with \({\dot{t}}=(t_1,t_2)^T\). The relation

$$\begin{aligned} \tan \alpha =t_2/t_1 \end{aligned}$$
(7)

simply holds in the first quadrant, but is also true in all other quadrants. These quadrants refer to a coordinate system fixed at the origin (0, 0). Figure 5 shows (upper plot) a case in which \({\dot{t}}\) is located in the second quadrant. Elimination of \(t_1\) and \(t_2\) in Equations (6) and (7) results in

(8)

Among other mathematical representations, we prefer (8) due to its numerical stability for \(\alpha \) values close to \(\pm \frac{\pi }{2}\), since for and in the limit \(\alpha \rightarrow \pm \frac{\pi }{2}\) we get

Further construction steps consist of two generic, repeated operations:

  1. 1.

    Calculate the point \({\dot{e}}=(e_1,e_2)^T\) of intersection of the two lines \({\bar{g}}=\left\{ (x,y)^T \in {\mathbb {R}}^{2} :g_1 x + g_2 y = -1 \right\} \) and \({\bar{h}}=\left\{ (x,y)^T \in {\mathbb {R}}^{2} :h_1 x + h_2 y = -1 \right\} \) by solving a 2-by-2 linear system of equations

    $$\begin{aligned} \begin{pmatrix} e_1 \\ e_2 \end{pmatrix}= \begin{pmatrix} g_1 &{} g_2 \\ h_1 &{} h_2 \end{pmatrix}^{-1}\begin{pmatrix} -1 \\ -1 \end{pmatrix} =\frac{1}{g_1h_2-g_2h_1} \begin{pmatrix} g_2-h_2 \\ h_1-g_1 \end{pmatrix}, \end{aligned}$$
    (9)

    where degenerate cases of identical or non-crossing lines are excluded if \(g_1h_2-g_2h_1\ne 0\).

  2. 2.

    Solving the dual problem of determining a line \({\bar{e}}=\left\{ (x,y)^T \in {\mathbb {R}}^{2} :e_1 x + e_2 y \right. \left. = -1 \right\} \) that passes through two different points \({\dot{g}}=(g_1,g_2)^T\) and \({\dot{h}}=(h_1,h_2)^T\). This yields the same linear system of equations as considered above with the solution

    $$\begin{aligned} e_1 = \frac{g_2-h_2}{g_1h_2-g_2h_1}, e_2 = \frac{g_1-h_1}{g_1h_2-g_2h_1}. \end{aligned}$$
    (10)

Numerical stability is a critical issue in the evaluation of the various mathematical terms derived here. In general, we present a set of expressions with the best numerical stability as found by testing various ways of computing the IBC curve. The steps for the construction of the IBC point \({\dot{p}}\) can be accomplished via the primal triangle \({\mathcal {T}}\) and/or the dual triangle \({\mathcal {T}}_d\), as the choice of line equation allows a simple transformation from one to another. All the possible construction routes for \({\dot{p}} = (p_1,p_2)\) are illustrated in Fig. 6. Route #3 in Fig. 6 only performs computations within the primal plot to determine \({\dot{p}}\), and this route is similar to the approach of Rajkó and István [24] as well as Beyramysoltan et. al. [5]. A discussion on the best route for an algorithmic implementation follows below.

Fig. 6
figure 6

Possible derivation routes for the boundary curve by using duality relations underlying the nonnegative matrix factorization problem. Some of the steps refer to the primal triangle and others to the dual triangle. Green color is used if the coordinates of a point are calculated from two lines. Blue color indicates if a line is calculated from two points (Color figure online)

In dependence on the angle \(\alpha \) and the two-dimensional vector parameters and \(o_r\) we get the following analytical expressions for \({\dot{p}}=(p_1,p_2)^T\)

$$\begin{aligned} \begin{aligned} p_1&= \frac{c_{x0}+c_{x1}\tan (\alpha )+c_{x2}\tan ^2(\alpha )}{c_{d0} + c_{d1}\tan (\alpha ) + c_{d2}\tan ^2(\alpha )},\\ p_2&= \frac{c_{y0}+c_{y1}\tan (\alpha )+c_{y2}\tan ^2(\alpha )}{c_{d0} + c_{d1}\tan (\alpha ) + c_{d2}\tan ^2(\alpha )}, \end{aligned} \end{aligned}$$
(11)

where complicated formula for the nine coefficients \(c_{x0}, c_{x1}, c_{x2}, c_{y0}, c_{y1}, c_{y2}, c_{d0}, c_{d1}\) and \(c_{d2}\) are given in Appendix B.

3.2 Contact change values

The IBC is the set of all constructable points \({\dot{p}}\). The true complexity of the Expression (11) lies in the fact that the parameters and \(o_r\) change in dependence on the angle \(\alpha \). The reason for this is that the contact conditions of the Borgen-2, 3-triangle changes with the rotation angle \(\alpha \) and so do the parameter values. This concept of parameter values underlying \({\dot{p}}\) changing at certain values of \(\alpha \) is similar to the approach of contact change points by Aggarwal et al. [2].

Definition 4

A value \(\alpha _i \in \left[ -\pi , \pi \right) \) for \(i=1, \ldots , m_c\) is called the i-th contact change value if one of the vertices of the corresponding Borgen-2, 3-triangle coincides with a vertex of \({\mathcal {F}}\) or if one of the edges of the Borgen-2, 3-triangle is collinear with an edge of \({\mathcal {I}}\). The corresponding point \({\dot{p}}(\alpha )\) on the IBC is called the contact change point. If more than a single vertex or edge is responsible for the same contact change value, then they are still counted separately.

The contact change values \(\alpha _i\) partition the angle interval \([-\pi ,\pi )\) in subintervals

$$\begin{aligned} -\pi =\alpha _0\le \alpha _1\le \cdots \le \alpha _i\le \alpha _{i+1}\le \cdots \le \alpha _{m_c}\le \alpha _{m_c+1} = \pi . \end{aligned}$$

Each subinterval \(\left[ \alpha _i, \alpha _{i+1} \right) \) stands for a unique set of parameters used in the construction of the Borgen-2, 3-triangle. The parameters change at each contact change value. Closed-form expressions can be derived for \({\dot{p}}\) in each interval. All this results in the IBC function for all angle values \(\alpha \in [-\pi ,\pi )\).

Definition 5

The IBC function is an interval-wise defined function with changing sets of parameters depending on the interval. The dependence on the particular interval is expressed by an additional superindex in brackets. Thus we consider

$$\begin{aligned} p: [ -\pi , \pi ) \rightarrow {\mathbb {R}}^2, \quad \alpha&\mapsto {\left\{ \begin{array}{ll} p^{[m_c]}(\alpha ) &{} \text { for } \alpha \in \left[ \alpha _0, \alpha _{1} \right) ,\\ p^{[1]}(\alpha ) &{} \text { for } \alpha \in \left[ \alpha _1, \alpha _{2} \right) ,\\ \quad \vdots \\ p^{[i]}(\alpha ) &{} \text { for } \alpha \in \left[ \alpha _i, \alpha _{i+1} \right) ,\\ \quad \vdots &{}\\ p^{[m_c]}(\alpha ) &{} \text { for } \alpha \in \left[ \alpha _{m_c}, \alpha _{m_c+1} \right) ,\\ \end{array}\right. } \end{aligned}$$

where \(p^{[i]}(\alpha )\) equals \({\dot{p}}\) by (11) in the i-th interval \(\alpha \in \left[ \alpha _i, \alpha _{i+1} \right) \) with its specific (and in this interval constant) set of parameters.

The repetition of the function \(p^{[m_c]}(\alpha )\) in the first and the last subinterval of \([-\pi ,\pi )\) reflects the fact that \(\alpha =\pi \) is not necessarily a contact change value, but only a point in which the upper and lower semicircles meet.

The approach of Beyramysoltan et. al. [5] suggests to only calculate the IBC function for the intervals which result in the points \({\dot{p}}\) that are located in \({\mathcal {F}}\), however this requires the search for all Borgen-3, 3-triangles. This method does not provide any significant improvement of the calculation time for our implementation.

4 Algorithmic approach for constructing the boundary curve

The main complexity of the boundary curve construction consists in finding the contact change values \(\alpha _i\). Interval-wise the associated parameter sets are fixed and they change from one to the next interval. This section deals with some overall considerations of an algorithmic solution of this problem, but is not an attempt at a complete generalization of all possible approaches. We explain an approach based on determining tangents of a polygon by using a convex hull construction. Alternative algorithms are possible, for instance those which are based on determining the intersection of an affine line with a general polygon. Here, we prefer to compute the contact change values by means of a convex hull algorithm. This provides the parameters for the construction route \(\#1\) shown in Fig. 6.

Contact change values can be categorized into three main types and different steps are to be taken to find them all. The pseudo-code for the three types and both approaches can be found in Appendix C.

4.1 Contact change values of the first kind \(\alpha ^1\): Primal inner edge coincidence

The contact change values of the first kind represent the changing parameter values in the top level of Fig. 6. This is a situation in which an edge of the primal triangle \({\mathcal {T}}\) completely covers an edge of the inner polygon. This situation is dual to the geometric incidence of a vertex of the dual outer polygon with a vertex of the dual triangle \({\mathcal {T}}_d\). Hence, each vertex of the dual outer polygon \({\mathcal {F}}_d\) corresponds to a specific contact change value of the first kind. Therefore, we find all contact change values \(\alpha ^1\) by calculating the two-argument arctangent values (inverse tangent value) of each vertex of \({\mathcal {F}}_d\). By running through such contact change values of the first kind, the present parameter is replaced by the next, directly following edge of \({\mathcal {F}}_d\). Figure 7 illustrates such a contact change value of the first kind \(\alpha ^1\) in the primal and dual representation. Additionally, see Fig. 8 for the construction. We call this situation a primal inner edge coincidence.

Fig. 7
figure 7

A contact change value of the first kind \(\alpha ^1\) for the model problem is illustrated in the primal SFS (left) and the dual SFS (right). For such contact change values an edge \({\bar{t}}\) of \({\mathcal {T}}\) completely covers an edge of the primal triangle \({\mathcal {I}}\), see the lowermost green line in the left plot. In the dual plot this corresponds to a vertex \({\dot{t}}\) of \({\mathcal {T}}_d\) (uppermost green circle in the right plot) which coincides with a vertex of \({\mathcal {F}}_d\) (Color figure online)

Fig. 8
figure 8

Calculation of a contact change value of the first kind \(\alpha ^1\) from Fig. 7 by computing the inverse tangent (arctan) value which corresponds to the (marked) vertex of the dual outer polygon (right subplot)

4.2 Contact change values of the second kind \(\alpha ^2\): Primal outer vertex coincidence

Contact change values of the second kind concern a primal outer vertex coincidence, which is explained next. Such contact change values correspond to changing parameter values in the second level (from the top) of Fig. 6, that is, \({\dot{u}}_l\) or \({\dot{u}}_r\) changes its value or equivalently \({\bar{u}}_l\) or \({\bar{u}}_r\) in the dual plot. We calculate two tangents of \({\mathcal {I}}\) for each vertex of \({\mathcal {F}}\) by computing the convex hull of vertices of \({\mathcal {I}}\) together with a single vertex of \({\mathcal {F}}\). Two edges of this convex hull are the desired tangents \({\bar{t}}\). The algorithmic pseudocode of these steps is listed in Appendix C and contains the details on the convex hull construction.

Without additional effort we transform the two tangents to the line \({\bar{t}}\) and the dual point \({\dot{t}}\). Then \(\alpha ^2\) is the two-argument inverse tangent value of the point \({\dot{t}}\). The change of parameters \(u_l\) or \(u_r\) for the IBC function is given by the following edge of \({\mathcal {F}}\). See Fig. 9 for an illustration and Fig. 10 for the construction.

Fig. 9
figure 9

A left contact change value of the second kind \(\alpha ^{2l}\) for the model problem. The vertex \({\dot{s}}_l\) of \({\mathcal {T}}\) coincides with a vertex of \({\mathcal {F}}\) and the edge \({\bar{s}}_l\) of \({\mathcal {T}}_d\) contains an edge of \({\mathcal {I}}_d\)

Fig. 10
figure 10

The calculation of the left contact change value of the second kind \(\alpha ^{2l}\) from Fig. 7

4.3 Contact change values of the third kind \(\alpha ^3\): A second primal inner edge coincidence

The contact change values of the third kind represent the changing parameter values in the third level (from the top) of Fig. 6, that is, \(o_l\) or \(o_r\) changes its value. So we distinguish such contact change values of the left and the right type. See Fig. 5 on \(o_l\) or \(o_r\) and all further variables. The contact change values of the third kind refer to a geometric setup which is similar to that of the first kind. However, due to a different orientation of the inner edge coincidence an active edge \(o_l\) or \(o_r\) changes its value. Compare this with Sect. 4.1 where the edge is changed.

We calculate the two tangents of \({\mathcal {I}}_d\) for each vertex of \({\mathcal {F}}_d\) with the convex hull algorithm. If the left contact change value of the third kind is obtained by constructing the dual triangle \({\mathcal {T}}_d\), then the respective vertex of \({\mathcal {F}}_d\) represents the point \({\dot{q}}_l\) and the tangent stands for the line \({\bar{s}}_l\).

Then we use the dual point \({\dot{s}}_l\) of the line \({\bar{s}}_l\). The point \({\dot{s}}_l\) lies on \({\mathcal {F}}\) and it allows us to obtain the left and the right tangents of \({\mathcal {I}}\) by means of the convex hull algorithm. One of the tangents is the line \({\bar{q}}_l\) and can be discarded. The other tangent is \({\bar{t}}\). Then it can be transformed to the dual point \({\dot{t}}\) and its 2-argument inverse tangent is the desired contact change value \(\alpha ^3\). A right contact change value of the third kind can be obtained by following the same steps with the other tangent of the \({\mathcal {I}}_d\).

The change of either parameter \(o_l\) or \(o_r\) for the construction of the IBC function consists of substituting the present edge by the following edge of \({\mathcal {F}}\). See Fig. 11 for an illustration of the geometric setup and Fig. 12 for the construction.

Fig. 11
figure 11

A right contact change value of the third kind \(\alpha ^{3r}\) for the model problem. The edge \(\bar{q}_r\) of \(\mathcal {T}\) covers an edge of \(\mathcal {I}\) and the vertex \(\dot{q}_r\) of \(\mathcal {T}_d\) coincides with a vertex of \(\mathcal {F}_d\)

Fig. 12
figure 12

The calculation of the right contact change value of the third kind \(\alpha ^{3r}\) for the geometric situation as shown in Fig. 7

4.4 Computing the IBC function

Once we have determined all contact change values together with their corresponding changing parameters, they are sorted in ascending order. Each contact change value changes only a single pair of parameters whereas the remaining parameters can be adopted from the previous subinterval. This easily allows us to fill the parameter table for all subinterval as introduced in Definition 5. A subsequent evaluation of the analytical expressions (11) yields the IBC as a function of the rotation angle \(\alpha \) in each of the subintervals.

The IBC function can be evaluated with any desired precision. The precision is only limited by the computer arithmetic used. Hence the presented approach is a truly analytical approach. Further, the accuracy of the IBC curve can be adapted to any level of precision for regions of particular interest. However, in most practical situations the double precision (64 bit) arithmetic of a standard personal computer appears to be sufficient for most applications. In a final step the SFS is found as the intersection of the exterior of the IBC curve with the outer polygon \({\mathcal {F}}\).

5 Discussion and further result

Next, an application is presented for the three-component consecutive chemical reaction system as introduced in Section 1.1. Further, we provide some properties of the IBC functions and of its algorithmic evaluation. Our analysis also encompasses a complexity analysis of the algorithm and the discussion of some problematic cases.

5.1 Application to an experimental problem

The structure of the FT-IR data set is explained in 1.1 and the three concentration profiles and the associated spectra of the pure components are shown in Fig. 1. Here the analysis with the IBC algorithm follows. \({\mathcal {F}}_S\) is spanned by 217 points and \({\mathcal {F}}_C\) - by 103 points. The outer boundaries required for our algorithm are calculated using the polygon inflation algorithm for noisy data, see [25, 26, 29] and then the inner boundaries are found with the help of duality. This step is also very similar to the use of duality in [5]. Then the IBC algorithm is applied and Fig. 13 shows the resulting SFS for both factors in gray color. \({\mathcal {B}}_S\) contains 743 subintervals and subfunction. \({\mathcal {B}}_C\) contains 857 subintervals. The total calculation time for the IBC of both factors typically was less than 0.6 seconds in a Matlab 2019b (single core) implementation running on a standard desktop computer (3.6GHz Intel CPU).

Fig. 13
figure 13

The IBC \({\mathcal {I}}\), the outer polygon \({\mathcal {F}}\), the inner polygon \({\mathcal {I}}\), the SFS \({\mathcal {M}}\) for both factors of the experimental FT-IR spectroscopic data set as introduced in Sect. 1.1. Furthermore, the triangles that correspond to the true pure components in Fig. 1 are shown and are denoted by \(\widehat{{\mathcal {T}}}_S\) and \(\widehat{{\mathcal {T}}}_C\) respectively

5.2 Number of contact change values

The number of contact change values equals the number of subfunctions of the piecewise-defined IBC function. Hence this number is a meaningful key indicator for the total computing time.

Let \(m_{\mathcal {I}}\) be the number of vertices of \({\mathcal {I}}\) and \(m_{\mathcal {F}}\) be the number of vertices of \({\mathcal {F}}\). The number of the contact change values of the first kind is exactly \(m_{\mathcal {I}}\). The number of the left contact change values of the second kind is \(m_{\mathcal {F}}\). The same holds for the right contact change values of the second kind. The number of the left and also that of the right contact change values of the third kind equals \(m_{\mathcal {I}}\). Therefore, the total number of contact change values \(m_c\) sums up to

$$\begin{aligned} m_c = 3m_{\mathcal {I}}+2m_{\mathcal {F}} \le 3m_b+2m_a, \end{aligned}$$
(12)

including possibly overlapping values. The constants \(m_a\) and \(m_b\) in Eq. (12) are introduced in Definition 2 and equal the dimensions k or n of the \(k\times n\) spectral mixture data matrix D. If the SFS for the spectral factor S is considered, then an upper bound on the number of subfunctions equals \(3k+2n\). For the concentration factor C the number of IBC subfunctions is always less or equal to \(3n+2k\). For large k and n the analytical approach to determining the IBC may be too expensive. Then a purely numerical SFS approximation, for example by the polygon inflation [26], may seem more appropriate.

5.3 Time and computer storage complexity of the IBC algorithm

Computational complexity theory is concerned with the required computer resources for the solution of a problem, mainly the computing time and required computer storage. We discuss these issues by using basic concepts of the complexity theory and algorithms, for example see [8, 31].

First, computer storage is not a problematic resource for the IBC algorithm because it scales only linearly with the dimension of the input data. Roughly, for each interval with constant contact change values ten parameters are to be stored in a table. Second, the time complexity class of the IBC calculation is determined by the choice of the algorithm for solving the contact problem, namely the convex hull algorithm or a comparable line-polygon intersection algorithm.

Theorem 1

Let \(\text {alg}(n)\) be the time complexity class of a convex hull algorithm or a line-polygon intersection algorithm. Further, let \(m_{\mathcal {I}}\) be the number of vertices of \({\mathcal {I}}\) and \(m_{\mathcal {F}}\) be the number of vertices of \({\mathcal {F}}\). Then the time complexity class of the IBC algorithm is

$$\begin{aligned} {\mathcal {O}}(m_{\mathcal {F}} \text {alg}(m_{\mathcal {I}}) + m_{\mathcal {I}} (\text {alg}(m_{\mathcal {I}}) + \text {alg}(m_{\mathcal {F}})) + (m_{\mathcal {I}}+m_{\mathcal {F}})\log (m_{\mathcal {I}}+m_{\mathcal {F}})). \end{aligned}$$

If only m with \(m = \max (m_{\mathcal {F}}, m_{\mathcal {I}})\) is known, then the time complexity class of the IBC algorithm is

$$\begin{aligned} {\mathcal {O}}(m~\text {alg}(m)+m\log (m)). \end{aligned}$$

Therein, the big \({\mathcal {O}}\) notation, which is also called the Landau notation, serves to describe the asymptotic growth behavior. The proof of Theorem 1 is given in Appendix D. The selection of the convex hull algorithm and of the line-polygon intersection algorithm significantly influence the asymptotic computing time. This was the reasoning for providing the pseudo-code of both versions in Appendix C. In our implementation the convex hull algorithm uses the Quickhull algorithm as implemented in Matlab [18]. For the sake of simplicity we assume that the balance conditions hold and that all points are processed. Then the complexity class of the Quickhull algorithm equals \({\mathcal {O}}(m\log (m))\) for m points, see [4]. This results in the time complexity class \({\mathcal {O}}(m^2\log (m))\). m can be estimated to be less or equal than the maximal dimension of the matrix D.

5.4 Intersection of the outer polygon with the IBC

As explained in Sect. 4.4, the SFS is the intersection of the outer polygon \({\mathcal {F}}\) and the exterior of the IBC, which is the unbounded set if the IBC is considered to split the plane \({\mathbb {R}}^2\) into two sets (namely a set around the origin which is enclosed by the IBC and its unbounded complement). The SFS contains the full information on the factor ambiguity of the nonnegative matrix factorization problem. If the IBC is determined, then the SFS can easily be computed numerically. However, the IBC also devises an analytical route for a precise (analytical) representation of the SFS. This approach is explained next.

Each edge of the outer polygon \({\mathcal {F}}\) is given by an affine line of the form \(e_1 x+ e_2 y = -1\) with proper parameters \(e_1\) and \(e_2\). Furthermore, let us substitute \(z = \tan (\alpha )\) in Eq. (11). Then the precise coordinates of a point of intersection of an edge of \({\mathcal {F}}\) with the IBC are given by the solution of the equation

$$\begin{aligned} e_1 p_1(z) + e_2 p_2(z) = -1 \end{aligned}$$

if the considered subfunction of the IBC and the considered edge of \({\mathcal {F}}\) intersect. The solution can be derived by solving the quadratic equation

$$\begin{aligned} 0&= (e_1 c_{x2} + e_2 c_{y2} + c_{d2}) z^2 + (e_1 c_{x1} + e_2 c_{y1} + c_{d1}) z + (c_{x0} + c_{y0} + c_{d0}). \end{aligned}$$

The result can be interpreted as Borgen-3, 3-triangles from [24]. We note that the advantages of this approach are limited to certain problematic cases. In general, the numerical approach is much faster and some minor loss of precision is not meaningful.

5.5 A conic section approach to the IBC

The IBC representation (11) has a parametric form. It is also possible to represent it in the form of an implicit equation. This allows us to prove an interesting geometric property, namely that the IBC is composed of conic sections, see Fig. 14.

Theorem 2

Each of the IBC subfunctions is a segment of a conic section (namely an ellipse or circle, parabola or hyperbola or also a degenerate conic section as a line segment or a point).

The proof is given in Appendix E. This theorem has some intriguing implications, as it places the IBC construction in a classical branch of mathematics. Possibly, this can provide more insight into the problem and to prove additional mathematical properties. If the conic section is non-degenerate (not just a line or single point), then the coefficients \(o_l\) and \(o_r\) lie on the conic section defined by the IBC subfunction. Further, the intersection of the lines that are given by the coefficients \(u_l\) and \(u_r\) (if it exists), also lies on the conic section. This can be proved by inserting them in Equation (14).

Fig. 14
figure 14

An ellipse (left, green) and a hyperbole (right, green) are drawn. They contribute in certain intervals to the inner boundary curve (magenta) (Color figure online)

5.6 Poorly conditioned cases of a numerical implementation of the IBC algorithm

The IBC algorithm is by its nature a precise analytical approach. However, the numerical and graphical representations require that the IBC is evaluated numerically. Some geometrical situations can result in poorly conditioned numerical computations. This is more or less inevitable for the suggested and other algorithms working with triangle constructions and rotations. Most of these cases occur if a vertex of \({\mathcal {I}}\) is located very close to \({\mathcal {F}}\) or if a vertex of \({\mathcal {I}}\) coincides with a vertex of \({\mathcal {F}}\). To discuss this point, we recall that the triangle construction for finding the IBC parameters consists of finding tangents of the inner polygon through a given point of the outer polygon. If a vertex of \({\mathcal {I}}\) is located close to \({\mathcal {F}}\), then this tangent can be defined by two points that are close to each other. Therefore, a small numerical error in one of those points can result in a large error for the tangent and for the IBC coordinates. In numerical mathematics such a problem is called ill-conditioned and so is the construction of certain triangles if vertices of \({\mathcal {I}}\) are close to those of \({\mathcal {F}}\). In particular, if single-point or line-shaped subsets of SFS are expected, then numerical approximation methods, such as polygon inflation [26] should be preferred.

The limit case of coinciding vertices of \({\mathcal {I}}\) and \({\mathcal {F}}\) can occur if the spectral data matrix D contains multiple zero entries. Then Borgen-2, 3-triangles are not necessarily unique as illustrated in Fig. 15. We assume that this case corresponds to a degenerated cone intersection with line shape. The suggested algorithmic implementation of the IBC construction cannot deal with this special situation and constructs only a single point. The algorithmic extension would be a linear interpolation in order to close gaps in the IBC curve which originate from this special geometric constellation. Further, we must expect a reduced numerical accuracy of a possible numerical implementation of the IBC algorithm in the case of coinciding vertices of \({\mathcal {I}}\) and \({\mathcal {F}}\). This problem cannot be avoided easily.

Fig. 15
figure 15

If a vertex of the inner polygon coincides with a vertex of the outer polygon, then an ambiguous free vertex can occur. Two possible free vertices (cyan dots in the left and right plot) are shown for possible Borgen-2, 3-triangles \({\mathcal {T}}\) between the fixed polygons \({\mathcal {I}}\) and \({\mathcal {F}}\) (Color figure online)

6 Conclusion

The analytical boundary curve construction is not only an absolutely precise method in order to determine the SFS for a nonnegative matrix factorization problem with three chemical species, but can also be practically implemented by the suggested algorithm. Closed-form expressions for the coordinates of the IBC have been derived which have revealed that the IBC piecewise consists of conic sections. This result joins the chemometric factor ambiguity problem with the classical field of mathematical geometry.

The IBC algorithm can support theoretical and analytical investigations with a focus on special and limit cases. For practical applications on high-dimensional experimental data the IBC algorithm is still applicable, but a numerical approximation approach might prove to be more robust. Nevertheless the IBC algorithm is promising in both the computing time and the precision of the results. The Matlab Code of our implementation can be found on the FACPACK homepage [30]. This program code computes the list of sorted contact change values for a given (chemical data) matrix and provides a Matlab function which enables the user to evaluate the boundary of the SFS with a high precision.