I have an eigenvalue (vector) problem (please see the theory, maybe I missed something in the post or did not understand Eqs (3.5.24)
) how to obtain two unknown matrices (36 unknowns) to satisfy all given conditions. Unknown matrices are
XX = Table[X[10 i + j], {i, 6}, {j, 3}];
YY = Table[Y[10 i + j], {i, 6}, {j, 3}];
which should be joined and present the 36 unknowns
unknown = ArrayFlatten[({{XX, YY}})];
Let's suppose that we have two matrices in the following form:
JJ = {{0.`, 0.`, 0.`, 1.`, 0.`, 0.`}, {0.`, 0.`, 0.`, 0.`, 1.`,
0.`}, {0.`, 0.`, 0.`, 0.`, 0.`, 1.`}, {-1.`, 0.`, 0.`, 0.`, 0.`,
0.`}, {0.`, -1.`, 0.`, 0.`, 0.`, 0.`}, {0.`, 0.`, -1.`, 0.`, 0.`,
0.`}};
HH={{5.33449*10^7, -3.14159*10^7, 3.99684*10^6, 0., 199.842,
0.}, {-3.14159*10^7, 2.82358*10^7, -200000., -200.,
0., -199.842}, {3.99684*10^6, -200000., 4.23581*10^6, 0., 199.842,
0.}, {0., -200., 0., 0.01, 0., 0.}, {199.842, 0., 199.842, 0.,
0.00999211, 0.}, {0., -199.842, 0., 0., 0., 0.00999211}};
We obtained eigenvalues s1, s2 and s3, (s4=-s1, s5=-s2, s6=-s3) and take theirs imaginary parts
q0 = Eigenvalues[N[{HH, JJ}, 5]];
s1 = N[Im[q0]][[5]];
s2 = N[Im[q0]][[3]];
s3 = N[Im[q0]][[1]];
to construct the diagonal matrix s in the form
s = {{s1, 0, 0}, {0, s2, 0}, {0, 0, s3}};
Now, we need to satisfy (find unknowns) with NSolve or FindRoot all conditions where
zero = Table[0, {i, 3}, {j, 3}];
onem = IdentityMatrix[3];
one = Transpose[XX].JJ.XX;
two = Transpose[YY].JJ.YY;
three = Transpose[YY].HH.XX;
four = Transpose[XX].HH.YY;
five = Transpose[XX].HH.XX;
six = Transpose[YY].HH.YY;
seven = Transpose[XX].JJ.YY;
eight = -Transpose[YY].JJ.XX;
FindRoot[{one == zero, two == zero, three == zero, four == zero,
five == s, six == s, seven == onem,
eight == onem}, {{X[11], 1}, {X[12], 1}, {X[13], 1}, {X[21],
1}, {X[22], 1}, {X[23], 1}, {X[31], 1}, {X[32], 1}, {X[33],
1}, {X[41], 1}, {X[42], 1}, {X[43], 1}, {X[51], 1}, {X[52],
1}, {X[53], 1}, {X[61], 1}, {X[62], 1}, {X[63], 1}, {Y[11],
1}, {Y[12], 1}, {Y[13], 1}, {Y[21], 1}, {Y[22], 1}, {Y[23],
1}, {Y[31], 1}, {Y[32], 1}, {Y[33], 1}, {Y[41], 1}, {Y[42],
1}, {Y[43], 1}, {Y[51], 1}, {Y[52], 1}, {Y[53], 1}, {Y[61],
1}, {Y[62], 1}, {Y[63], 1}}]
but we have more equations then unknowns. If I fill use only first four equations, I can get the solution, but how to satisfy the rest number of equations?
Also, I choose roots around 1. How to get one set of solutions to satisfy all 8 matrix equations?
FindInstance
might be helpful. Anyways, if you end up with more equations than unknowns, then you might have redundancies in your equations or your problem is not well-posed in the first place. Are you sure that your problem should have solutions? Can you tell in advance how many solutions there might be? $\endgroup$Eigensystem
. You need toFlatten
your matrix variables and rephrase left and right multiplication by other matices as linear mapping on the flattened matrix variables. $\endgroup$