For some models, the computation of eigenvalues produces the warning message "Numerically Ill-conditioned eigenvalues". There are cases where some of those warnings can be expected and ignored. But there are also cases where such warnings indicate modeling or parametrization problems. This section and the information given in the Output Area help you analyze your model.The warning message includes a list of the ill-conditioned eigenvalues (see the following figure).
More detailed information about the ill-conditioned eigenvalues in the Output Area are available if you activate the tracing option for the ill-conditioned eigensystem (Simulation→Properties→Tracing→Linear System Analysis→Ill-conditioned eigensystem). As shown in the following figure, the information in the Output Area displays the eigenvalues with a higher accuracy than the warning message. In addition to the eigenvalues, the information includes the corresponding reciprocal condition numbers and eigenvectors. The eigenvalues in the warning message and in the additional information have both the same order with respect to the ascending reciprocal condition number. That makes identifying the eigenvalues in the two output items much easier.
The reciprocal condition number is an indicator for the condition of an eigenvalue. It represents the ratio between the maximum admissible perturbation of the system matrices and a given tolerance for the eigenvalue. If the reciprocal condition number is very small, the error in the system matrix must be small to keep the eigenvalues within the tolerance range. So, if your system matrix exhibits a certain degree of errors, a smaller reciprocal condition causes a larger effect of a potential error in the calculated eigenvalue. The numerical algorithm for the calculation of the eigenvalues already introduces some numerical noise that can be interpreted as a disturbance in the system matrix. For this reason, an ill-conditioned eigenvalue must always be treated with caution even if the system matrices show no numerical errors. Regardless of a warning message, the numerically computed eigenvalues may still be close to the exact values, but they can also be far off the mark. Eigenvalues with larger reciprocal condition numbers are not affected by this problem. Eigenvalues with very small reciprocal condition numbers are reported in a warning message in the Output Area.
The next section "Examples" presents some basic model configurations that can lead to ill-conditioned eigenvalues. Should you have any problems with some notations in the "Examples" section, please refer to the section "Formulation and Basic Facts". This section provides a brief explaination of the common definitions used in the "Examples" section and describes how a system may cause ill-conditioned eigenvalues.
A simple example of a mechanical model exhibiting ill-conditioned eigenvalues is a free mass. The following figure shows the Diagram View of the example model IllConditionedEigenvaluesMech1DFreeMass.isx illustrating one possible implementation.
If you only add one element of type
Mechanics.Translation.Mass to a new model, the simple equation is symbolically solved resulting in . This leaves no ODE states that would represent the system. In this case, the calculation of eigenvalues does not yield the expected results, since it uses the Jacobian matrix for the states and their time derivatives. The symbolic integration can be switched off on the page Symbolic Analysis in the Simulation Control. The alternative would be a more complex right side of the motion equation. An element of type Mechanics.Translation.Source is sufficent to define the right side in such a way. Now enter a time-dependent expression for the force F of the source, such as
if time < 0.5*tStop then 0 else 1. The equation system for a free mass can be written as
The system matrix's eigenvalue is 0 with a algebraic multiplicity of 2 and a geometric multiplicity of 1. We analyze the system with a small disturbance :
Its eigenvalues are
At , the absolute value of the eigenvalues grows faster than the disturbance . The slope is even infinite at . As a consequence, the reciprocal condition number is zero and the eigenvalue zero is ill-conditioned. If we now assume a disturbance of the system matrix of , the absolute value of the eigenvalues lies within the range of . This may just be enough for the application at hand. So, an ill condition of numerically computed eigenvalues does not necessarily imply that they are too far off of their real values (which often they are not). Nevertheless, you should be wary of the eigenvalues in such a case, because they could be incorrect.
The sample model IllConditionedEigenvaluesDecoupledPowertrain.isx represents a powertrain with an open clutch which decouples a freely spinning wheel inertia2 from the rest of the powertain (see next figure).
In the simple mechanical example model, the free wheel corresponds to a pair of ill-conditioned eigenvalues at zero. The model has also four more eigenvalues for the inertias of the engine and inertia1. Further eigenvalues relate to the internal variables of the engine and the clutch. SimulationX lists the reciprocal condition numbers with very small values as part of the information shown in the Output Area. Each reciprocal condition number is shown with the corresponding eigenvalue and eigenvector. The eigenvector components can be identified through the names of the variables from the model and are sorted by their absolute values in a descending order. Components with a large absolute value often have a major impact on ill-conditioned eigenvalues. In contrast to that, components with very small absolute values at the end of this list are insignificant for ill-conditioned eigenvalues. The information from the Output Area of the example model is given below. It clearly identifies inertia2 as the component taht causes the ill-conditioned eigenvalue.
In addition to the warning message for ill-conditioned eigenvalues, there is also a warning message for ill-conditioned eigenvectors which has its own help page.
This example illustrates why SimulationX does not show a warning message for some models with extremely badly conditioned eigenvalues and why the program is still able to compute the exact eigenvalues for those models nonetheless. It includes a modified model where the numerically computed eigenvalues deviate strongly from the exact ones. The system matrix
has a perturbation with an absolute value that is much smaller than 1. In exact arithmetics, the eigenvalues of are . They are independent of , but their reciprocal condition numbers are in the range of and deteriorate with decreasing . SimulationX does not notify you about ill-conditioned eigenvalues for the above system matrix even if is as small as 10-16, because it can balance the highly asymmetric matrix. Note that the left entry at the bottom of is much smaller than the right entry at the top. The actual eigenvalue algorithm is applied to the very well-conditioned, balanced matrix that has a reciprocal condition number in the range of 1. The reciprocal condition number of depends on the eigenvectors of . The better these eigenvectors are in orthogonal relation to each other, the larger is the reciprocal condition number. The eigenvectors of
are visualized in Figure 5 for the case of . Even for the relatively large value of , the angle between the eigenvectors is already quite small.
Balancing transforms the space of the eigenvalue problem by scaling the y axis with a factor in the range of (in the visualized case a factor of 10). As Figure 6 shows, the eigenvectors have an almost perpenticular position to each other in the scaled space resulting in very well-conditioned eigenvalues for the scaled matrix.
Balancing can only partially improve the condition of the eigenvalues. For an instance, rotating the coordinate system in the example by (see Figure 7) prevents a larger angle between the eigenvectors when one coordinate axis is scaled, and the eigenvalues remain ill-conditioned after all.
The system is implemented in the example model IllConditionedEigenvaluesBalancing where you can adjust for the original matrix and for the matrix with rotated eigenvectors. The default setting for is . SimulationX computes the exact eigenvalues and for the model with the original matrix as the system matrix. If the system matrix is rotated by , SimulationX displays a warning message about ill-conditioned eigenvalues with the following information (in case the tracing option Linear System Analysis → Ill-conditioned Eigensystem is activated).
The stated eigenvalue has no valid digits in comparison with its exact value , and the other numerically computed eigenvalue has only one valid digit compared with its exact counterpart .
Section "Linear System Analysis" explains how the analysis of linearized models leads to a generalized eigenvalue problem. It outlines the general and the specific problem with eigenvalues and provides some basic facts to help you interpret the warning message about ill-conditioned eigenvalues. With given real quadratic system matrices , the generalized eigenvalue problem lies in the challenge of finding all complex values with a solution to the linear system that is different from the zero vector.
Such a is an eigenvalue of the matrix pair , and is the corresponding right eigenvector. Alternatively, you can also solve the system for the corresponding left eigenvectors. These are non-zero solutions of the linear system
or equivalently .
The single quote is adopted from numerical algebra programs like Octave or Matlab. It indicates a transposition of real matrices and a conjugate transposition of complex matrices. If the eigenvalues of the matrix pair are ill-conditioned, small disturbances in and can cause large deviations in the eigenvalues. The effects can be observed already in systems of explicit ordinary differential equations. The matrix is the identity matrix for such systems, which is the difference between the specific eigenvalue problem and the generalized one. The eigenvalue equation can only have a nontrivial solution if the determinant is zero. The determinant is a polynomial in the variable called a characteristic polynomial of the matrix pair . Under the assumption that the system is structurally regular, the degree of the characteristic polynomial is directly related the number of finite eigenvalues of the matrix pair and, for the specific eigenvalue problem, to the matrix dimension with . The algebraic multiplicity of an eigenvalue is the multiplicity of as a zero of the characteristic polynomial. The geometric multiplicity of an eigenvalue is the nullspace dimension of the matrix . For example, the characteristic polynomial of the matrix pair is and is a zero of with the multiplicity 2. Consequently, is an eigenvalue of the matrix pair with an algebraic multiplicity of 2. The corresponding eigenvalue equation has the general solution with an arbitrary , and the nullspace of is one-dimensional. So the geometric multiplicity of the eigenvalue at 0 is 1. A coordinate change with a regular matrix does not change the solvability of the equation. The eigenvalues for
remain the same as for the untransformed system. If is the identity matrix, the transformed equation reads . Multiplication of that equation by does not change the solvability of the equation and turns it into the specific eigenvalue problem:
Products of the form with regular are called similarity transformations. Eigenvalues are invariant under similarity transformations. The following paragraph focuses on the specific eigenvalue problem explaining how a disturbance of the system matrix from causes a disturbance in its eigenvalue and a distrurbance in its eigenvector . Replacing , and in the eigenvalue equation with the perturbed quantities , and respectively while neglecting the terms of second order, such as , gives you the equation of first order
for the perturbations.
Multiplication with the transposed left eigenvector eliminates the term with the pre-factor because of the eigenvalue equation . Re-arranging the terms gives you the formula
for the perturbation of the eigenvalue. This allows for the estimation
for the eigenvalue perturbation and
for the reciprocal condition number of the eigenvalue . This bound for is proportional to the cosine of the angle between the left and right eigenvector and respectively (for more details, refer to section 7.2 "Perturbation Theory" of ).
Two eigenvalues with almost linearly dependent eigenvectors are ill-conditioned. This is also true the other way around: If a matrix exhibits an ill-conditioned eigenvalue, then it has at least two almost linearly dependent eigenvectors (see ). An eigenvalue is also ill-conditioned at zero with higher algebraic multiplicity than its geometric multiplicity. Before applying the QZ algorithm for the actual eigenvalue calculation and the computation of the reciprocal condition numbers, SimulationX balances the system matrix . That means it determines a diagonal transformation matrix such that the eigenvalues of the system matrix are better conditioned after a similarity transformation (see ).