Point2D
我有一个由( 有两个成员x
和)组成的数组y
,例如Point2D[] points
. 您可以将此数组视为 XY 图上的一系列点。数组的排序方式是从小Point2D.X
到大排列Point2D.X
我的问题很简单:您如何找到作为局部最大值/最小值的点(以及这些点之前和之后的相应项目索引)?回想一下,局部最大值/最小值在数学上定义为dy/dx=0
。所以我的任务是我需要找到dy/dx=0
.
请注意,极值点可能位于也可能不在Point2D
阵列内,因为图形是平滑曲线,而不是线性分段折线。极值点可以是数组内两个点的中点。例如。
是否有任何现有的库/组件已经在 C# 中执行此操作?
这是我的方法:
public class Point2D
{
public double X;
public double Y;
}
public class PointWithIndex
{
// the extreme point where dy/dx=0
public Point2D ExtremePoints;
// the index of the array for the point that locates right before this ExtremePoints
public int PrevItemIndex;
}
public static List<PointWithIndex> FindLocalExtrema(List<Point2D> xyPoints)
{
// the algorithm to find the max/min points of xyPoints
}