윗 글의 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 |
댓글