Thank you for posting your worksheet. That is very helpful - but it does leave me with a few questions.

The key part of your code is:

for l from 1 to 2 do # by 0.01 do
fsol := [fsolve(eval(detE, lambda = l), {k})];
Ml := map(subs, fsol, lambda = l, eigen2);
EM := map([Eigenvectors], Ml);
end do;

detE is a polynomial in k (degree 4) and lambda (degree 3) with highest total degree 4 as well. For a given value of lambda, Maple's fsolve command does not have any trouble finding the 4 roots; these are stored in fsol. These are the 4 values of k that you refer to; to get them in a more convenient form, I suggest adding:

K := map( rhs@op, fsol );

The entries of eigen2 depend on lambda and k ( sqrt(k), k, k^(3/2), and k^2 ). In fact, I notice that the lambda dependence is only on the main diagonal and always with the same term (91/100*lambda, with your parameters). You could subtract this part of the main diagonal from the matrix without changing the eigenvectors of the matrix. This, and related observations, might improve your ultimate efficiency.

Next, you substitute each of the 4 values of k and the corresponding value of lambda into the 3x3 matrix, eigen2. What you call Ml is a list of 4 3x3 matrices. Then, the associated EM is a list of 4 eigenvalue decompositions. Each of these decompositions is list containing a 3x1 matrix with the eigenvalues and a 3x3 matrix with the eigenvectors.

So, here's how I see all of your results:

K = [ k1, k2, k3, k4 ]

Ml = [ [3x3 matrix], [3x3 matrix], [3x3 matrix], [3x3 matrix] ]

EM = [ [ [3x1 vector], [3x3 matrix] ], [ [3x1 vector], [3x3 matrix] ],
[ [3x1 vector], [3x3 matrix] ], [ [3x1 vector], [3x3 matrix] ] ]

You describe wanting to construct a 4x4 matrix from the 4 k values and the 12 elements of 4 eigenvectors.

This is where I get confused. For each value of k there are three eigenvalues and 3 eigenvectors. What, exactly, am I supposed to use for the u[1], v[1], and w[1]? for the u[2], v[2], and w[2]? for the u[3], v[3], and w[3]? for the u[4], v[4], and w[4]? Am I correct in observing that you don't use the eigenvalues for anything in your matrix?

I assume you are trying to get one such matrix for each value of lambda.

Let me conclude with some final remarks about your final matrix. All 4 columns have the same structure:

V := (k,u,v,w) -> < 3*I/10*u + k*v-w, k*u+I*v, -k*v+(3/10-k^2)*w, (k^2-7/5)*k*v+(k^2-17/10)*w >:
V(k,u,v,w);
[ 3 ]
[ -- I u + k v - w ]
[ 10 ]
[ ]
[ k u + I v ]
[ ]
[ /3 2\ ]
[ -k v + |-- - k | w ]
[ \10 / ]
[ ]
[/ 2 7\ / 2 17\ ]
[|k - -| k v + |k - --| w]
[\ 5/ \ 10/ ]

So, once we figure out what information goes into a particular set of k[i], u[i], v[i], w[i], we can construct the final matrix as:

M := < V(k[1],u[1],v[1],w[1]) | V(k[2],u[2],v[2],w[2]) |
V(k[3],u[3],v[3],w[3]) | V(k[4],u[4],v[4],w[4]) >;

Note that it appears to me that there is a misplaced [1] in the fourth row of the first column of your matrix.

I hope my attempts at explaining my understanding of your problem either help you find a solution to your problem, or show you where you need to correct my understanding so that I, or others, can help you.

Doug

---------------------------------------------------------------------
Douglas B. Meade <><
Math, USC, Columbia, SC 29208 E-mail: mailto:meade@math.sc.edu
Phone: (803) 777-6183 URL: http://www.math.sc.edu