背景:我的程序中有一个函数,它采用一组点并在这些点生成的曲线上找到最小值和最大值。问题是它非常慢,因为它使用 while 循环根据近似误差来计算最小值/最大值。不完全确定这是什么形式的方法,因为我不是自己写的,但我知道我们需要一种新的更有效的方法。
问题:我的问题是什么是最好和最有效的方法/算法来找到曲线上的最小最大点,使用 C#,也非常准确?
关于曲线:我附近有我大学的数值分析书,所以我需要的只是一个方法名称和一个正确方向的推动。我可以生成尽可能多的点来逼近曲线,但我想将点数保持在有效的最小值。曲线总是呈正弦/余弦曲线的一段形状,但并不总是相同的曲线,而且总是小于一个周期。Theta 的范围是 0° 到 359.999...° 它有一些相位和幅度偏移,并且 Y 永远不会是负数。这个函数/算法必须快速运行,因为它会随着曲线的变化每隔几百毫秒运行一次。
任何建议表示赞赏。
编辑
有关曲线的更多信息:这些点是在鼠标移动时生成的。这些点是基于带惰轮的驱动设计中的橡胶带长度的一组点,例如汽车中的蛇形皮带。惰轮的位置决定了皮带的长度,我得到曲线[皮带长度(y)与惰轮位置(x)]。在这种情况下,惰轮是一个可旋转的惰轮,将具有恒定的圆周运动。如果驱动设计改变,曲线也会改变,要么是因为长度点改变,要么是因为惰轮的运动范围受到限制。惰轮的运动范围可能是 0° 到 359.999...°,并且是如上所述的 theta。对于开槽惰轮,最大范围是曲线周期的 1/2(更简单的问题)。
我想我需要的是两种类型的惰轮的通用求解器,但真正的问题是旋转惰轮。