Symbolic Series¶
Symbolic series are special kinds of symbolic expressions that are
constructed via the
Expression.series
method.
They usually have an Order()
term unless the series representation
is exact, see
is_terminating_series()
.
For series over general rings see
power series
and
Laurent series
.
EXAMPLES:
We expand a polynomial in \(x\) about \(0\), about \(1\), and also truncate it back to a polynomial:
sage: var('x,y')
(x, y)
sage: f = (x^3 - sin(y)*x^2 - 5*x + 3); f
x^3 - x^2*sin(y) - 5*x + 3
sage: g = f.series(x, 4); g
3 + (-5)*x + (-sin(y))*x^2 + 1*x^3 + Order(x^4)
sage: g.truncate()
x^3 - x^2*sin(y) - 5*x + 3
sage: g = f.series(x==1, oo); g
(-sin(y) - 1) + (-2*sin(y) - 2)*(x - 1) + (-sin(y) + 3)*(x - 1)^2 + 1*(x - 1)^3
sage: h = g.truncate(); h
(x - 1)^3 - (x - 1)^2*(sin(y) - 3) - 2*(x - 1)*(sin(y) + 1) - sin(y) - 1
sage: h.expand()
x^3 - x^2*sin(y) - 5*x + 3
We compute another series expansion of an analytic function:
sage: f = sin(x)/x^2
sage: f.series(x,7)
1*x^(-1) + (-1/6)*x + 1/120*x^3 + (-1/5040)*x^5 + Order(x^7)
sage: f.series(x==1,3)
(sin(1)) + (cos(1) - 2*sin(1))*(x - 1) + (-2*cos(1) + 5/2*sin(1))*(x - 1)^2 + Order((x - 1)^3)
sage: f.series(x==1,3).truncate().expand()
-2*x^2*cos(1) + 5/2*x^2*sin(1) + 5*x*cos(1) - 7*x*sin(1) - 3*cos(1) + 11/2*sin(1)
Following the GiNaC tutorial, we use John Machin’s amazing formula \(\pi = 16 \mathrm{tan}^{-1}(1/5) - 4 \mathrm{tan}^{-1}(1/239)\) to compute digits of \(\pi\). We expand the arc tangent around 0 and insert the fractions 1/5 and 1/239.
sage: x = var('x')
sage: f = atan(x).series(x, 10); f
1*x + (-1/3)*x^3 + 1/5*x^5 + (-1/7)*x^7 + 1/9*x^9 + Order(x^10)
sage: (16*f.subs(x==1/5) - 4*f.subs(x==1/239)).n()
3.14159268240440
Note: The result of an operation or function of series is not automatically expanded to a series. This must be explicitly done by the user:
sage: ex1 = sin(x).series(x, 4); ex1
1*x + (-1/6)*x^3 + Order(x^4)
sage: ex2 = cos(x).series(x, 4); ex2
1 + (-1/2)*x^2 + Order(x^4)
sage: ex1 + ex2
(1 + (-1/2)*x^2 + Order(x^4)) + (1*x + (-1/6)*x^3 + Order(x^4))
sage: (ex1 + ex2).series(x,4)
1 + 1*x + (-1/2)*x^2 + (-1/6)*x^3 + Order(x^4)
sage: x*ex1
x*(1*x + (-1/6)*x^3 + Order(x^4))
sage: (x*ex1).series(x,5)
1*x^2 + (-1/6)*x^4 + Order(x^5)
sage: sin(ex1)
sin(1*x + (-1/6)*x^3 + Order(x^4))
sage: sin(ex1).series(x,9)
1*x + (-1/3)*x^3 + 11/120*x^5 + (-53/2520)*x^7 + Order(x^9)
sage: (sin(x^2)^(-5)).series(x,3)
1*x^(-10) + 5/6*x^(-6) + 3/8*x^(-2) + 367/3024*x^2 + Order(x^3)
sage: (cot(x)^(-3)).series(x,3)
Order(x^3)
sage: (cot(x)^(-3)).series(x,4)
1*x^3 + Order(x^4)
- class sage.symbolic.series.SymbolicSeries¶
Bases:
sage.symbolic.expression.Expression
Trivial constructor.
EXAMPLES:
sage: loads(dumps((x+x^3).series(x,2))) 1*x + Order(x^2)
- coefficients(x=None, sparse=True)¶
Return the coefficients of this symbolic series as a list of pairs.
INPUT:
x
– optional variable.sparse
– Boolean. IfFalse
return a list with as muchentries as the order of the series.
OUTPUT:
Depending on the value of
sparse
,A list of pairs
(expr, n)
, whereexpr
is a symbolic expression andn
is a power (sparse=True
, default)A list of expressions where the
n
-th element is the coefficient ofx^n
when self is seen as polynomial inx
(sparse=False
).
EXAMPLES:
sage: s=(1/(1-x)).series(x,6); s 1 + 1*x + 1*x^2 + 1*x^3 + 1*x^4 + 1*x^5 + Order(x^6) sage: s.coefficients() [[1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5]] sage: s.coefficients(x, sparse=False) [1, 1, 1, 1, 1, 1] sage: x,y = var("x,y") sage: s=(1/(1-y*x-x)).series(x,3); s 1 + (y + 1)*x + ((y + 1)^2)*x^2 + Order(x^3) sage: s.coefficients(x, sparse=False) [1, y + 1, (y + 1)^2]
- default_variable()¶
Return the expansion variable of this symbolic series.
EXAMPLES:
sage: s=(1/(1-x)).series(x,3); s 1 + 1*x + 1*x^2 + Order(x^3) sage: s.default_variable() x
- is_terminating_series()¶
Return True if the series is without order term.
A series is terminating if it can be represented exactly, without requiring an order term. You can explicitly request terminating series by setting the order to positive infinity.
OUTPUT:
Boolean.
True
if the series has no order term.EXAMPLES:
sage: (x^5+x^2+1).series(x, +oo) 1 + 1*x^2 + 1*x^5 sage: (x^5+x^2+1).series(x,+oo).is_terminating_series() True sage: SR(5).is_terminating_series() False sage: exp(x).series(x,10).is_terminating_series() False
- power_series(base_ring)¶
Return algebraic power series associated to this symbolic series. The coefficients must be coercible to the base ring.
EXAMPLES:
sage: ex=(gamma(1-x)).series(x,3); ex 1 + euler_gamma*x + (1/2*euler_gamma^2 + 1/12*pi^2)*x^2 + Order(x^3) sage: g=ex.power_series(SR); g 1 + euler_gamma*x + (1/2*euler_gamma^2 + 1/12*pi^2)*x^2 + O(x^3) sage: g.parent() Power Series Ring in x over Symbolic Ring
- truncate()¶
Given a power series or expression, return the corresponding expression without the big oh.
OUTPUT:
A symbolic expression.
EXAMPLES:
sage: f = sin(x)/x^2 sage: f.truncate() sin(x)/x^2 sage: f.series(x,7) 1*x^(-1) + (-1/6)*x + 1/120*x^3 + (-1/5040)*x^5 + Order(x^7) sage: f.series(x,7).truncate() -1/5040*x^5 + 1/120*x^3 - 1/6*x + 1/x sage: f.series(x==1,3).truncate().expand() -2*x^2*cos(1) + 5/2*x^2*sin(1) + 5*x*cos(1) - 7*x*sin(1) - 3*cos(1) + 11/2*sin(1)