Finding Jordan Canonical Form (V and J) of a big square matrix

9 views (last 30 days)
While using [V J] = jordan(A); for a 33x33 matrix A, I am getting the following error.
Code:
if true
% code
end
N = 33;
W = zeros(N,N);
for i=1:N
for j = 1:N
if(i ~= j)
if(round(rand - 0.1))
W(i,j) = round(5*rand);
end
end
end
end
[V J] = jordan(W);
Command Window:
if true
% code
end
Warning: Found roots of the minimal polynomial that cannot be determined
in terms of radicals. [linalg::jordanForm]
Error using mupadmex
Error in MuPAD command: The operand is invalid. [_index]
Evaluating: symobj::jordan
Error in sym/mupadmexnout (line 879)
out = mupadmex(fcn,args{:});
Error in sym/jordan (line 34)
[Vsym,Jsym] = mupadmexnout('symobj::jordan',A,'All');
Error in jordan (line 25)
[V,J] = jordan(sym(A));
When I increase the size of the matrix A, I get the following error
if true
% code
end
Error using mupadmex
Error in MuPAD command: Similarity matrix too large.
Error in sym/mupadmexnout (line 879)
out = mupadmex(fcn,args{:});
Error in sym/jordan (line 34)
[Vsym,Jsym] = mupadmexnout('symobj::jordan',A,'All');
Error in jordan (line 25)
[V,J] = jordan(sym(A));
How can I get the jordan decomposition of bigger matrices say a maximum of 200x200 matrix??

Answers (1)

Mukul Rao
Mukul Rao on 23 Jun 2015
The Jordan function has an imposed size limit to help prevent exceedingly long calculations. In order to get around the error, execute this function instead:
>> feval(symengine, 'linalg::jordanForm', A, 'All')
Where "A" is the matrix which you are analyzing. Note that while this will bypass the size limitation, the calculation can take a very long time. If you are just interested in the eigenvalues and eigenvectors of the matrix, consider using the "eig" function instead.
  3 Comments

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!