"John D'Errico" <woodchips@rochester.rr.com> wrote in message <ig4asl$3qt$1@fred.mathworks.com>...
> "dm" wrote in message <ig43us$83q$1@fred.mathworks.com>...
> > I have problem which I, at least, can't solve analytically. I have a known, complex 2by2byM matrix A, and a known 2by2byM matrix T, both symmetric, and want to find a complex 2by2byM matrix W such that A = W*T*W^T, or equivalently, minimize the residual r = AW*T*W^T.
> >
>
> I'm interested. How do you define symmetry for a 2x2xM matrix,
> at least where M will be greater than 1? (I can handle the case
> for M == 1.)
>
> I'm also interested in how you plan on doing the required matrix
> multiplies. Your function simply writes it as a standard multiply
> using * , but that won't work quite as well for general M, at least
> in my version of MATLAB.
>
> John
What I meant by symmetric is that for every m in [1,M], each 2by2 matrix A(:,:,m) is equal to A(:,:,m).' (and the same for each 2by2 matrix T(:,:,m)).
I also thought of doing the required operations within a loop, so I have something like
for m = 1:M
[x_m fval] = fsolve/other function(@(x) myfun(x,A(:,:,m),T(:,:,m)),x0,opts);
end
where A(:,:,m) and T(:,:,m) now both are 2by2, and x0 is some initial guess for the m'th 2by2 matrix W(:,:,m), and opts are the options used for the iterative solver/other function.
This is probably not the best solution I guess, but I don't have a very large M (201 at most), and I can afford to do the looping.
dm
