Hi,
There are a couple of things to say here. First I think you have
confused when you give boundaries via x or via z. After substitution,
the integrand becomes sqrt(z)/sqrt(1-z**2), so let's discuss this. Then
we have:
In [26]: i = Integral(sqrt(z)/sqrt(1-z**2), (z, 0.3, 0.4))
In [29]: i.doit().subs(exp_polar, exp).n()
Out[29]: 0.0631741978430877
In [30]: i.n()
Out[30]: 0.0631741978430876
So this seems to work.
Some notes. First we need to replace exp_polar by exp here. This is
permitted, since |z| < 1. Arguably this is a shortcoming of evalf of
hyper. In fact the meijerg() evalf can evaluate for arbitrary polar
numbers, hijacking some obscure mpmath functionality. It is possible to
implement similar functionality for hyper(), but that's more work. At
the very least it should work for |z| < 1...
Since the integral can be done in terms of elliptic integrals this
hypergeometric function should have a closed form, but I cannot find it
documented anywhere.
Tom
> --
> You received this message because you are subscribed to the Google
> Groups "sympy" group.
> To view this discussion on the web visit
>
https://groups.google.com/d/msg/sympy/-/867mUPbpSJAJ.