Hi all,
I try this code:
import sympy as sy
x = sy.Symbol("x")
def f(x):
return ((x**6) + 2)/ (8*x ** 2)
def fd(x):
return sy.simplify(sy.diff(f(x), x))
def vx(x):
return 2*np.pi*(f(x)*((1 + (fd(x) ** 2))**(1/2)))
s
vx = sy.simplify(sy.integrate(vx(x), (x, 1, 3)))
the answer is not even simple:
0.785398163397448*Integral((x 2 + 1)1.0 (x4 - x 2 + 1)1.0/x 5.0, (x, 1, 3)) + 0.392699081698724*Integral(x 1.0*(x 2 + 1)1.0 (x 4 - x**2 + 1)1.0, (x, 1, 3))
I want to calculate the definite integral to find the surface area of this curve $\frac{x^{6} + 2}{8x^{2}}$ revolved about x-axis with $1 \le x \le 3$,
You may get help for sympy here, but if not then look at the support page for sympy.
https://www.sympy.org/en/support.html
Do you mean this?
We can do that with Sympy too, in just five lines of code.
import sympy as sy
x = sy.Symbol("x")
def f(x):
return (x**6 + 2)/(8*x**2)
print(sy.integrate(f(x), (x, 1, 3)))
This prints 373/60 which matches what Wolfram Alpha says.
1 Like
I was not clear enough, I want to integrate to obtain the surface area function, not just the curve (x**6 + 2)/(8*x**2)
the curve will be revolved about x-axis then the formula for the surface area is:
A = 2 π ∫ f(x) [sqrt{1 + f'(x)}] dx
the integral is from a to b (1 to 3).
I use this code:
import sympy as sy
x = sy.Symbol("x")
def f(x):
return (x**6 + 2)/(8*x**2)
def fd(x):
return sy.simplify(sy.diff(f(x), x))
def vx(x):
return f(x)*((1 + (fd(x) ** 2))**(1/2))
Calling this:
sy.simplify(sy.integrate(vx(x), (x, 1, 3)))
would result in symbolic answer:
0.125*Integral((x 2 + 1)1.0 (x4 - x 2 + 1)1.0/x 5.0, (x, 1, 3)) + 0.0625*Integral(x 1.0*(x 2 + 1)1.0 (x 4 - x**2 + 1)1.0, (x, 1, 3))
instead of numeric answer
TomFryers
(Tom Fryers)
January 15, 2023, 8:51am
5
I think the problem here is using **(1/2)
instead of sympy.sqrt
. 1/2
becomes a float
before Sympy can get its hands on it.
1 Like
zaqhielhorus
(Freya the Goddess)
February 26, 2025, 12:54pm
6
Thanks for answering this, I haven’t really use Python for almost 2 years.