Informatique et dessin de champs de vecteurs

Je suis en train de dessiner un champ de potentiel pour un objet donné à l'aide de la formule suivante:

U=-α_goal*e^(-((x-x_goal )^2/a_goal +(y-y_goal^2)/b_goal ) )

en utilisant le code suivant

    # Set limits and number of points in grid
    xmax = 10.0
    xmin = -xmax
    NX = 20
    ymax = 10.0
    ymin = -ymax
    NY = 20
    # Make grid and calculate vector components
    x = linspace(xmin, xmax, NX)
    y = linspace(ymin, ymax, NY)
    X, Y = meshgrid(x, y)
    x_obstacle = 0
    y_obstacle = 0
    alpha_obstacle = 1
    a_obstacle = 1
    b_obstacle = 1
    P = -alpha_obstacle * exp(-(X - x_obstacle)**2 / a_obstacle + (Y - y_obstacle)**2 / b_obstacle)
    Ey,Ex = gradient(P)
    print Ey
    print Ex

    QP = quiver(X, Y, Ex, Ey)

    show()

Ce code permet de calculer un champ de potentiel. Comment puis-je tracer ce champ de potentiel bien? Aussi, étant donné un champ de potentiel, quelle est la meilleure façon de le convertir en un champ de vecteurs? (champ de vecteurs est la moins gradient du champ de potentiel. )

Je vous serais reconnaissant de toute aide.

J'ai essayé d'utiliser np.gradient() mais le résultat n'est pas ce que j'ai prévu:

Informatique et dessin de champs de vecteurs

Ce que je dois attendre, c'est quelque chose le long de ces lignes:
Informatique et dessin de champs de vecteurs

EDIT:
Après la modification de la deux lignes dans le code:

y, x = np.mgrid[500:-100:200j, 1000:-100:200j] 
p = -1 * np.exp(-((x - 893.6)**2 / 1000 + (y - 417.35)**2 / 1000))

J'ai une mauvaise intrigue: il semble être inversée gauche-droite (flèches semblent être dans le bon endroit, mais pas le champ):Informatique et dessin de champs de vecteurs
EDIT:
Fixe en changeant de y, x = np.mgrid[500:-100:200j, -100:1000:200j] Aucune idée pourquoi?

source d'informationauteur Tad