# Find relationship between parameters to prove conditions of eigenvalues

I have the following 3-by-3 matrix. I need to find condition(s) on the parameters 'a' and 'b' such that this matrix has exactly 1 eigenvalue bigger than 1 in absolute value and other two eigenvalues less than 1 in absolute value. 'a' and 'b' lie in the range 0 to 3 and I am keen to arrive at an anlaytical expression for these conditions.

m = {{14.6235 (0.0925809 + 0.0378381 (0.0696333 a + 0.256263 b)), -14.6235 (0.0240451 + 0.0378381 (0.0696333 a + 0.264 b)), 0.435909}, {1, 0, 0}, {a + 3.68018 b, -a - 3.79129 b, 0}}


I would really appreciate any help with this. Thank you very much.

• I tried using Reduce but it is taking too long to finish. Deleted the answer as I had initial error. But you can try this and wait and see ClearAll[a,b]; m={{14.6235 *(0.0925809+0.0378381* (0.0696333 *a+0.256263* b)),-14.6235* (0.0240451+0.0378381* (0.0696333 *a+0.264* b)),0.435909},{1,0,0},{a+3.68018* b,-a-3.79129 *b,0}}; m=SetPrecision[m,Infinity]; (*exact is better*) eig=ToRadicals@Eigenvalues[m]; and now ... Oct 4 '21 at 21:16
• Reduce[Abs[eig[[1]]] > 1 && Abs[eig[[2]]] < 1 && Abs[eig[[3]]] < 1 && 0 < a < 3 && 0 < b < 3, {a, b}]; Reduce[Abs[eig[[2]]] > 1 && Abs[eig[[1]]] < 1 && Abs[eig[[3]]] < 1 && 0 < a < 3 && 0 < b < 3, {a, b}]; Reduce[Abs[eig[[3]]] > 1 && Abs[eig[[2]]] < 1 && Abs[eig[[3]]] < 1 && 0 < a < 3 && 0 < b < 3, {a, b}]; Oct 4 '21 at 21:16
• Removing the conditions 0 < a < 3 && 0 < b < 3 from Reduce it is still taking long time. But you can try it. Reduce[Abs[eig[[1]]] > 1 && Abs[eig[[2]]] < 1 && Abs[eig[[3]]] < 1, {a, b}]; Reduce[Abs[eig[[2]]] > 1 && Abs[eig[[1]]] < 1 && Abs[eig[[3]]] < 1, {a, b}]; Reduce[Abs[eig[[3]]] > 1 && Abs[eig[[2]]] < 1 && Abs[eig[[3]]] < 1, {a, b}]; May be different approach is needed. Oct 4 '21 at 21:21
• Doing some random sampling seems to indicate that a necessary & sufficient condition is that $\det(M - I) > 0$, which reduces to the simple condition that b < 0.0423651 with a unconstrained. But I can't prove it, and I have to call it a day. I'll try to return to it later. Oct 4 '21 at 21:41
• Thank you very much, @Nasser Oct 5 '21 at 17:07

To make the job easier, we shift the eigenvalues by -1. Then the condition reads: 2 eigenvalues <0 and 1 eigenvalue >0. Shifting the eigenvalues can be achieved by subtracting the Identity matrix:

m = {{14.6235 (0.0925809 +
0.0378381 (0.0696333 a + 0.256263 b)), -14.6235 (0.0240451 +
0.0378381 (0.0696333 a + 0.264 b)), 0.435909}, {1, 0,
0}, {a + 3.68018 b, -a - 3.79129 b, 0}} - IdentityMatrix[3];


Now we consider the characteristic polynomial, whos zeros are the eigenvalues of m:

charpoly = Det[m - x IdentityMatrix[3]]


As you can see this is a cubic polynomial. These can have imaginary roots. To get 3 real roots we need an additional condition: the discriminant has to be positive (note there exists different definitions that require the discriminant to be negative):

disc = Discriminant[charpoly, x]


Further, you will remember, that the constant term of a polynomial with the coefficient of the highest term equal to 1, is the product of its roots.

