Ask Your Question

fuglede's profile - activity

2021-11-05 18:41:41 +0200 received badge  Famous Question (source)
2017-04-06 19:05:55 +0200 received badge  Famous Question (source)
2017-04-06 19:05:55 +0200 received badge  Notable Question (source)
2016-12-05 08:22:00 +0200 received badge  Popular Question (source)
2016-12-05 08:22:00 +0200 received badge  Notable Question (source)
2015-12-14 00:59:00 +0200 received badge  Popular Question (source)
2015-09-03 12:12:42 +0200 received badge  Supporter (source)
2015-08-29 13:32:27 +0200 received badge  Student (source)
2015-08-27 15:40:13 +0200 commented answer Inverses of matrices of Laurent polynomials

Thanks for the answer. I don't think it entirely answers my question. In my case, there is a way to obtain a matrix over the desired ring as one could try to coerce all entries (even though apply_map doesn't work for whatever reason). Clearly though, that's a very inelegant way of doing it, and so I was looking for the "correct" way to do it.

2015-08-25 12:30:32 +0200 received badge  Editor (source)
2015-08-25 12:16:00 +0200 asked a question Inverses of matrices of Laurent polynomials

This question is rather similar in spirit to my previous question in that it's about figuring out how to "correctly" manipulate matrices of polynomials, ensuring that everything stays in the right rings.

In this case, I have a matrix, all of whose elements are of the form Univariate Laurent Polynomial Ring in t over Integer Ring. The matrix has an inverse over this ring, yet sage insists that the entries of the inverse belong to Fraction Field of Univariate Polynomial Ring in t over Integer Ring. Here's a minimal example:

sage: R.<t> = LaurentPolynomialRing(ZZ)
sage: f = t^2
sage: mat = matrix([[f]])
sage: mat[0,0].parent()
Univariate Laurent Polynomial Ring in t over Integer Ring
sage: mat.inverse()
[1/t^2]
sage: mat.inverse()[0,0].parent()
Fraction Field of Univariate Polynomial Ring in t over Integer Ring

Desired output:

sage: mat.inverse()
[t^-2]
sage: mat.inverse()[0,0].parent()
Univariate Laurent Polynomial Ring in t over Integer Ring

What would have been the correct way to obtain what I want?

Using apply_map to force each entry back into the right ring does not immediately do the job:

sage: R(1/f)
t^-2
sage: mat.inverse().apply_map(lambda f: R(f))
...
TypeError: denominator must be a unit
sage: mat.inverse().apply_map(R)
...
TypeError: denominator must be a unit
2015-08-18 16:57:25 +0200 commented answer Eigenvalues of matrices of Laurent polynomials

Nifty. Hope that one goes through. I've accepted the other answer as it does the job for now.

2015-08-18 16:56:22 +0200 commented answer Eigenvalues of matrices of Laurent polynomials

Thanks for the answer. I'd upvote both of them if I had the karma.

2015-08-18 16:55:36 +0200 received badge  Scholar (source)
2015-08-14 17:04:18 +0200 commented answer Eigenvalues of matrices of Laurent polynomials

Thanks for the answer. That almost works. If I replace the '2' of the example by a non-real, though, I get a TypeError instead. Can anything be done about that?

2015-08-14 16:26:16 +0200 asked a question Eigenvalues of matrices of Laurent polynomials

Say that I have a matrix whose entries are univariate Laurent polynomials over complex numbers. In that case, I can substitute the variable for non-zero complex numbers to obtain an ordinary complex matrix. My question is the following: what the correct way to obtain the eigenvalues of the resulting complex matrix? My first guess was to do something like the following which just throws a NotImplementedError:

sage: R = LaurentPolynomialRing(CC, 'x')
sage: x = R.gens()[0]
sage: m = matrix([[x]])
sage: m.subs({x: 2}).eigenvalues()