python; 정적분을 활용하여 원뿔대 부피 구하기

     

    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))

    댓글