修复函数的奇点
假设你有一个像这样的功能
F = lambda x: sin(x)/x
评估F(0.0)
会导致除零警告,并且不会给出预期的结果1.0
。是否有可能编写另一个函数fix_singularity
,当应用于上述函数时会产生所需的结果,这样就可以了
fix_singularity(F)(0.0) == 1.0
或者正式fix_singularity
应通过以下测试:
import numpy as np
def test_fix_singularity():
F = lambda x: np.sin(x)/x
x = np.array((0.0, pi))
np.testing.assert_array_almost_equal( F(x), [nan, 0] )
np.testing.assert_array_almost_equal( fix_singularity(F)(x), [1, 0] )
一种可能的实现是
def fix_singularity(F):
""" Fix the singularity of function F(x) """
def L(x):
f = F(x)
i = np.isnan(f)
f[i] = F(x[i] + 1e-16)
return f
return L
有更好的方法吗?
编辑:
另外我怎么能抑制警告:
Warning: invalid value encountered in divide
没有找到相关结果
已邀请:
6 个回复
缮记箔
具有
函数,这是函数的规范化形式,即
它正确处理
的情况,
为了“unnormalize”做,
导力疵谜
将计算无误,在
中留下
值。如果你想要处理它,你可以用以下代替它:
更新要禁止警告,请尝试:
垫歌蝎降凤
哩翔购
刷遍派戳
蕾跨立锌煤