python решает одновременные уравнения с решениями> 0

#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 к решению.

Если этого недостаточно, пожалуйста, объясните, почему.