Estoy tratando de crear un programa realmente simple que trazará una parábola donde v es la velocidad, a es la aceleración x es el tiempo. El usuario ingresará valores para v y a , luego v y a y x determinarán y .
Intenté hacer esto con esto:
x = np.linspace(0., 9., 10) a = raw_input('Acceleration =') v = raw_input('Velocity = ') y = v * x - 0.5 * a * x**2.Pero, sigo recibiendo este error:
TypeError: ufunc 'multiply' no contenía un bucle con tipos coincidentes de firma dtype('S32') dtype('S32') dtype('S32')
¿Qué significa esto?
De la documentación de raw_input :
Luego, la función lee una línea de la entrada, la convierte en una cadena (eliminando una nueva línea final) y la devuelve.
Entonces, lo que sucede es que intentas multiplicar una cadena con un flotante, algo como y="3" * x - 0.5 * "3" *x**2 , que no está definido.
La forma más sencilla de eludir esto es hacer que la cadena de entrada flote primero.
x = np.linspace(0., 9., 10) a = float(raw_input('Acceleration =')) v = float(raw_input('Velocity = ')) y = v * x - 0.5 * a * x**2 Tenga en cuenta que si está usando Python 3, necesitará usar input en lugar de raw_input ,
a = float(input('Acceleration ='))Me enfrenté a este problema recientemente, cambie el dtype de x a algo específico haciendo:
x = np.asarray(x, dtype='float64')