The derivative should actually be squared in the square root expression: 
sqrt(1 + f'(x)^2) (see e.g. 
https://en.wikipedia.org/wiki/Surface_of_revolution),  which then 
simplifies to a rational function (x^6 + 1)/(2*x^3) (unless I made a 
mistake).
Hence the integrand will be rational and SymPy should be able to handle it.

In general, the square root does simplify. In that case the result will be 
a hyperelliptic integral, which is non-elementary and cannot be
represented by means of common special functions. There is no support in 
SymPy for such integrals.

Kalevi Suominen
On Saturday, January 21, 2023 at 4:32:16 PM UTC+2 Oscar wrote:

> On Sunday, 15 January 2023 at 07:36:14 UTC zaqhie...@gmail.com wrote:
> Hi all,
>
> I have a question: why SymPy (in JULIA and PYthon) unable to get the 
> numerical answer for area of surface of revolution? 
>
> Is it impossible?
>
> This is my question posted today on Julia Discourse:
>
>
> https://discourse.julialang.org/t/area-of-surface-of-revolution-integral-too-hard-to-be-computed-by-julia-sympy-and-python-sympy/92981
>
> Please ask questions here rather than posting a link to somewhere else.
>
> You can numerically evaluate integrals using evalf:
>
> In [*1*]: x = symbols("x")
>
>    ...: 
>
>    ...: f = (x**6 + 2)/(8*x**2)
>
>    ...: g = sqrt(1 + diff(f,x))
>
>    ...: 
>
>    ...: h = 2*pi*Integral(((x**6 + 2)/(8*x**2))*sqrt(1 + diff(f,x)), (x, 
> 1, 3))
>
>
> In [*2*]: h
>
> Out[*2*]: 
>
>     3                                      
>
>     ⌠                                      
>
>     ⎮                ___________________   
>
>     ⎮               ╱    3        6        
>
>     ⎮ ⎛ 6    ⎞     ╱  3⋅x        x  + 2    
>
>     ⎮ ⎝x  + 2⎠⋅   ╱   ──── + 1 - ──────    
>
>     ⎮            ╱     4             3     
>
>     ⎮          ╲╱                 4⋅x      
>
> 2⋅π⋅⎮ ────────────────────────────────── dx
>
>     ⎮                   2                  
>
>     ⎮                8⋅x                   
>
>     ⌡                                      
>
>     1                                      
>
>
> In [*3*]: h.evalf()
> Out[*3*]: 116.281297293490 
>
>
>
> --
> Oscar
>

-- 
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 sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/67bcfe68-0057-453d-9b70-ec34028a0432n%40googlegroups.com.

Reply via email to