1

令 D 为由一系列点 {x_i,y_i} (1<=i<=N) 界定的区域。(该区域不必是凸的,并且这些点应该沿着边界曲线。)

令 f 是在 D 上定义的函数,但我们只知道它在给定点集(有限和离散)上的值,例如 {x'_i,y'_i,f(x'_i,y'_i)} (1<= i<=N')。(给定的数据集不需要在 D 中“密集”。)

如何进行 f 对 D 的数值积分?

这是我的想法:
1)首先我们应该通过这些点系列之间的线段来近似 D 的边界。
2)然后我们应该对给定的数据集做一些插值。然而,二维插值并不总是可行的。然后我就卡住了。

你能帮忙吗?谢谢你。

4

2 回答 2

0

如果你能够对你的点进行三角测量,那么工作就完成了:在每个三角形中,你知道角点的函数值,并通过

triangle_area * (val1 + val2 + val3) / 3.0

虽然凸三角剖分是一个已解决的问题,有很多可用工具(例如,请查看qhull),但非凸三角剖分要困难得多。无论如何,朝这个方向挖掘可能会让您有所收获。

于 2017-03-21T09:56:15.903 回答
-1

我将解决方案写为轮廓积分,并在边界上的每个分段上使用高斯或对数正交一维数值积分的总和。如果函数在曲线上的某个点是奇异的,则对数正交很有用。

您必须知道每条分段曲线端点处的函数值。您假设一个特定的插值函数(线性开始,如果您愿意,可以使用更高阶),并通过在端点值之间进行插值来进行数值积分。

如果你走得那么远,我建议通过将沿轮廓的曲线数量加倍并重新积分来检查收敛。如果积分值在一两次迭代后没有改变,您可以认为自己已经收敛。

如果你说你不知道曲线上任何地方的函数值,那么你就不能进行积分。

于 2011-05-17T16:21:34.450 回答