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

10 次查看(过去 30 天)
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??

回答(1 个)

Mukul Rao
Mukul Rao 2015-6-23
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 个评论

请先登录,再进行评论。

产品

Community Treasure Hunt

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

Start Hunting!

Translated by