# How do I code a Laurent Series with variable coefficients?

I am attempting the following procedure:

1. Begin with a polynomial $Z(u)$ with variable coefficients, of the form $1 + au + bu^2 + cu^3 + pbu^4 + p^2au^5 + p^3u^6$.
2. Examine the coefficients of $Z'(u)/Z(u)$ as a power series in $u$.

It is this quest which leads me to attempt to construct a LaurentSeriesRing with variable coefficients. However, I keep encountering TypeErrors, I am wondering if a kind soul could help me in my quest. I will use here a very simple polynomial f to get the point across.

I am attempting to construct a LaurentSeriesRing with variable coefficients. However, I keep encountering TypeErrors, I am wondering if a kind soul could help me in my quest. I will use here a very simple polynomial f to get the point across.

sage: R.<t> = LaurentSeriesRing(QQ, 't')
sage: var('a')
a
sage: f = 1 + a*t
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-06d3f2f41e45> in <module>()
----> 1 f = Integer(1) + a*t

sage/structure/element.pyx in sage.structure.element.Element.__mul__ (/usr/lib/sagemath//src/build/cythonized/sage/structure/element.c:12443)()

sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel_cache_maps.bin_op (/usr/lib/sagemath//src/build/cythonized/sage/structure/coerce.c:10496)()

TypeError: unsupported operand parent(s) for '*': 'Symbolic Ring' and 'Laurent Series Ring in t over Rational Field'


I also tried:

sage: R.<u> = QQ[]
sage: var('a')
a
sage: f = 1 + a*u
sage: ff = derivative(f, u)
sage: R.<u> = LaurentSeriesRing(QQ); R
sage: f/ff + O(u^5)
----------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-28-c4846de7ced8> in <module>()
----> 1 f/ff + O(u**Integer(5))

sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel_cache_maps.bin_op (/usr/lib/sagemath//src/build/cythonized/sage/structure/coerce.c:10496)()

TypeError: unsupported operand parent(s) for '+': 'Symbolic Ring' and 'Laurent Series Ring in u over Rational Field'

edit retag close merge delete

Sort by » oldest newest most voted

One possibility is to use multivariate Laurent polynomials and let one variable be your parameter

sage: R.<a,t> = LaurentSeriesRing(QQ)
sage: R
Multivariate Laurent Polynomial Ring in a, t over Rational Field


another one is to use coefficients being themselves polynomials

sage: P.<t> = PolynomialRing(QQ)
sage: R.<a> = LaurentSeriesRing(P)
sage: R
Univariate Laurent Polynomial Ring in a over Univariate Polynomial Ring in t over Rational Field


There are also several other ways but everything depends on what you want to do with them... try to make your question more precise.

EDIT: to expand a quotient (of polynomials) with parameters, the second method is more appropriate

sage: P.<t> = PolynomialRing(QQ)
sage: R.<a> = LaurentSeriesRing(P)
sage: num = (t^2 + 1) * a^2 + (-t + 2) * a + (t^2 - 1)
sage: den = (t^3 + t + 1) * a^2 + (2*t + 5) * a - 1
sage: num / den
(-t^2 + 1) + (-2*t^3 - 5*t^2 + 3*t + 3)*a + ... + O(a^20)

more

I am attempting to expand as a power series a quotient with variable coefficients. With this formalism, I am still unable to expand the polynomial quotient I receive (for my more complicated quotient, still in a and t) by adding + O(t^5).

Then I advice you to edit your own question starting with what you are trying to achieve together with an example of a quotient.

Thank you very much, your edit was a lifesaver, and now everything works!