TypeError: solo las matrices de longitud 1 se pueden convertir a escalares de Python con NUMPY

# -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np import math #task 2e x = np.linspace(-0.0001,0.1,50) #constants e0=8.85*10 ** (-12) r0=3 * 10 ** (-3) Q=2 * 10** (-9) Q2=10 * 10*(-9) r2=5*10**(-3) v=(Q/((4*math.pi*e0)*(math.sqrt((x**2+r0**2))))) v2=v+(Q2/((4*math.pi*e0)*(math.sqrt(((x-2)**2+r2**2))))) plt.plot(x, v) plt.plot(x, v2) plt.xlabel("Meter") plt.ylabel("V1/2(x)") 

Ejecutando este código da el siguiente TypeError:

TypeError: solo los arrays de longitud 1 se pueden convertir a escalas Python On 21 v = (Q / ((4 * math.pi * e0) (math.sqrt ((x * 2 + r0 ** 2)))))

Use numpy.sqrt lugar de math.sqrt . numpy.sqrt espera un escalar o una matriz como entrada, por otro lado math.sqrt solo puede manejar los escalares.

 >>> import numpy as np >>> import math >>> a = np.arange(5) >>> np.sqrt(a) array([ 0. , 1. , 1.41421356, 1.73205081, 2. ]) #error >>> math.sqrt(a) Traceback (most recent call last): File "", line 1, in  math.sqrt(a) TypeError: only length-1 arrays can be converted to Python scalars >>> 

usar np en lugar de math.sqrt

 v=(Q/((4*math.pi*e0)*(np.sqrt((x**2+r0**2))))) v2=v+(Q2/((4*math.pi*e0)*(np.sqrt(((x-2)**2+r2**2)))))