(self)
| 1065 | assert_(np.all(num_error < 0.03) == True) |
| 1066 | |
| 1067 | def test_spacing(self): |
| 1068 | f = np.array([0, 2., 3., 4., 5., 5.]) |
| 1069 | f = np.tile(f, (6,1)) + f.reshape(-1, 1) |
| 1070 | x_uneven = np.array([0., 0.5, 1., 3., 5., 7.]) |
| 1071 | x_even = np.arange(6.) |
| 1072 | |
| 1073 | fdx_even_ord1 = np.tile([2., 1.5, 1., 1., 0.5, 0.], (6,1)) |
| 1074 | fdx_even_ord2 = np.tile([2.5, 1.5, 1., 1., 0.5, -0.5], (6,1)) |
| 1075 | fdx_uneven_ord1 = np.tile([4., 3., 1.7, 0.5, 0.25, 0.], (6,1)) |
| 1076 | fdx_uneven_ord2 = np.tile([5., 3., 1.7, 0.5, 0.25, -0.25], (6,1)) |
| 1077 | |
| 1078 | # evenly spaced |
| 1079 | for edge_order, exp_res in [(1, fdx_even_ord1), (2, fdx_even_ord2)]: |
| 1080 | res1 = gradient(f, 1., axis=(0,1), edge_order=edge_order) |
| 1081 | res2 = gradient(f, x_even, x_even, |
| 1082 | axis=(0,1), edge_order=edge_order) |
| 1083 | res3 = gradient(f, x_even, x_even, |
| 1084 | axis=None, edge_order=edge_order) |
| 1085 | assert_array_equal(res1, res2) |
| 1086 | assert_array_equal(res2, res3) |
| 1087 | assert_almost_equal(res1[0], exp_res.T) |
| 1088 | assert_almost_equal(res1[1], exp_res) |
| 1089 | |
| 1090 | res1 = gradient(f, 1., axis=0, edge_order=edge_order) |
| 1091 | res2 = gradient(f, x_even, axis=0, edge_order=edge_order) |
| 1092 | assert_(res1.shape == res2.shape) |
| 1093 | assert_almost_equal(res2, exp_res.T) |
| 1094 | |
| 1095 | res1 = gradient(f, 1., axis=1, edge_order=edge_order) |
| 1096 | res2 = gradient(f, x_even, axis=1, edge_order=edge_order) |
| 1097 | assert_(res1.shape == res2.shape) |
| 1098 | assert_array_equal(res2, exp_res) |
| 1099 | |
| 1100 | # unevenly spaced |
| 1101 | for edge_order, exp_res in [(1, fdx_uneven_ord1), (2, fdx_uneven_ord2)]: |
| 1102 | res1 = gradient(f, x_uneven, x_uneven, |
| 1103 | axis=(0,1), edge_order=edge_order) |
| 1104 | res2 = gradient(f, x_uneven, x_uneven, |
| 1105 | axis=None, edge_order=edge_order) |
| 1106 | assert_array_equal(res1, res2) |
| 1107 | assert_almost_equal(res1[0], exp_res.T) |
| 1108 | assert_almost_equal(res1[1], exp_res) |
| 1109 | |
| 1110 | res1 = gradient(f, x_uneven, axis=0, edge_order=edge_order) |
| 1111 | assert_almost_equal(res1, exp_res.T) |
| 1112 | |
| 1113 | res1 = gradient(f, x_uneven, axis=1, edge_order=edge_order) |
| 1114 | assert_almost_equal(res1, exp_res) |
| 1115 | |
| 1116 | # mixed |
| 1117 | res1 = gradient(f, x_even, x_uneven, axis=(0,1), edge_order=1) |
| 1118 | res2 = gradient(f, x_uneven, x_even, axis=(1,0), edge_order=1) |
| 1119 | assert_array_equal(res1[0], res2[1]) |
| 1120 | assert_array_equal(res1[1], res2[0]) |
| 1121 | assert_almost_equal(res1[0], fdx_even_ord1.T) |
| 1122 | assert_almost_equal(res1[1], fdx_uneven_ord1) |
| 1123 | |
| 1124 | res1 = gradient(f, x_even, x_uneven, axis=(0,1), edge_order=2) |
nothing calls this directly
no test coverage detected