python求最小因子_Python中的最小表面解决方案

博主有一组定义3D轮廓的3D点,想获得对应最小表面表示,需求解非线性偏微分方程。研究发现极小曲面问题与Biharmonic Equation相关,Thin - plate spline可解决。博主尝试用scipy.interpolate.Rbf和thin - plate功能在Python实现,但结果与Matlab不同,还提出相关疑问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一组定义3D轮廓的3D点。我想要做的是获得对应于这个轮廓的最小表面表示(see Minimal Surfaces in Wikipedia)。基本上这需要求解一个非线性偏微分方程。Python中的最小表面解决方案

我需要在Python中做出这样的实现,但是我知道我还没有找到任何关于如何实现这个的网页资源。

任何人都可以指出我的任何资源/这种实现的例子吗?

谢谢, Miguel。

UPDATE

所述的3D表面(理想的三角形网格表示),我想找到由该组3D点的有界(如见于该图中,点位于在最佳拟合平面) :

好了,所以做了一些研究,我发现,这个极小曲面问题与Biharmonic Equation的解决方案相关的,而且我还发现,Thin-plate spline是这个方程根本上解决。

所以我认为这种方法将尝试使用薄板样条拟合表面的稀疏表示(由点的3D轮廓给出)。我发现this example in scipy.interpolate其中散布数据(x,y,z格式)使用薄板样条插值以获得均匀网格(XI,YI)上的ZI坐标。

出现两个问题: (1)对于3D轮廓点集计算曲面问题,薄板样条插值是否是正确的方法? (2)如果是这样,如何使用非均匀网格对scipy执行薄板插值?

再次感谢! 米格尔

UPDATE:实现在Matlab(但它不工作ON SciPy的Python)的

我跟着this example使用Matlab的tpaps功能和获得的最小表面安装到我的轮廓上的统一电网。这是结果在Matlab(看上去太棒了!):

不过,我需要在Python实现这一点,所以我使用的是包scipy.interpolate.Rbf和thin-plate功能。下面是在Python代码(XYZ包含每个点的轮廓中的三维坐标):

GRID_POINTS = 25

x_min = XYZ[:,0].min()

x_max = XYZ[:,0].max()

y_min = XYZ[:,1].min()

y_max = XYZ[:,1].max()

xi = np.linspace(x_min, x_max, GRID_POINTS)

yi = np.linspace(y_min, y_max, GRID_POINTS)

XI, YI = np.meshgrid(xi, yi)

from scipy.interpolate import Rbf

rbf = Rbf(XYZ[:,0],XYZ[:,1],XYZ[:,2],function='thin-plate',smooth=0.0)

ZI = rbf(XI,YI)

不过这是结果(从Matlab中获得很大的不同):

很明显,scipy的结果不符合最小的曲面。

是scipy.interpolate.Rbf +薄板做不如预期,为什么它从MATLAB的结果有什么不同?

+0

你的3d点与你想要的输出之间的关系究竟是什么?你有没有位于最小表面上的点,并且你正在寻找该表面的代数描述?或者点描述了某种边界,并且您正在寻找由该边界定义的最小曲面?你的输出应该是什么形式?它可能有助于查看整个matlab代码,以便人们可以寻找翻译方法,即使不理解解释为最小曲面。 https://launchpad.net/cbcpdesys看起来有用吗? –

+0

@MvG:在我更新的问题中查看更多详情。 (1)这些点大致位于最小的表面上; (2)这些点描述尚未获得的曲面的边界(3)理想情况下,我想获得的曲面类型是三角形网格表示。 –

+0

尝试在http://scicomp.stackexchange.com中询问。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值