import numpy as np
def L2Norm(f, x, y, d=0.00001):
dudx = (f(x+d,y) - f(x-d,y)) / (2*d)
dudy = (f(x,y+d) - f(x,y-d)) / (2*d)
L2Norm = np.float128(np.sqrt(dudx**2 + dudy**2))
return L2Norm
def f(x,y):
return np.float128((1.0 + np.sin(np.pi*x))*((3.0 + np.cos(2.011*y))**2)*np.e**((-x**2)-((y**2)/4)))
# 20 points in X direction
x = np.linspace(-1.0,1.0,20)
# 40 points in Y direction
y = np.linspace(-2.0,2.0,40)
[X,Y] = np.meshgrid(x,y)
L2_Norm = L2Norm(f, X, Y)
print L2_Norm[37,13]
Моя функция выше.По сути, я ожидал бы вызвать функцию L2Norm и получить массив, идущий от 0 до 19 в направлении X, или первый индекс и от 0 до 39 во второй.соответствует тому, где я ожидал бы y.
Я могу вызвать L2_Norm [39,19], но не L2_Norm [19,39] Почему это?