end*_*ith 6 python mathematical-optimization minimization scipy
基本上,给定一个函数可以为不同的参数生成这样的输出:

我想快速找到函数等于0的第一个x.因此,使用在x上产生蓝色曲线的参数,我想找到x = 134.对于绿色曲线,我想找到x = 56等.
我认为该函数将始终单调递减,直到它达到零,但我不完全确定.
该功能不一定单调递减.
我很肯定,它将只命中0一次,然后保持为零.
目前我通过迭代x值直到我达到零来强制它,但我想要一些更好的做出有根据的猜测(基于斜率?)和迭代.
理想我想使用的东西已经出炉(因为90%的程序员甚至不能正确地写一个二进制搜索),像一些scipy.optimize,但似乎这些都希望找到无论是全球最低或零交叉.
(此功能排序RGB立方体的用于左声道的颜色空间中的给定色度distance_to_the_wall(所以基本上构建"三立夹到RGB"功能)的,但由于IRGB和LCh中之间的映射可以通过库,并与等参数而变化我认为最好只尝试几个值,直到找到正确的值,而不是试图直接反向计算值?)
下面是一些代码来充实 @ExP 的二分/二分搜索答案:
def find_first_zero(func, min, max, tol=1e-3):
min, max = float(min), float(max)
assert (max + tol) > max
while (max - min) > tol:
mid = (min + max) / 2
if func(mid) == 0:
max = mid
else:
min = mid
return max
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |