背景:私のプログラムには、一連の点を取り、それらの点によって生成された曲線の最小値と最大値を見つける関数があります。問題は、while ループを使用して近似誤差に基づいて最小/最大を計算するため、信じられないほど遅いことです。私は自分で書いたわけではないので、これがどの正式な方法なのか完全にはわかりませんが、新しいより効率的な方法が必要であることはわかっています。
質問:私の質問は、C# を使用して曲線上の最小最大ポイントを見つけるための最良かつ最も効率的な方法/アルゴリズムは何ですか?これも非常に正確ですか?
曲線について:近くに大学の数値解析の本があるので、必要なのはメソッド名と正しい方向への微調整だけです。曲線を近似するために選択した数のポイントを生成できますが、ポイントの数を効率的な最小値に維持したいと考えています。曲線は常に Sin/Cos 曲線の 1 つのセグメントの形をしていますが、常に同じ曲線であるとは限らず、常に 1 周期未満になります。Theta の範囲は 0° から 359.999...° です。位相と振幅のシフトがあり、Y が負になることはありません。この関数/アルゴリズムは、曲線が変化するにつれて数百ミリ秒ごとに実行されるため、高速に実行する必要があります。
任意の提案をいただければ幸いです。
編集
曲線の詳細:ポイントはマウスの移動で生成されます。ポイントは、車のサーペンタイン ベルトのようなアイドラーを備えたドライブ デザインのゴム ベルトの長さに基づくポイントのセットです。アイドラーの位置によってベルトの長さが決まり、曲線 [ベルトの長さ (y) 対 アイドラーの位置 (x)] が得られます。この場合のアイドラーは旋回アイドラーであり、一定の円運動をします。ドライブの設計が変わると、長さのポイントが変わるか、アイドラーの可動範囲が制限されるため、曲線が変わります。アイドラーの可動範囲は、潜在的に 0° から 359.999...° であり、上記のようにシータです。スロット付きアイドラーの場合、最大範囲は曲線の周期の 1/2 です (より簡単な問題)。
私が必要としているのは、両方のタイプのアイドラーの一般的なソルバーだと思いますが、実際の問題はピボット アイドラーにあります。