Предположим, что у меня есть гладкая нелинейная функция f: R^n -> R с (известным) максимальным числом корней N. Как я могу найти корни эффективно? Прямо сейчас я вычислил функцию в сетке на предварительно выбранной области, уточнил сетку, где функция находится ниже предопределенного порога, и продолжила эту процедуру, но это не кажется очень эффективным, хотя, поскольку я заметил, что это трудно правильно выбрать область до и соответственно определить порог.Найти все корни нелинейной функции
ответ
Есть несколько способов, чтобы идти об этом, конечно, SciPy известно, содержит наиболее безопасный и эффективный метод для нахождения одного корня условия, что вы знаете, интервал: scipy.optimize.brentq
найти больше корней, используя некоторую оценку вы можете использовать: scipy.optimize.fsolve
де формул Муавра использовать для корневой находки, что является достаточно быстро по сравнению с другими (в случае, если вы предпочитаете строить свой собственный метод): дано комплексное число
русские корни по формуле:
где к пробегает целые значения от 0 до п - 1.
Вы можете квадратуру функцию и использовать глобальные оптимизации программного обеспечения, чтобы найти все минимумов внутри домена и выберите те, у которых есть нулевое значение. Стохастические многошаговые методы глобальной оптимизации с кластеризацией вполне подходят для этой задачи.
Попробуйте здесь: http://math.stackexchange.com/ – ceving