Положим, имеется файл, содержащий таблицу значений функции n переменных, типа

таким образом, что по

имеется

узлов, отстоящих на

друг от друга. Нужно найти в этой таблице все локальные минимумы и максимумы, и желательно, седловые точки. Как это правильно сделать?
Пока я действовал так: сканировал по каждой переменной при остальных постоянных и искал те точки, в которых первая производная меняет знак и записывал значения, которые предшествовали эти изменения. Так у меня получался список точек, при которых менялся знак производной. затем для каждой из них вычислялся гессиан и определялась его знакоопределенность. Если он отрицательно знакоопределен, то максимум, если положительно, то минимум, иначе - седловина.
Эту программу на Питоне я проверял на искусственно приготовляемых файлах. Она находит существующие минимумы и максимумы, но добавляет к ним точки, в которых их просто нет (напрмер, где у функции широкое поле нулевых значений). Кроме того, она не находит седловину.