(self)
| 1206 | assert_(np.all(num_error < 0.03) == True) |
| 1207 | |
| 1208 | def test_spacing(self): |
| 1209 | f = np.array([0, 2., 3., 4., 5., 5.]) |
| 1210 | f = np.tile(f, (6, 1)) + f.reshape(-1, 1) |
| 1211 | x_uneven = np.array([0., 0.5, 1., 3., 5., 7.]) |
| 1212 | x_even = np.arange(6.) |
| 1213 | |
| 1214 | fdx_even_ord1 = np.tile([2., 1.5, 1., 1., 0.5, 0.], (6, 1)) |
| 1215 | fdx_even_ord2 = np.tile([2.5, 1.5, 1., 1., 0.5, -0.5], (6, 1)) |
| 1216 | fdx_uneven_ord1 = np.tile([4., 3., 1.7, 0.5, 0.25, 0.], (6, 1)) |
| 1217 | fdx_uneven_ord2 = np.tile([5., 3., 1.7, 0.5, 0.25, -0.25], (6, 1)) |
| 1218 | |
| 1219 | # evenly spaced |
| 1220 | for edge_order, exp_res in [(1, fdx_even_ord1), (2, fdx_even_ord2)]: |
| 1221 | res1 = gradient(f, 1., axis=(0, 1), edge_order=edge_order) |
| 1222 | res2 = gradient(f, x_even, x_even, |
| 1223 | axis=(0, 1), edge_order=edge_order) |
| 1224 | res3 = gradient(f, x_even, x_even, |
| 1225 | axis=None, edge_order=edge_order) |
| 1226 | assert_array_equal(res1, res2) |
| 1227 | assert_array_equal(res2, res3) |
| 1228 | assert_almost_equal(res1[0], exp_res.T) |
| 1229 | assert_almost_equal(res1[1], exp_res) |
| 1230 | |
| 1231 | res1 = gradient(f, 1., axis=0, edge_order=edge_order) |
| 1232 | res2 = gradient(f, x_even, axis=0, edge_order=edge_order) |
| 1233 | assert_(res1.shape == res2.shape) |
| 1234 | assert_almost_equal(res2, exp_res.T) |
| 1235 | |
| 1236 | res1 = gradient(f, 1., axis=1, edge_order=edge_order) |
| 1237 | res2 = gradient(f, x_even, axis=1, edge_order=edge_order) |
| 1238 | assert_(res1.shape == res2.shape) |
| 1239 | assert_array_equal(res2, exp_res) |
| 1240 | |
| 1241 | # unevenly spaced |
| 1242 | for edge_order, exp_res in [(1, fdx_uneven_ord1), (2, fdx_uneven_ord2)]: |
| 1243 | res1 = gradient(f, x_uneven, x_uneven, |
| 1244 | axis=(0, 1), edge_order=edge_order) |
| 1245 | res2 = gradient(f, x_uneven, x_uneven, |
| 1246 | axis=None, edge_order=edge_order) |
| 1247 | assert_array_equal(res1, res2) |
| 1248 | assert_almost_equal(res1[0], exp_res.T) |
| 1249 | assert_almost_equal(res1[1], exp_res) |
| 1250 | |
| 1251 | res1 = gradient(f, x_uneven, axis=0, edge_order=edge_order) |
| 1252 | assert_almost_equal(res1, exp_res.T) |
| 1253 | |
| 1254 | res1 = gradient(f, x_uneven, axis=1, edge_order=edge_order) |
| 1255 | assert_almost_equal(res1, exp_res) |
| 1256 | |
| 1257 | # mixed |
| 1258 | res1 = gradient(f, x_even, x_uneven, axis=(0, 1), edge_order=1) |
| 1259 | res2 = gradient(f, x_uneven, x_even, axis=(1, 0), edge_order=1) |
| 1260 | assert_array_equal(res1[0], res2[1]) |
| 1261 | assert_array_equal(res1[1], res2[0]) |
| 1262 | assert_almost_equal(res1[0], fdx_even_ord1.T) |
| 1263 | assert_almost_equal(res1[1], fdx_uneven_ord1) |
| 1264 | |
| 1265 | res1 = gradient(f, x_even, x_uneven, axis=(0, 1), edge_order=2) |
nothing calls this directly
no test coverage detected