断言函数-电快速瞬变脉冲群测试国标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
5.36MB
文件大小:
评论区