import numpy as np

K = 9.0e9

# Calculate the potential at point (x, y).
# q, xq, and yq must be numpy arrays.

def potential(x, y, q, xq, yq):

    dr = np.sqrt((x-xq)**2+(y-yq)**2)

    phi = -q[dr>0]*np.log(dr[dr>0])	# 2-D
    #phi = q[dr>0]/dr[dr>0]		# 3-D

    return K*phi.sum()

# Calculate the field at point (x, y).

def field(x, y, q, xq, yq):

    dx = x-xq
    dy = y-yq
    dr2 = dx**2+dy**2

    Ex = q[dr2>0]*dx[dr2>0]/dr2[dr2>0]	# 2-D
    Ey = q[dr2>0]*dy[dr2>0]/dr2[dr2>0]

    return K*Ex.sum(),K*Ey.sum()
