http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993
MATLAB Central Newsreader  finding a matrix used in matrix transformation
Feed for thread: finding a matrix used in matrix transformation
enus
©19942017 by MathWorks, Inc.
webmaster@mathworks.com
MATLAB Central Newsreader
http://blogs.law.harvard.edu/tech/rss
60
MathWorks
http://nl.mathworks.com/images/membrane_icon.gif

Tue, 09 Nov 2010 17:46:05 +0000
finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794546
pushkarini
Hi<br>
I have known matrices A and B (both square of size n say) such that<br>
B = inv(M)*A*M<br>
so that M*B = A*M<br>
I need to find M<br>
I can solve a system of n^2 equations in n^2 unknowns to find M, but is there an easier matlab command or another trick to do this? <br>
<br>
thanks

Tue, 09 Nov 2010 17:58:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794549
James Tursa
"pushkarini " <pushkarini.a@gmail.com> wrote in message <ibc1cs$61o$1@fred.mathworks.com>...<br>
> Hi<br>
> I have known matrices A and B (both square of size n say) such that<br>
> B = inv(M)*A*M<br>
> so that M*B = A*M<br>
> I need to find M<br>
> I can solve a system of n^2 equations in n^2 unknowns to find M, but is there an easier matlab command or another trick to do this? <br>
> <br>
> thanks<br>
<br>
You might have a look at this related problem:<br>
<br>
<a href="http://www.mathworks.com/matlabcentral/fileexchange/19614abkba">http://www.mathworks.com/matlabcentral/fileexchange/19614abkba</a><br>
<br>
James Tursa

