断言函数-电快速瞬变脉冲群测试国标2018

在进行数值计算时,我们经常遇到比较两个近似相等的浮点数这样的基本问题。整数之间的比较很简单,但浮点数却非如此,这是由于计算机对浮点数的表示本身就是不精确的。 numpy.testing包中有很多实用的工具函数考虑了浮点数比较的问题,可以测试前提是否成立。例如,我们使用`assert_approx_equal()`函数来测试两个近似相等的值是否相等: ```python import numpy as np from numpy.testing import assert_approx_equal def test_approx_equal(): a = 1.234567891234567e-10 # 接近于0的浮点数 b = a + 2 * np.finfo(float).eps # 使用np.finfo()获取浮点数的精度,并加上一个小的量使得a不等于b assert_approx_equal(a, b) ``` 除了`assert_approx_equal()`函数外,还有其他的断言函数可以用于测试。例如,我们可以使用`assert_array_almost_equal()`函数来测试两个数组是否近似相等: ```python def test_array_almost_equal(): a = np.array([1.234567891234567e-10, 2.34567890123456]) # 接近于0的浮点数组成的数组 b = a + 2 * np.finfo(float).eps # 加上一个小的量使得a不等于b assert_array_almost_equal(a, b) ``` 除了上述两个函数外,还有其他断言函数可以用于测试。例如,我们可以使用`assert_allclose()`函数来测试两个数组是否近似相等: ```python def test_allclose(): a = np.array([1.234567891234567e-10, 2.34567890123456]) # 接近于0的浮点数组成的数组 b = a + 2 * np.finfo(float).eps # 加上一个小的量使得a不等于b assert_allclose(a, b) ``` 除了上述三个函数外,还有其他断言函数可以用于测试。例如,我们可以使用`assert_array_less()`函数来测试两个数组是否小于另一个数组: ```python def test_array_less(): a = np.array([1.234567891234567e-10, 2.34567890123456]) # 接近于0的浮点数组成的数组 b = a + 2 * np.finfo(float).eps # 加上一个小的量使得a不等于b assert_array_less(a, b) ``` 除了上述四个函数外,还有其他断言函数可以用于测试。例如,我们可以使用`assert_equal()`函数来测试两个数组是否相等: ```python def test_equal(): a = np.array([1.234567891234567e-10, 2.34567890123456]) # 接近于0的浮点数组成的数组 b = a + 2 * np.finfo(float).eps # 加上一个小的量使得a不等于b assert_equal(a, b) ``` 除了上述五个函数外,还有其他断言函数可以用于测试。例如,我们可以使用`assert_array_max_ulp()`函数来测试两个数组的最大相对误差是否小于指定的值: ```python def test_array_max_ulp(): a = np.array([1.234567891234567e-10, 2.34567890123456]) # 接近于0的浮点数组成的数组 b = a + 2 * np.finfo(float).eps # 加上一个小的量使得a不等于b assert_array_max_ulp(a, b) < 1e-7 # 最大相对误差小于10^-7
pdf 文件大小:5.36MB