Thanks, I missed the reply.

I will start working on the next days in a new pull request on a new file 
in sympy/series 

Pablo

On Thursday, November 7, 2013 6:30:34 AM UTC+1, Aaron Meurer wrote:
>
> Yes, I think it is useful. I would model it off functions like 
> fourier_transform, which have unevaluated counterparts if they cannot 
> be computed. 
>
> There are a few other issues with the code as well. The best way to 
> comment on them would be if you submitted a pull request, though, so 
> I'll wait for that. 
>
> As for where it should go, I'm not sure. This is more related to 
> integration than series expansion, in the sense that the series module 
> is more about taking finite series expansions and limits (which use 
> series expansions).  This is a full series expansion. I think it would 
> be useful to have several of these (e.g., it would also be nice to 
> have a function that could return the full summation taylor expansion 
> for an expression).  So I'm not sure where it should go. I guess start 
> a new file in sympy/series. We can figure out if it belongs somewhere 
> else later. 
>
> Aaron Meurer 
>
> On Sun, Oct 27, 2013 at 11:34 AM, Pablo Puente 
> <[email protected]<javascript:>> 
> wrote: 
> > Hi, 
> > 
> > I have written 2 functions to support Fourier sine and cosine series. 
> See 
> > code below. 
> > 
> > I have these questions: 
> > 
> > 1. Do you think is worth to add it to Sympy? 
> > 2. Should it be a part of series/series.py or  a new file 
> > series/series_fourier.py ? 
> > 3. When testing it I tried to add it to series_py. The import for 
> integrate 
> [This was just  a problem in my environment.] 
> > 
> > Thanks, 
> > Pablo 
> > ----- 
> >     x = symbols('x', real=True) 
> >     L= symbols('L', real=True, positive=True) 
> >     pprint(series_fourier(x, x, -L, L)) 
> > 
> >   ∞ 
> > _____ 
> > ╲ 
> >  ╲           n      ⎛π⋅n⋅x⎞ 
> >   ╲   -2⋅(-1) ⋅L⋅sin⎜─────⎟ 
> >    ╲                ⎝  L  ⎠ 
> >    ╱  ────────────────────── 
> >   ╱            π⋅n 
> >  ╱ 
> > ╱ 
> > ‾‾‾‾‾ 
> > n = 1 
> > 
> >     pprint(series_fourier_expansion(x/(2*L), x, 4, 0, 2*L)) 
> > 
> >      ⎛π⋅x⎞      ⎛2⋅π⋅x⎞      ⎛3⋅π⋅x⎞      ⎛4⋅π⋅x⎞ 
> >   sin⎜───⎟   sin⎜─────⎟   sin⎜─────⎟   sin⎜─────⎟ 
> >      ⎝ L ⎠      ⎝  L  ⎠      ⎝  L  ⎠      ⎝  L  ⎠   1 
> > - ──────── - ────────── - ────────── - ────────── + ─ 
> >      π          2⋅π          3⋅π          4⋅π       2 
> > 
> > ----- 
> > 
> > from __future__ import print_function, division 
> > 
> > from sympy.core.add import Add 
> > from sympy.integrals import integrate 
> > from sympy.core.singleton import S 
> > from sympy.core.compatibility import xrange 
> > from sympy.functions.elementary.trigonometric import cos, sin 
> > from sympy.core.symbol import Symbol 
> > from sympy.concrete.summations import Sum 
> > 
> > 
> > def series_fourier_expansion(expr, x, n, interval_inf, interval_sup): 
> >     """ Returns a truncated Fourier sine and cosine series expansion 
> >     up to n+1 terms (sin(nx)/cos(nx)) over the indicated interval 
> >     """ 
> >     # http://mathworld.wolfram.com/FourierSeries.html 
> >     if interval_sup < interval_inf: 
> >         raise Exception('interval_sup cannot be less than interval_inf') 
> >     L = interval_sup - interval_inf 
> >     l = list() 
> >     integrate_tuple = (x, interval_inf, interval_sup) 
> >     l.append(integrate(expr, integrate_tuple)/L)  # A0/2 
> >     for m in xrange(1, n+1): 
> >         cos_expr = cos(2*m*S.Pi*x/L) 
> >         sin_expr = sin(2*m*S.Pi*x/L) 
> >         An = 2*integrate(expr*cos_expr, integrate_tuple)/L 
> >         Bn = 2*integrate(expr*sin_expr, integrate_tuple)/L 
> >         l.append(An*cos_expr) 
> >         l.append(Bn*sin_expr) 
> >     return Add(*l) 
> > 
> > 
> > def series_fourier(expr, x, interval_inf, interval_sup): 
> >     """ Returns the unevaluated Fourier sine and cosine series 
> calculated 
> >     over the indicated interval 
> >     """ 
> >     # http://mathworld.wolfram.com/FourierSeries.html 
> >     if interval_sup < interval_inf: 
> >         raise Exception('interval_sup cannot be less than interval_inf') 
> >     n = Symbol('n', integer=True, positive=True) 
> >     L = interval_sup - interval_inf 
> >     integrate_tuple = (x, interval_inf, interval_sup) 
> >     result = integrate(expr, integrate_tuple)/L  # A0/2 
> >     cos_expr = cos(2*n*S.Pi*x/L) 
> >     sin_expr = sin(2*n*S.Pi*x/L) 
> >     An = (2*integrate(expr*cos_expr, integrate_tuple)/L).simplify() 
> >     Bn = (2*integrate(expr*sin_expr, integrate_tuple)/L).simplify() 
> >     if An != S.Zero: 
> >         result += Sum(An*cos_expr, (n, 1, S.Infinity)) 
> >     if Bn != S.Zero: 
> >         result += Sum(Bn*sin_expr, (n, 1, S.Infinity)) 
> >     return result 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "sympy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected]<javascript:>. 
>
> > Visit this group at http://groups.google.com/group/sympy. 
> > For more options, visit https://groups.google.com/groups/opt_out. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to