Tue, 09 Nov 2010 18:06:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794552
Matt J
"pushkarini " <pushkarini.a@gmail.com> wrote in message <ibc1cs$61o$1@fred.mathworks.com>...<br>
> Hi<br>
> I have known matrices A and B (both square of size n say) such that<br>
> B = inv(M)*A*M<br>
> so that M*B = A*M<br>
=====<br>
<br>
Do you know for a fact that a nonsingular solution M exists?<br>
<br>
Let m=M(:). and<br>
Q=(kron(B.', speye(n))  kron(speye(n),A))<br>
<br>
Then the equation M*BA*M is equivalent to<br>
<br>
Q*m=0<br>
<br>
So, if Q is nonsingular, the only solution is m=0, corresponding to M=zeros(n)<br>
which is singular. This is why I asked if you know for a fact that a nonsingular solution M exists.<br>
<br>
If you're sure that Q is singular, then you should be able to recover m as an eigenvector of Q with eigenvalue 0. See "doc eig"

Tue, 09 Nov 2010 18:42:03 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794565
Bruno Luong
"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <ibc2ic$mjm$1@fred.mathworks.com>...<br>
<br>
> If you're sure that Q is singular, then you should be able to recover m as an eigenvector of Q with eigenvalue 0. See "doc eig"<br>
<br>
Or simply using NULL which gives a basis of the null space (at the accuracy of the floating point).<br>
<br>
Bruno

Tue, 09 Nov 2010 19:40:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794589
Roger Stafford
"pushkarini " <pushkarini.a@gmail.com> wrote in message <ibc1cs$61o$1@fred.mathworks.com>...<br>
> Hi<br>
> I have known matrices A and B (both square of size n say) such that<br>
> B = inv(M)*A*M<br>
> so that M*B = A*M<br>
> I need to find M<br>
> I can solve a system of n^2 equations in n^2 unknowns to find M, but is there an easier matlab command or another trick to do this? <br>
> <br>
> thanks<br>
         <br>
The requirement that an invertible matrix M exists such that B = inv(M)*A*M is an equivalence relation and A and B are called 'similar' matrices if it holds between them. It has been shown that matrices are similar if and only if their Jordan normal forms are the same up to possible rearrangement of the Jordan blocks. There is a good paper on this subject by Kahan at:<br>
<br>
<a href="http://www.eecs.berkeley.edu/~wkahan/MathH110/jordan.pdf">http://www.eecs.berkeley.edu/~wkahan/MathH110/jordan.pdf</a><br>
<br>
Presumably the way to find the M you seek would be to convert by similarity transform both A and B to their respective Jordan normal forms. If these are alike up to rearrangement of their Jordan blocks, then combining all of these transformations and permutations would give you the necessary M matrix. If not, then no such M can exist. <br>
<br>
Unfortunately I don't know enough about the subject to tell you how to find the Jordan normal form using matlab, but reading the above paper might give you some ideas. From a numerical analysis point of view finding the Jordan normal form is known to be numerically unstable in that small errors can make large differences in the result. However I suspect this probably reflects the inherent difficulty of solving the problem you pose.<br>
<br>
Roger Stafford

Tue, 09 Nov 2010 22:04:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794636
Roger Stafford
"Roger Stafford" <ellieandrogerxyzzy@mindspring.com.invalid> wrote in message <ibc82k$ui$1@fred.mathworks.com>...<br>
> "pushkarini " <pushkarini.a@gmail.com> wrote in message <ibc1cs$61o$1@fred.mathworks.com>...<br>
> > Hi<br>
> > I have known matrices A and B (both square of size n say) such that<br>
> > B = inv(M)*A*M<br>
> > so that M*B = A*M<br>
> > I need to find M<br>
> > I can solve a system of n^2 equations in n^2 unknowns to find M, but is there an easier matlab command or another trick to do this? <br>
> > <br>
> > thanks<br>
>          <br>
> The requirement that an invertible matrix M exists such that B = inv(M)*A*M is an equivalence relation and A and B are called 'similar' matrices if it holds between them. It has been shown that matrices are similar if and only if their Jordan normal forms are the same up to possible rearrangement of the Jordan blocks. There is a good paper on this subject by Kahan at:<br>
> <br>
> <a href="http://www.eecs.berkeley.edu/~wkahan/MathH110/jordan.pdf">http://www.eecs.berkeley.edu/~wkahan/MathH110/jordan.pdf</a><br>
> <br>
> Presumably the way to find the M you seek would be to convert by similarity transform both A and B to their respective Jordan normal forms. If these are alike up to rearrangement of their Jordan blocks, then combining all of these transformations and permutations would give you the necessary M matrix. If not, then no such M can exist. <br>
> <br>
> Unfortunately I don't know enough about the subject to tell you how to find the Jordan normal form using matlab, but reading the above paper might give you some ideas. From a numerical analysis point of view finding the Jordan normal form is known to be numerically unstable in that small errors can make large differences in the result. However I suspect this probably reflects the inherent difficulty of solving the problem you pose.<br>
> <br>
> Roger Stafford<br>
         <br>
I just found out that the Symbolic Toolbox has a function, 'jordan', which will find the Jordan normal form, either symbolically or numerically, of any square matrix and the corresponding similarity transform. Therefore this, together with my previous remarks, should solve your problem.<br>
<br>
Roger Stafford

Tue, 09 Nov 2010 23:02:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794653
Matt J
"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibc4lr$cjv$1@fred.mathworks.com>...<br>
> "Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <ibc2ic$mjm$1@fred.mathworks.com>...<br>
> <br>
> > If you're sure that Q is singular, then you should be able to recover m as an eigenvector of Q with eigenvalue 0. See "doc eig"<br>
> <br>
> Or simply using NULL which gives a basis of the null space (at the accuracy of the floating point).<br>
========<br>
<br>
This seems to work, as tested below. Unfortunately, though, null() won't work for sparse Q, so it tends to be quite slow to apply it to full Q<br>
<br>
n=15;<br>
<br>
%simulated data<br>
Mtrue=rand(n);<br>
A=rand(n);<br>
B=inv(Mtrue)*A*Mtrue;<br>
<br>
%Engine<br>
Q=full( kron(B.', speye(n))  kron(speye(n),A) );<br>
<br>
N=null(Q);<br>
<br>
d=size(N,2);<br>
dets=zeros(1,d);<br>
for ii=1:d<br>
<br>
M=reshape(N(:,ii),n,n);<br>
<br>
dets(ii)=abs(det(M));<br>
<br>
end<br>
<br>
[~,j]=max(dets);<br>
<br>
M=reshape(N(:,ii),n,n);

Tue, 09 Nov 2010 23:20:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794658
Bruno Luong
"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <ibcjtb$1nt$1@fred.mathworks.com>...<br>
> "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibc4lr$cjv$1@fred.mathworks.com>...<br>
> > "Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <ibc2ic$mjm$1@fred.mathworks.com>...<br>
> > <br>
> > > If you're sure that Q is singular, then you should be able to recover m as an eigenvector of Q with eigenvalue 0. See "doc eig"<br>
> > <br>
> > Or simply using NULL which gives a basis of the null space (at the accuracy of the floating point).<br>
> ========<br>
> <br>
> This seems to work, as tested below. Unfortunately, though, null() won't work for sparse Q, so it tends to be quite slow to apply it to full Q<br>
<br>
That's why I have submitted a null for sparse matrix in FEX. That requires recent Matlab version thought.<br>
<br>
I'm still thinking about Roger's Jordan form which should be provides a solution of the eqt<br>
<br>
B = inv(M)*A*M<br>
<br>
which is not obvious to get from<br>
<br>
the solutions of <br>
<br>
M*B = A*M, (provides by the kron/null for example)<br>
<br>
I can't find a simple example where Jordan method gives a more focus solution space. Does someone can build of such example?<br>
<br>
Bruno

Wed, 10 Nov 2010 03:30:10 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794696
Roger Stafford
"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibckv4$8q2$1@fred.mathworks.com>...<br>
> ........<br>
> I'm still thinking about Roger's Jordan form which should be provides a solution of the eqt<br>
> <br>
> B = inv(M)*A*M<br>
> <br>
> which is not obvious to get from<br>
> <br>
> the solutions of <br>
> <br>
> M*B = A*M, (provides by the kron/null for example)<br>
> <br>
> I can't find a simple example where Jordan method gives a more focus solution space. Does someone can build of such example?<br>
> <br>
> Bruno<br>
       <br>
I would see it proceeding as follows:<br>
<br>
[V1,J1] = jordan(A);<br>
[V2,J2] = jordan(B);<br>
<br>
If J1 and J2 are alike except for a rearrangement of Jordan blocks, let P be the permutation matrix that makes J1 and J2 match blocks, so that J2 = inv(P)*J1*P. Then setting<br>
<br>
M = V1*P*inv(V2);<br>
<br>
gives the required M. That is because<br>
<br>
inv(M)*A*M = (V2*inv(P)*inv(V1)) * A * (V1*P*inv(V2)) =<br>
V2*inv(P)*J1*P*inv(V2) = V2*J2*inv(V2) = B.<br>
<br>
The step that takes additional work is finding the necessary permutation that makes J1 and J2 match.<br>
<br>
I do worry about the sensitivity of 'jordan' to small rounding errors. It could conceivably cause J1 and J2 to have different Jordan blocks when they ought to be alike.<br>
<br>
To give the "kron/null" method and this one a thorough test one could construct a Jordan normal form matrix with a set of a number of Jordan blocks which all have, say, equal eigenvalues. (Perhaps these could even be all zero.) Then with two random but invertible matrices do similarity transforms on the normal matrix to produce A and B. Then try out the kron/null and the above methods to see if either has troubles.<br>
<br>
Roger Stafford

Wed, 10 Nov 2010 07:27:07 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794733
Bruno Luong
Roger,<br>
<br>
Some preliminary facts:<br>
<br>
Let<br>
problem 1, B = inv(M)*A*M<br>
problem 2, M*B = A*M<br>
<br>
Any solution of problem 1 is solution of problem 2. So spacesolution of problem 2 contains space solution of problem 1.<br>
<br>
I don't have symbolic toolbox so I can't check Jordan method. However if I generate A and B such as required, then I check the Kron/Null and it gives not 1dimensional space solution but ndimensional spacesolution (this should be provable by Kronecker property, but right now I just observe this fact).<br>
<br>
What I wonder is this: <br>
<br>
In the problem 1, we look for the Jordantransformation matrix M (from A to B) that is not singular. But could the KRON/NULL basis contains somehow singular matrices, yet by combining them we get nonsingular solution? If yes I would like to see an example.<br>
<br>
Here is the code I use to check Kron/Null<br>
<br>
% Generate matrices<br>
J1 = [1 1 0; 0 1 0; 0 0 2];<br>
I = eye(3);<br>
P = I(:,[2 3 1]);<br>
J2 = inv(P)*J1*P;<br>
V1 = ceil(99*rand(3,3));<br>
V2 = ceil(99*rand(3,3));<br>
<br>
A = V1*J1*inv(V1)<br>
B = V2*J2*inv(V2)<br>
% Jordan transformation<br>
M = V1*P*inv(V2);<br>
<br>
fprintf('Jordan check\n');<br>
fprintf(' M*B:\n');<br>
disp(M*B)<br>
fprintf(' A*M:\n');<br>
disp(A*M)<br>
<br>
%% Kron/Null<br>
I = eye(size(A));<br>
Q = kron(B.',I)kron(I,A);<br>
N = null(Q);<br>
% Try to recover M from N<br>
x = N\M(:);<br>
Mrecov = reshape(N*x,size(A));<br>
errorn = norm(MrecovM)/norm(M);<br>
if errorn < 1e10<br>
fprintf('OK: We can recover Jordan solution\n')<br>
end<br>
% Check if each basis matrix is the solution<br>
for k=1:size(N,2)<br>
fprintf('Kron/NULL solution #%d check\n', k);<br>
M = reshape(N(:,1),[3 3]);<br>
if rank(M) < length(A)<br>
fprintf('Kron/NULL method only solve the M*B=A*M\n');<br>
else<br>
fprintf('Kron/NULL method solve the harder problem B=inv(M)*A*M\n');<br>
end<br>
fprintf(' M*B:\n');<br>
disp(M*B)<br>
fprintf(' A*M:\n');<br>
disp(A*M)<br>
end<br>
<br>
% Bruno

Wed, 10 Nov 2010 08:31:03 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794744
pushkarini
Thanks a lot fo your quick reply! <br>
<br>
The method using kron command works. the one using jordan matrices gives me the error<br>
Error: Similarity matrix too large [mljordan], also it took a loong time to solve

Wed, 10 Nov 2010 15:20:05 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794877
Matt J
"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibdhgb$k7j$1@fred.mathworks.com>...<br>
><br>
> What I wonder is this: <br>
> <br>
> In the problem 1, we look for the Jordantransformation matrix M (from A to B) that is not singular. But could the KRON/NULL basis contains somehow singular matrices, yet by combining them we get nonsingular solution? If yes I would like to see an example.<br>
======<br>
<br>
You mean if the KRON/NULL basis contains *only* singular matrices? That would indeed be a problem.<br>
<br>
To verify this, I guess you would want to solve a maxmin squares problem. In particular, if M(:,:,i) are KRON/NULL basis matrices, then you want to find <br>
coefficients c(i) and <br>
an n x 1 unit vector u satisfying<br>
<br>
norm( sum_i c(i)*M(:,:,i)*u)>0<br>
<br>
which you might do by solving<br>
<br>
max( min ( norm( sum_i c(i)*M(:,:,i)*u)^2 ))<br>
<br>
s.t. norm(u)^2=1<br>
<br>
where the max is over the c(i) and the min is over u.<br>
<br>
This stretches my optimization knowhow, but I guess you could might be able to do it iteratively by alternatingly maximizing over c and minimizing over u, both of which are simple computations....

Wed, 10 Nov 2010 15:34:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794884
Matt J
"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <ibed75$jiu$1@fred.mathworks.com>...<br>
><br>
> To verify this, I guess you would want to solve a maxmin squares problem. In particular, if M(:,:,i) are KRON/NULL basis matrices, then you want to find <br>
> coefficients c(i) and <br>
> an n x 1 unit vector u satisfying<br>
> <br>
> norm( sum_i c(i)*M(:,:,i)*u)>0<br>
=====<br>
<br>
Sorry, this should have read, find c(i) such that<br>
<br>
min_u norm(sum_i c(i)*M(:,:,i)*u)/norm(u) >0

Wed, 10 Nov 2010 15:46:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794887
Bruno Luong
"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <br>
> You mean if the KRON/NULL basis contains *only* singular matrices? That would indeed be a problem.<br>
<br>
Matt,<br>
<br>
My question is not really how to derive a nonsingular M from the null space vectors N. I'm not there yet!!<br>
<br>
My question is simpler: can it happens? Since this is what could be a drawback where Jordan approach does not suffer. To me it is not clear the motivation of Roger recommends for Jordan's transformation.<br>
<br>
Bruno

Wed, 10 Nov 2010 15:53:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794890
Matt J
"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibdhgb$k7j$1@fred.mathworks.com>...<br>
><br>
>But could the KRON/NULL basis contains somehow singular matrices, yet by combining them we get nonsingular solution? If yes I would like to see an example.<br>
======<br>
<br>
The simplest example is probably when A=B=Mtrue=eye(n).<br>
<br>
In that case the Kronderived matrix is Q=zeros(n^2) <br>
and null(Q)=eye(n^2). <br>
<br>
In this case, each and every null matrix M derived from reshaping a column of null(Q)<br>
is singular.<br>
<br>
Observe also that, in addition to M=eye(n), every possible nxn nonsingular matrix M is in the span of null(Q), and is a valid solution to problem 1.

Wed, 10 Nov 2010 16:01:06 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794894
Bruno Luong
<br>
> The simplest example is probably when A=B=Mtrue=eye(n).<br>
> <br>
> In that case the Kronderived matrix is Q=zeros(n^2) <br>
> and null(Q)=eye(n^2). <br>
> <br>
> In this case, each and every null matrix M derived from reshaping a column of null(Q)<br>
> is singular.<br>
> <br>
> Observe also that, in addition to M=eye(n), every possible nxn nonsingular matrix M is in the span of null(Q), and is a valid solution to problem 1.<br>
<br>
OK. That works. Now the question is what Jordan method gives in this case?<br>
<br>
Bruno

Wed, 10 Nov 2010 16:36:03 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794906
pushkarini
Hi<br>
The kron command works for a matrix A and another one B (which i derived from A using some column and row operations.) <br>
Next, I used orth(A) command to get an orthonormal basis for A. I then did:<br>
B = orth(A)<br>
and tried to find an M such that M*B = A*M, and after using the method involving kron got some value for M. But, when I used this M to compute my B back (using B = inv(M)*A*M), I did not get my B back. Why is this so? Then, I thought, it is probably not possible to convert A into orth(A) using such a method in the first place? I guess, adding proper 'lengths' to the row vectors of the orthonormal basis will solve the problem? <br>
I am doing all this to convert my matrix A which I start with to a normal matrix (ie. whose eigenvectors are perpendicular to eachother).

Wed, 10 Nov 2010 17:08:05 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794919
Matt J
"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibefk2$2hn$1@fred.mathworks.com>...<br>
><br>
> OK. That works. Now the question is what Jordan method gives in this case?<br>
=====<br>
<br>
It will give you some nonsingular matrix M. Which one depends on which of the infinite possible Jordan decompositions of A=eye(n) and B=eye(n) you decide to use.

Wed, 10 Nov 2010 17:36:05 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794929
Matt J
"pushkarini " <pushkarini.a@gmail.com> wrote in message <ibehlj$ijd$1@fred.mathworks.com>...<br>
<br>
Then, I thought, it is probably not possible to convert A into orth(A) using such a method in the first place? <br>
==============<br>
<br>
Correct. The transformation B=inv(M)*A*M will cause B to have the same eigenvalues as A. But orth(A) in general will not have the same eigenvalues as A.<br>
<br>
<br>
I guess, adding proper 'lengths' to the row vectors of the orthonormal basis will solve the problem? <br>
============<br>
<br>
I don't know what this means, but it sounds doubtful.<br>
<br>
<br>
> I am doing all this to convert my matrix A which I start with to a normal matrix (ie. whose eigenvectors are perpendicular to eachother).<br>
====================<br>
<br>
Always a good idea to say what you really want in the first place!!!<br>
<br>
Assuming A has a full set of n eigenvalues, you can do the following<br>
<br>
<br>
%Engine<br>
[V,D]=eig(A);<br>
iV=inv(V);<br>
<br>
M=(V*V')^(.5);<br>
<br>
B=inv(M)*A*M;

Wed, 10 Nov 2010 18:22:03 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794949
Bruno Luong
<br>
> <br>
> max( min ( norm( sum_i c(i)*M(:,:,i)*u)^2 ))<br>
> <br>
<br>
Note that the above criteria (minimum singular value) is not helpful since max > Inf if c=s*c' for s> inf given c' any arbitrary coefficients such that sum_i c'(i)*M(:,:,i) is non singular.<br>
<br>
It is better to minimize some quantity related to condition number or stretch of the spectrum. <br>
<br>
But anyway the problem of optimizing eigen/singular values is slightly OT.<br>
<br>
Bruno

Wed, 10 Nov 2010 18:42:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794952
Matt J
"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibensb$8r6$1@fred.mathworks.com>...<br>
> <br>
> > <br>
> > max( min ( norm( sum_i c(i)*M(:,:,i)*u)^2 ))<br>
> > <br>
> <br>
> Note that the above criteria (minimum singular value) is not helpful since max > Inf if c=s*c' for s> inf given c' any arbitrary coefficients such that sum_i c'(i)*M(:,:,i) is non singular.<br>
======<br>
<br>
I proably meant to have norm(c) bounded to 1 as well as norm(u). <br>
<br>
In any case, if you're going to solve this iteratively, it won't matterif max > Inf. As soon as you reach an iteration where <br>
<br>
M=sum_i c(i)*Mbasis(:,:,i) <br>
<br>
is nonsingular, you would terminate the algorithm, with M as your solution.

Wed, 10 Nov 2010 19:39:04 +0000
Re: finding a matrix used in matrix transformation
http://nl.mathworks.com/matlabcentral/newsreader/view_thread/295993#794972
Bruno Luong
"Matt J " <mattjacREMOVE@THISieee.spam> wrote in message <ibep1s$pob$1@fred.mathworks.com>...<br>
> "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <ibensb$8r6$1@fred.mathworks.com>...<br>
> > <br>
> > > <br>
> > > max( min ( norm( sum_i c(i)*M(:,:,i)*u)^2 ))<br>
> > > <br>
> > <br>
> > Note that the above criteria (minimum singular value) is not helpful since max > Inf if c=s*c' for s> inf given c' any arbitrary coefficients such that sum_i c'(i)*M(:,:,i) is non singular.<br>
> ======<br>
> <br>
> I proably meant to have norm(c) bounded to 1 as well as norm(u). <br>
> <br>
<br>
Yes. norm(c)=1 is equivalent to Frobenious norm of transition matrix = 1, which is bounded by the spectral norm (both norms are equivalent). So by maximizing the smallest singularvalue with c=1, it's close to the problem of minimizing the condition number without imposing constraint on c.<br>
<br>
> In any case, if you're going to solve this iteratively, it won't matterif max > Inf. As soon as you reach an iteration where <br>
> <br>
> M=sum_i c(i)*Mbasis(:,:,i) <br>
> <br>
> is nonsingular, you would terminate the algorithm, with M as your solution.<br>
<br>
Nope, that's not satisfying justification IMO.<br>
<br>
Bruno