Let us assume we do not know the series expansion at $0$ of $$S : z\mapsto\frac{1}{1-(z/2)^2}$$ (consider a more difficult rational fraction if you do not want to make this assumption).
A method to compute the coefficients (*) is to compute a complex integral on a circle: the $k$-th coefficient is given by
$$
a(k)=\frac{1}{2i\pi}\int_{C(0,1)}\frac{S(z)}{z^{k+1}}dz=\int_0^1S\left(\exp\left(2i\pi t\right)\right)\exp\left(-2i\pi kt\right) dt.
$$
But, even in this easy case, I am not able to help Sagemath to do the computation:
kk,k,t,z=var('kk,k,t,z')
assume(k,'integer')
assume(k>0)
S(z)=1/(1-(z/2)^2)
J(kk)=integrate(S(e^(2*I*pi*t))*e^(-2*pi*I*kk*t),t,0,1,hold=True)
Appealing J(k) returns a mistake and requires an assumption on $I$ and $\pi$ :
ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation may help (example of legal syntax is 'assume(%i%pi>0)', see assume?
for more details)
Is %i%pi an integer?
- Any idea to perform the computation of this integral for any integer $k$ (I would like to have a symbolic answer in term of $k$, not a procedure that returns a numerical result for any numeric value of $k$) ?
2.Is there another way to get the coefficients (again meaning a general formula depending on k, like 1/k! for exp).
(*) Not the only one, one also could you a general result on the form of a sequence whose generating function is a rational fraction.
NB. A similar question was asked a few years ago, without positive answer. But situation might have evolved.
The full text Sage message :
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/interfaces/maxima_lib.py:817, in MaximaLib.sr_integral(self, *args)
816 try:
--> 817 return max_to_sr(maxima_eval(([max_integrate],
818 [sr_to_max(SR(a)) for a in args])))
819 except RuntimeError as
error: error:
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/libs/ecl.pyx:838, in sage.libs.ecl.EclObject.__call__ (build/cythonized/sage/libs/ecl.c:11700)()
837 lispargs = EclObject(list(args))
--> 838 return ecl_wrap(ecl_safe_apply(self.obj,
(<eclobject>lispargs).obj))
(<EclObject>lispargs).obj))
839
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/libs/ecl.pyx:358, in sage.libs.ecl.ecl_safe_apply (build/cythonized/sage/libs/ecl.c:9207)()
357 else:
--> 358 raise RuntimeError("ECL says: {}".format(message))
359
else: else:
RuntimeError: ECL says: Maxima asks: Is %i*%pi an
integer? integer?
During handling of the above exception, another exception
occurred: occurred:
ValueError Traceback (most recent call last)
Cell In[4], line 1
----> 1
J(k) J(k)
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/symbolic/expression.pyx:6187, in sage.symbolic.expression.Expression.__call__ (build/cythonized/sage/symbolic/expression.cpp:78521)()
6185 z^2 + x^y
6186 """
-> 6187 return self._parent._call_element_(self,
args, *kwds)
*args, **kwds)
6188
6189 def
variables(self): variables(self):
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/symbolic/callable.py:422, in CallableSymbolicExpressionRing_class._call_element_(self, _the_element, *args,
kwds)
**kwds)
420 d = dict(zip([repr(_) for _ in self.arguments()], args))
421 d.update(kwds)
--> 422 return
SR(_the_element.substitute(d)) SR(_the_element.substitute(**d))
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/structure/element.pyx:849, in sage.structure.element.Element.substitute (build/cythonized/sage/structure/element.c:15440)()
847 5
848 """
--> 849 return
self.subs(args, *kwds)
self.subs(*args, **kwds)
850
851
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/symbolic/expression.pyx:5899, in sage.symbolic.expression.Expression.subs (build/cythonized/sage/symbolic/expression.cpp:76733)()
5897
smap.insert(make_pair((<expression>self.coerce_in(k))._gobj,
smap.insert(make_pair((<Expression>self.coerce_in(k))._gobj,
5898
(<expression>self.coerce_in(v))._gobj))
(<Expression>self.coerce_in(v))._gobj))
-> 5899 res = self._gobj.subs_map(smap, 0)
5900 return new_Expression_from_GEx(self._parent, res)
5901
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/symbolic/function.pyx:1137, in sage.symbolic.function.BuiltinFunction._evalf_or_eval_ (build/cythonized/sage/symbolic/function.c:16410)()
1135 res =
self._evalf_try_(args)
self._evalf_try_(*args)
1136 if res is None:
-> 1137 return
self._eval0_(args)
self._eval0_(*args)
1138 else:
1139 return
res res
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/symbolic/integration/integral.py:254, in DefiniteIntegral._eval_(self, f, x, a, b)
252 for integrator in self.integrators:
253 try:
--> 254 A = integrator(*args)
255 except (NotImplementedError, TypeError,
256 AttributeError, RuntimeError):
257
pass pass
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/symbolic/integration/external.py:46, in maxima_integrator(expression, v, a, b)
44 result = maxima.sr_integral(expression, v)
45 else:
---> 46 result = maxima.sr_integral(expression, v, a, b)
47 return
result._sage_() result._sage_()
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/interfaces/maxima_lib.py:827, in MaximaLib.sr_integral(self, *args)
825 raise ValueError("Integral is divergent.")
826 elif "Is" in s: # Maxima asked for a condition
--> 827 self._missing_assumption(s)
828 else:
829
raise raise
File /private/var/tmp/sage-10.3-current/local/var/lib/sage/venv-python3.11.1/lib/python3.11/site-packages/sage/interfaces/maxima_lib.py:1074, in MaximaLib._missing_assumption(self, errstr)
1071 outstr = "Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation
may *may* help (example of legal syntax is 'assume("\
1072 + errstr[jj + 1:k] + ">0)', see
assume?
`assume?` for more details)\n" + errstr
1073 outstr = outstr.replace('_SAGE_VAR_', '')
-> 1074 raise
ValueError(outstr) ValueError(outstr)
ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation
may *may* help (example of legal syntax is
'assume(%i%pi>0)', 'assume(%i*%pi>0)', see
assume?
`assume?` for more details)
Is
%i%pi %i*%pi an
integer?integer?