2017-11-28 1 views
0

입니다. 불규칙한 테이퍼가있는 원추형 부피를 효과적으로 측정하는 방법을보고 싶습니다. 우리는이 벡터의 콘 직경과 높이를 가지고원추형 부피가 R

D = c(30, 29, 29, 27) #diameter (cm) vector of the cone 
deltah = c(10, 10, 10) #delta height, cm, may vary 

현재 솔루션은 관련된 용 루프 각각 원뿔 섹션 원추 식을 사용하여 (R)에서 : 따라서

conevol=NULL 
for(i in 2:length(D)){ 
    conevol[(i-1)] = (D[i]^2 + D[(i-1)]^2 + D[i]*D[(i-1)]) *deltah[(i-1)]*pi/3 
} 
sum(conevol) 
#[1] 78403.68 

: 어떤 아이디어 벡터화 된 접근법?

답변

2

단지 벡터를 만들어, 모든 루프를 위해 사용하고 위에 작업을 적용 할 필요가 없습니다 :

> D = c(30, 29, 29, 27) 
> deltah = c(10, 10, 10) 

> i=2:length(D) 
> i 
[1] 2 3 4 
> i-1 
[1] 1 2 3 

> conevol = (D[i]^2 + D[(i-1)]^2 + D[i]*D[(i-1)]) *deltah[(i-1)]*pi/3 
> conevol 
[1] 27342.33 26420.79 24640.56 
> sum(conevol) 
[1] 78403.68