How to get the coefficients of the minimal polynomial ?
조회 수: 4 (최근 30일)
이전 댓글 표시
Dear All,
I have to find the coefficients of the minimal polynomial of all the matrices stored in a 3-D array. I have tried through the MuPAD but through that I am getting the whole polynomial, If anyone knows the way how to extract only the coefficients from it(i.e. from the polynomial in MuPAD) and then to store them in a vector in matlab, or if any function in Matlab only which can give the coefficients of the minimal polynomial.
Here is the code for the mupad :
nb=mupad;
A:=Dom::Matrix(Dom::Rational)([[1,-1,-1],[1,-2,1],[0,1,-3]]);
delete x: linalg::minpoly(A,x)
This gives the minimal polynomial for the given matrix in 'x'. (I have to do it for the 3-D array of matrices).
If anyone knows some other way too that would be very helpful.
URGENT help needed !!
Thank you, Palash.
댓글 수: 0
채택된 답변
Kai Gehrs
2011년 6월 22일
Hi Palash,
I think the following MATLAB function could do the job for your problem:
function p = minpoly(A)
p = evalin(symengine, ['map(poly2list(linalg::minpoly(' char(sym(A)) ',x)),c->c[1])']);
end
If you add it in MATLAB to your path, then you can call it via:
>> A = [1 -1 -1; 1 -2 1; 0 1 -3]; % minimal polynomial is x^3 + 4*x^2 + x - 1
>> minpoly(A)
ans =
[ 1, 4, 1, -1]
Hope this helps. Inside of MuPAD the function 'poly2list' converts polynomials to a nested list representation containing the information on the coefficients of polynomials.
Best regards,
-- Kai
댓글 수: 0
추가 답변 (3개)
Palash
2011년 6월 22일
댓글 수: 1
Walter Roberson
2011년 6월 22일
evalin(symengine) the linalg::minpoly operation, which will return the symbolic result to MATLAB. sym2poly() that result at the MATLAB level.
There is no MATLAB function that does this computation directly.
Pantelis Sopasakis
2011년 11월 9일
Just my two cents... The code posted by Kai Gehrs will not work if the returned polynomial has some zero coefficients. Try for example the matrix:
A=ones(3,3);
The output will be
[1 -3]
instead of
[1 -3 0]
An m-function that takes care of such a case can be found at https://github.com/alphaville/eat/blob/master/zz_minPolSymb.m
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!