Цитата(Eugeno @ Jun 20 2005, 10:20)
По четырём точкам... полиномом третьей степени x(t) = a*t*t*t + b*t*t + c*t*t + d*t + e... Производную полинома приравниваем к нулю и вуаля - результат.
Полином к нулю приравнять, конечно, хорошо, только как решать на МК это дело?
Предлагаю итеративный вариант на базе интерполятора степени N (пусть N=4), например Лагранжа.
вначале находим максимальный отсчет в регистре, затем
1. выбираем второй "опорный" справа или слева от максимума (который больше). Точный максимум будет расположен в интервале между двумя этими отсчетами.
2. Делим интервал пополам, вычисляем посредством интерполяции значение функции в данной точке.
3. Измеряем дельту, как разность максимума и вычисл. значения
4. Если дельта со знаком " - ", то значение функции в точке больше, чем максимум, тогда [максимум = значение функции в точке]
5. Устанавливаем новые границы интервала, соотв. одна - максимуму, вторая - "опорному" отсчету.
6. Если [дельта < ПОРОГ] - или [итерация < ITERmax] - выход, иначе идти к 1.
Не очень просто, но работает, причем хорошо.
проблема насущная, сам бы хотел услышать мнение сторонних разработчиков