[英]How to find the root of a function within a range in python
我需要在线性组合alpha*Id+(1-alpha)*M
的 [0,1] 中找到alpha
值,其中Id
是单位矩阵, M
是给定矩阵,这样该线性组合具有给定的均值。
目前我正在使用scipyt.optimize.fsolve
但它不允许范围 [0,1] 作为输入。 有什么建议吗?
您可以使用 S 形 function 定义alpha
:
alpha = 1/(1+exp(-x))
https://en.wikipedia.org/wiki/Sigmoid_function
根据此定义,alpha 将始终在[0, 1]
范围内。 然后,您可以更改scipy.optimize.fsolve
中的优化目标以校准x
的值,而不是直接校准alpha
。
变量x
不受约束,因此任何优化方法都有效。
附言。 这种技术在机器学习中很常见。
PS2。 向优化器添加约束仅在约束未得到满足时才重要。 因此,例如,如果您的alpha
解决方案已经在[0,1]
范围内,那么您可以保持优化器不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.