#python #numpy #scipy #linear-algebra
#python #numpy #scipy #линейная алгебра
Вопрос:
У меня есть одновременные уравнения (со многими уравнениями), которые не являются решением, и мне нужно найти наилучшие решения. Каждый элемент решения должен быть> 0 (нет 0 или отрицательный).
np.linalg.lstsq
может быть получено наилучшее решение, но также могут появиться отрицательные элементы.
scipy.optimize.nnls
может быть получено наилучшее решение без отрицательных элементов, но также может появиться 0.
Как я могу ограничить получение наилучшего решения с каждым элементом> 0 или есть ли какая-либо другая функция, которую можно использовать для решения проблемы?
Ответ №1:
Для каждого параметра p
определите p_ = p - eps
для very small eps
.
Решите для {p_}
, затем назначьте p = p_ eps
, и вы получите все параметры выше нуля.
На практике просто добавьте epsilon к решению.
Если этого недостаточно, пожалуйста, объясните, почему.