python; 위 원과 아래 원 크기가 다른 원기둥(원뿔대) 부피 구하기 (정적분 회전체 체적 활용)
y=f(x)를 x축으로 회전시킨 회전체의 체적을 구하는 공식은 다음과 같다. $V_{x}=\pi\int_{a}^{b}\left\{ f(x)\right\}^{2}dx$ 적분을 계산하기위해 sympy 사용. import sympy as sy import math r1 = float(input('원1 반지름:'))
sosomia01.tistory.com
윗 글의 2탄(?)입니다.
이번에는 sympy의 인테그랄을 사용하지 않고 정적분의 값을 사다리꼴로 쪼개서 더하는 방법으로 근사값을 구하였습니다.
integrate의 n이 클수록 세분해서 계산하므로 근사값이 정확해집니다.
import math
def frustum_volume(a, b, h):
# 원뿔대의 부피를 계산 공식
def r(x):
return (b-a)/h * x + a
# 정적분 근사값 계산 함수 (사다리꼴 방법)
def integrate(f, a, b, n=10000):
# 구간을 n등분하여 각 구간에서의 값을 계산
dx = (b-a)/n
x_vals = [a+i*dx for i in range(n+1)]
y_vals = [f(x) for x in x_vals]
# 사다리꼴 공식을 이용하여 각 구간에서의 면적을 계산
areas = [0.5*(y_vals[i]+y_vals[i+1])*dx for i in range(n)]
# 면적의 합 계산
return sum(areas)
# 원뿔대의 체적
V = integrate(lambda x: math.pi*r(x)**2, 0, h)
return V
print(frustum_volume(2, 4, 6))
'Python' 카테고리의 다른 글
Python; 터틀그래픽 10개의 랜덤한 원 그리기 (2) | 2024.05.21 |
---|---|
python; PI(파이) 근사값 구하기 (몬테카를로) (4) | 2024.05.20 |
python; 2차 정방행렬(2X2)의 고윳값(고유치) 구하기 (0) | 2022.10.28 |
python; 근의공식 구현하기 (0) | 2022.10.28 |
python; 3 6 9가 포함된 수를 별로 나타내기 (0) | 2022.10.22 |
댓글