Point2D
(2つのメンバーx
と)で構成される配列があります。y
たとえば、Point2D[] points
。この配列は、XYグラフ上の一連の点と考えることができます。配列は、小さい方Point2D.X
から大きい方に配置されるように並べ替えられますPoint2D.X
私の質問は単純です:極大値/極小値であるポイント(およびそれらのポイントの直前と直後の対応するアイテムインデックス)をどのように見つけますか?ローカルの最大/最小は数学的にとして定義されていることを思い出してくださいdy/dx=0
。だから私の仕事は、それらのポイントを見つける必要があるということですdy/dx=0
。
Point2D
グラフは滑らかな曲線であり、直線的な区分的ポリラインではないため、極値は配列のすぐ内側にある場合とない場合があることに注意してください。極値は、配列内の2つの点の中間点である可能性があります。例えば。
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
}