MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Expanding definite integrals in a power series about a parameter

  • To: mathgroup at smc.vnet.net
  • Subject: [mg35444] Expanding definite integrals in a power series about a parameter
  • From: "Carl K. Woll" <carlw at u.washington.edu>
  • Date: Fri, 12 Jul 2002 04:29:17 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Hi newsgroup,

I have developed a package called SeriesSolve that can do two neat
things (I think).  There are a few bugs in the package, so that it is
not quite ready for MathSource.  The package works sufficiently well
for me as it is, so I am checking with you guys to see if the
functionality provided by the package would interest you.

First, given a polynomial with coefficients which are themselve power
series in another variable, the function SeriesSolve will find the
roots of the polynomial in a series in that variable. As a very simple
example, suppose you have the polynomial (a+a^2)+x+a x^2+(1+a^2)x^3 and
are interested in the roots of this polynomial. Using SeriesSolve, this
is simple (you will need to view all of the following formulas in a
fixed font to understand what's going on):

rt=SeriesSolve[(a+a^2)+x+a x^2+(1+a^2)x^3,x,{a,0,5}]//Chop
             2       4       5       6
{-1. a - 1. a  + 1. a  + 3. a  + O[a] ,

                        2                  3
  1. I + (0.5 - 0.5 I) a  + (0.5 + 0.5 I) a  -

                   4       5       6
   (0.5 - 1.25 I) a  - 2. a  + O[a] ,

                         2                  3
  -1. I + (0.5 + 0.5 I) a  + (0.5 - 0.5 I) a  -

                   4       5       6
   (0.5 + 1.25 I) a  - 2. a  + O[a] }

Let's check that the putative solutions are indeed correct

In[4]:=
(1+a^2)Times@@(x-rt)//ExpandAll//Chop
Collect[%,x]
Out[4]=
         3              2             3   2       6
(1. x + x ) + (1. + 1. x ) a + (1. + x ) a  + O[a]
Out[5]=
           2                2         2   3
1. a + 1. a  + 1. x + 1. a x  + (1 + a ) x

Admittedly, it is not difficult to produce the above output for low order
power series in a. However, for high order power series, for power series
with multiple roots (at lowest order) or for power series
where the coefficient of the highest order term in the polynomial vanishes
at leading order in the power series, it does become difficult to produce
the roots of the polynomials. My package can handle all of these
situations. For a slightly more difficult example, consider

In[11]:=
rt=SeriesSolve[(1+a)x^3+a x^2+a^3 x+a^4,x,{a,0,5}]//Chop
Out[11]=
       3/2        3          7/2        4
{1. I a    + 0.5 a  - 0.5 I a    - 0.5 a  -

            9/2       5            11/2       6
   0.125 I a    - 1. a  + 2.125 I a     + O[a] ,

         3/2        3          7/2        4
  -1. I a    + 0.5 a  + 0.5 I a    - 0.5 a  +

            9/2       5            11/2       6
   0.125 I a    - 1. a  - 2.125 I a     + O[a] ,

              2       3       4       5       6
  -1. a + 1. a  - 2. a  + 2. a  + 1. a  + O[a] }

and checking the solution:

In[12]:=
(1+a)Times@@(x-rt)//ExpandAll//Chop
Out[12]=
 3        2    3            3       4       6
x  + (1. x  + x ) a + 1. x a  + 1. a  + O[a]

I hope that gives you a sufficient idea about how SeriesSolve works.
In particular, when the coefficient of the highest order term vanishes
at leading order in the expansion, it becomes quite difficult to find
the series form of the roots.

You might wonder why I developed this package. Consider evaluating an
integral of the form

Integrate[ q^m / poly^n, {q,0,Infinity}]

where poly stands for some polynomial in q with coefficients which are
themselves polynomials in another variable, say a. Then, using the
calculus of residues it is possible to evaluate these integrals, and in
particular one can find the series expansion in a of the integral. This
is exactly what the function SeriesRationalIntegrate does. For example,
if the polynomial is a+a q+q^2+q^3, then let

In[13]:=
int=SeriesRationalIntegrate[a+a q+q^2+q^3,q,{a,0,5}];

where I put a semicolon at the end as the output of SeriesRationalIntegrate
is rather unappetizing. Now, int[n,m] will return the series expansion of
the integral

Integrate[q^m/(a+a q+q^2+q^3)^n,{q,0,Infinity}]

Note that when a=0, the above integral is divergent. Hence, you can't simply
expand
the integrand in a series in a and then do term by term integration. At any
rate, we
find for example,

In[14]:=
int[1,1/2]
Out[14]=
2.22144                      1/4            3/4
------- - 3.14159 + 2.22144 a    - 2.22144 a    +
  1/4
 a

                       5/4            7/4            2
  3.14159 a - 2.22144 a    + 2.22144 a    - 3.14159 a  +

           9/4            11/4            3
  2.22144 a    - 2.22144 a     + 3.14159 a  -

           13/4            15/4            4
  2.22144 a     + 2.22144 a     - 3.14159 a  +

           17/4            19/4            5       21/4
  2.22144 a     - 2.22144 a     + 3.14159 a  + O[a]

Deriving this series expansion is not at all trivial.

Of course, there may not be much interest in doing a series on a root
object (SeriesSolve) or doing a series on a particular kind of definite
integral (SeriesRationalIntegrate). If there is, I will polish up the
package and post it sometime.

Carl Woll
Physics Dept
U of Washington




  • Prev by Date: RE: White border in plots
  • Next by Date: Re: arguments of the function.
  • Previous by thread: Re: Why isn't Cancel more or less automatic?
  • Next by thread: Re: arguments of the function.