我有一个从cloudpoint生成的网格,可以描述为z = f(x,y)
,所以我使用scipy.interpolate.bisplrep
和bisplev
,结果很好。
bisplev
可与参数dx=n
和/或dy=n
一起使用,以便结果是评估点处的n
阶的导数。我打算用它来计算平均值和高斯曲率(在Matlab中称为surfature
),这应该涉及获得幸存者的二阶偏导数
一次使用一个偏导数的结果,比如dx
很好,清楚地将渐变表示为“阴影”效果,如此图像中的人类背面所示(代码优先):< / p>
self.spline = inter.bisplrep(self.pointlist[:,1],
self.pointlist[:,0],
self.pointlist[:,2], s=smoothing_factor)
self.mesh_shadow = inter.bisplev(yy.flat, xx.flat, self.spline, dy=1)
到目前为止,这么好。问题是:当我同时要求两个偏导数时,我无法理解(并且找不到任何解释)结果的含义是什么,因为没有任何明显的数字或视觉意义。例如,如果我使用dx
AND dy
:
self.mesh_shadow = inter.bisplev(yy.flat, xx.flat, self.spline, dx=1, dy=1)
我明白了:
所以,我想知道:
bislplev(..., dx=1, dy=1)
给出的曲面的一阶偏导数的同时结果的数学/几何意义是什么?bislplev(..., dx=1, dy=1)
获得最大斜率(任意方向)?(..., dx=1, dy=2)
,这个函数似乎产生了“有效”的结果,但这有什么意义吗?每次返回的值都是单个浮点值(Z或其衍生相关值之一)的(Y,X)形数组。
任何帮助?
感谢您阅读
答案 0 :(得分:1)
dx = n,dy = m得到的偏导数是数学对象(或者更确切地说,是它的数值近似值)
(d / dx)^ n(d / dy)^ m f(x,y)
您无法仅从dx = 2,dy = 0和dx = 0,dy = 2计算高斯曲率---您通常还需要交叉导数dx = 1,dy = 1。
部分导数(d / dx)^ n(d / dy)^ m f(x,y)在数学上是明确定义的。对于样条线,如果订单过高,则应该开始获得零或不连续。