如何计算R中椭圆抛物面的表面,只有两个主轴a和b,以及高度h?
背景:有一群类似于椭圆形抛物线的东西。 (想想hummocks,例如)。我在统计上感兴趣的是:当我将总体表面近似为矩形(a * b)而不是对其表面进行正确建模时,我引入的均值和SD误差有多大?我可以去找一个圆锥体,但我在这些数据中有一些非常长的椭圆。这让我想方设法如何计算elliptical paraboloid和elliptic cone。到目前为止,这对我回答我的问题没有帮助。
我无法正确翻译Wolfram和维基百科,只是开始使用
paraboloid.surf <- function(a,b,h){2*a*sqrt(b^2+h^2)* E * sqrt((1-b^2/a^2)/(1+b^2/a^2))}
不知道如何计算E,或者甚至理解这是E乘以该项,还是函数E(k)k =该项。
有人可以帮助我并提供一些代码吗?我会对锥形作为抛物线解决方案感兴趣,但任何一个都比没有好。我希望这真的非常重要,而且我并非完全愚蠢。 =)
答案 0 :(得分:2)
所以我假设你想要椭圆形抛物面的表面积。基本框架给出here,从中获取以下图像。
所以问题是如何在R中计算这个?最难的部分是双积分,可以使用adaptIntegrate(...)
包中的cubature
函数进行评估。
A <- function(a,b,h) {
require(cubature)
integrand <- function(x,a,b){
u <- x[1]
v <- x[2]
E <- 1+((a*cos(v))^2 + (b*sin(v))^2)/(4*u)
F <- (b^2 - a^2)*sin(2*v)/4
G <- u*((a*sin(v))^2+(b*cos(v))^2)
return(sqrt(E*G-F^2))
}
adaptIntegrate(integrand,
lowerLimit=c(0,0), upperLimit=c(h,2*pi), a=a,b=b)$integral
}
我们可以通过注意
来确认这一点a = b = h = 1
E = 1 + 1 / 4u
F = 0
G = u
A =2π∫du方位(u + 1/4)
可以封闭形式评估:
A =4π/ 3 [(5/4) 3/2 - (1/4) 3/2 ] = 5.330414
A(1,1,1)
# [1] 5.330413
(4*pi/3)*((5/4)^(3/2) - (1/4)^(3/2))
# [1] 5.330414
答案 1 :(得分:1)
从https://en.wikipedia.org/wiki/Elliptic_paraboloid开始,椭圆抛物线的定义等式为z/c = x^2/a^2 + y^2/b^2
。我们可以将其改造成一座高度较高的山丘&#39; h&#39; z=0
的基数为椭圆。
对于椭圆抛物线
z = h*(1 - ((x/a)^2+(y/b)^2)).
a
和b
是椭圆的半长半轴和半短轴,通过z = 0切割圆锥而生成h
是上述点的高度(0,0)。
对于椭圆锥
z = h*(1 - sqrt((x/a)^2+(y/b)^2))`.
a
和b
是通过z=0
切割圆锥而生成的椭圆的半长轴和半短轴。
要绘制两个您需要按平面z=0
进行剪辑的内容,请使用max(0,h*(1 - ((x/a)^2+(y/b)^2))
。
椭圆的面积为pi a b
,圆锥的体积为1/3 basearea * h
,因此圆锥的体积为
1/3 pi a b h.
正如其他地方所提到的,椭圆抛物面的体积有点棘手。 我们可以尝试通过在z方向切片来做到这一点。
int_{z=0}^{h} area of ellipse at height z dz.
如果高度为z的椭圆具有半成a(z)
和b(z)
,则该区域为
A(z) = pi a(z) b(z).
要通过平面a(z)
,b(z)
找到抛物面的y=0
和x=0
切片,这些会给出两个抛物线z = h *(1 - (x/a)^2)
,z = h *(1 - (y/b)^2)
。重新排列z/h = 1 - (x/a)^2
,(x/a)^2 = 1 - z/h
x/a = sqrt(1-z/h)
x=a*sqrt(1-z/h)
这是我们的a(z)
。类似b(z)=b*sqrt(1-z/h)
。高度为z的椭圆面积为
A(z) = pi a(z) b(z)
= pi a sqrt(1-z/h) b sqrt(1-z/h)
= pi a b (1-z/h)
集成
int_{z=0}^h pi a b (1-z/h)
= pi a b [z - z^2/(2 h)]_0^h
= pi a b (h - h^2/(2 h))
= 1/2 pi a b h
非常简单。
为了比较,高度为h
且长度为2a
和2b
的长方体的体积为
4 a b h.
从https://en.wikipedia.org/wiki/Elliptic_integral#Complete_elliptic_integral_of_the_second_kind起,半长轴a
和偏心e
的椭圆的圆周
4 a E(e)
其中E(e)
是第二种完整的椭圆积分。偏心率e
是
e = sqrt( 1 - b^2/a^2 ).
在锥形和椭圆形抛物面情况下,所有水平切片的偏心率都是恒定的。然后表面积的积分很好地简化。对于锥体
a(z) = a * ( h - z)
。所以
int_z 4 a(z) E(e) dz
= 4 E(e) int_z a(z) dz
= 4 E(e) int_{z=0}^h a * (h -z ) dz
= 4 a E(e) int_{z=0}^h h - z dz
= 4 a E(e) [h z - z^2/2]_{z=0}^h
= 4 a E(e) h^2/2
= 2 a E(e) h^2
对于椭圆抛物面a(z)=a*sqrt(1-z/h)
,积分是
int_z 4 a(z) E(e) dz
= 4 E(e) int_z a(z) dz
= 4 E(e) int_{z=0}^h a * sqrt(1-z/h) dz
更改变量w=1-z/h
限制为1和0 dz/dw = -h
所以
= 4 E(e) int_{w=1}^0 a * sqrt(w) * -h dw
= 4 a E(e) h int_{w=0}^1 sqrt(w) dw // switching limits round
= 4 a E(e) h [ 2 w^(3/2) /3]_{w=0}^1
= 8/3 a E(e) h.
另一种更标准的模型是2D高斯https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Density_function
z = 1/(2 pi a b) exp( -( (x/a)^2 + (y/b)^2 )/2).
除了基地之外,这看起来非常接近抛物面。