const = Select[charpoly, FreeQ[#, x] &]


Note, for 2 roots <0 and 1 root >0 this product must be positive.

Therefore, we have the conditions:

disc>0

const>0


The solution to this is a very complicated region. But fortunately we have 2 further conditions: 0<={a,b}<=3. With this we get:

Reduce[{disc > 0 && const > 0 && 0 <= a <= b && 0 <= b <= 3}, {a, b}]


You will see that Reduce produces superfluous output of the form 1.20167 < a < 1.20167..., I think this is an error. But it boils down to:

(*0 <= a < 3 && 0 <= b < 0.0423651*)


We may plot the regions:

RegionPlot[{disc > 0, const > 0}, {a, 0, 3}, {b, 0, 3},
PlotLegends -> "Expressions"]


Or the combined region:

RegionPlot[{disc > 0 && const > 0}, {a, -0.3, 3}, {b, 0, 0.05},
PlotLegends -> "Expressions"]


• Doesn't your first step assume that the eigenvalues are all real and positive? For example, consider the matrix with $-2$, $2$, and $0$ on the diagonal. It doesn't satisfy the criteria (since two of the eigenvalues have a magnitude greater than 1), but subtracting the identity gives a matrix with one positive and two negative eigenvalues. Oct 5 '21 at 15:08
• That said, your results are very similar (identical?) to mine, so I suspect your argument could still be fixed. Oct 5 '21 at 15:09
• Thank you very much, @DanielHuber Oct 5 '21 at 17:07
• I actually over read "absolute value". What I wrote is for 2 values <1 and one value>1. Oct 5 '21 at 18:28

We can apply Rouché's theorem. This theorem states for for any two polynomials $$f(z)$$ and $$g(z)$$ and any region in the complex plane $$K$$, if $$|f(z) - g(z)| < |g(z)|$$ at every point on the boundary of $$K$$, then $$f(z)$$ and $$g(z)$$ have the same number of roots (counting multiplicities) in the interior of $$K$$.

In particular, let's take $$K$$ to be the unit disc. The polynomial $$g(z) = c z^n$$ has $$n$$ (degenerate) roots at the origin. In particular, let's pick $$g(z) = c z^2$$. Then if $$|f(z) - c z^2| < |c z^2|$$ everywhere on the boundary of the unit disc, there are precisely two roots of $$f(z)$$ inside the unit disc. And if we take $$f(z) = \det(M - I z)$$ to be the characteristic polynomial of $$m$$, then the values of $$a$$ and $$b$$ for which $$f(z)$$ has two roots inside the unit disc are those for which precisely one eigenvalue of $$M$$ has magnitude greater than 1.

### Implementation:

Define the matrix and the characteristic polynomial $$f(x)$$.

m[{a_, b_}] = {{14.6235 (0.0925809 +
0.0378381 (0.0696333 a + 0.256263 b)), -14.6235 (0.0240451 +
0.0378381 (0.0696333 a + 0.264 b)), 0.435909}, {1, 0, 0}, {a + 3.68018 b, -a - 3.79129 b, 0}};
f[x_, a_, b_] = CharacteristicPolynomial[m[{a, b}], x]

(* 0. - 0.435909 a - 1.65266 b - 0.351624 x + 0.397379 a x +
1.45815 b x + 1.35386 x^2 + 0.0385299 a x^2 + 0.141797 b x^2 - 1. x^3 *)


Tell Mathematica to find a and b such that $$|f(z) - c_2 z^2| < |c_2 z^2|$$ for all $$z$$ on the unit circle, where $$c_2$$ is the coefficient of $$z^2$$ in $$f(z)$$.

c2 = Coefficient[f[z, a, b], z, 2];
conditions =
Simplify[Reduce[
ForAll[z, Abs[z] == 1, Abs[f[z, a, b] - c2 z^2] < Abs[c2 z^2]
&& 0 <= a <= 3 && 0 <= b <= 3], {a, b}, Reals]];
Chop[conditions]

(* 0 <= a <= 3. && 0 <= b < 0.0423651 *)


This appears to be in agreement with "data" from random sampling in the allowed parameter space:

points = Select[RandomReal[{0, 3}, {100000, 2}], (Sort[Abs[Eigenvalues[m[#]]]][[3]] >= 1 && Sort[Abs[Eigenvalues[m[#]]]][[2]] < 1) &];
ListPlot[points, PlotRange -> {{0, 3}, {0, 3}}, AspectRatio -> Automatic]


### Caveats:

While the results agree with the "random sampling" data, Rouché's theorem is new to me and I am not 100% sure that I have applied it correctly. In particular, while it appears to be customary to take $$g(z) = c_2 z^2$$ in using this technique to find roots, I am not sure why this is or whether it would be possible to use other choices for $$c_2$$. In addition, I am unclear whether Rouché's theorem is an "if and only if" statement, or whether it only provides sufficient conditions (but not necessary conditions) for $$f(z)$$ to have a particular number of zeros in $$K$$. I welcome any & all comments on this answer correcting any misconceptions.

• Thank you very much, @MichaelSeifert Oct 5 '21 at 17:06