First time here? Check out the FAQ!

Ask Your Question
1

how to get the smith normal form of lambda matrix

asked 8 years ago

cguo gravatar image

Hi:

Right now, I know sage matrix can get the smith_form and elementary_divisors on pure integer matrix. But I want to get the same stuff on lambda matrix. What I actually mean is:

http://www.solitaryroad.com/c153.html (www.solitaryroad.com/c153.html) (my karma is not enough to put a direct link)

I directly construct a matrix and the minus lambda times identity matrix and call smith_form is not working. So how to get the smith normal form of lambda matrix in sagemath? Or if sagemath can not do that, which computer algebra system can do the job?

Preview: (hide)

Comments

Could you please provide an explicit example of a lambda matrix you want to deal with ?

tmonteil gravatar imagetmonteil ( 8 years ago )

1 Answer

Sort by » oldest newest most voted
1

answered 8 years ago

nbruin gravatar image

It seems you are interested in Smith normal form of matrices over a univariate polynomial ring. Indeed, Smith Normal Form works well there, and is implemented.

sage: R.<x>=QQ[]
sage: M=matrix(2,2,[x^2,x+1,x^3+x+1,x^4-1])
sage: M.smith_form()
(
[                                1                                 0]
[                                0 x^6 - x^4 - x^3 - 2*x^2 - 2*x - 1],

[ x^2 - x + 1       -x + 1]  [                  1 x^5 - x^4 - x^3 - x]
[-x^3 - x - 1          x^2], [                  0                   1]
)

(I recommend that you track down a little more mainstream sources for your mathematics, that use more universally understood terminology)

Preview: (hide)
link

Comments

it works. By the way, R.<x>=QQ[], I get a symbol x over QQ, R.<x>=RR[], I get a symbol over RR. The first time, I use x=var('x') to construct symbol x, so smith_form() not working. What is the stuff I actually get from var('x')? What ring it actually over?

cguo gravatar imagecguo ( 8 years ago )

This indicates:

sage: parent(var('x'))
Symbolic Ring

The "Symbolic RIng" acts as a parent for "symbolic expressions". It doesn't actually satisfy the axioms of a ring (floating point arithmetic already doesn't), but for limited use you can sometimes pretend it does without being proven wrong. It also contains transcendental expressions like sin(x), that may satisfy nontrivial (trigonometric in this case) relations to other ones. It mainly exists to support calculus-type computations. It's rather inappropriate for non-trivial algebraic work.

Note that "smith_form" for matrices over RR['x'] is likely problematic (if implemented at all) because of floating-point rounding.

nbruin gravatar imagenbruin ( 8 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 8 years ago

Seen: 1,233 times

Last updated: Aug 15 '16