¿Debo usar la función numpy.abs () o la función numpy.real () cuando el dibujo de Python encuentra datos de valores complejos?

Siempre siento que entiendo el dibujo, pero cada vez que encuentro valores complejos, siento que la idea no es muy clara. Por ejemplo, si queremos hacer una numpy.exp(1j * x)imagen de función , podemos ver que cuando agregamos el xvalor , obtendremos el valor complejo. Valor numérico. Si usamos el valor complejo para dibujar directamente, nos encontraremos con un mensaje de advertencia, el código es el siguiente:

import numpy as np
import matplotlib.pyplot as plt

vertex = np.pi
x = np.linspace(-vertex, vertex, 100)
f = np.exp(1j * x)

plt.figure()
plt.plot(x, f)
plt.show()
"""
ComplexWarning: Casting complex values to real discards the imaginary part
  return array(a, dtype, copy=False, order=order)
"""

Podemos ver el mensaje de aviso diciendo que debido a que estamos usando números complejos, descartamos automáticamente la parte imaginaria y solo conservamos la parte real. En el código anterior, podemos np.real()eliminar este mensaje de advertencia agregando una función en este momento . A partir de aquí, también podemos concluir que el comando de dibujo del módulo matplotlib requiere que los parámetros de entrada sean números reales .

import numpy as np
import matplotlib.pyplot as plt

vertex = np.pi
x = np.linspace(-vertex, vertex, 100)
f = np.exp(1j * x)

plt.figure()
plt.plot(x, np.real(f))
plt.show()

En este momento, eliminamos el mensaje de advertencia y mostramos con éxito la siguiente imagen.
coseno
No es difícil ver que esto es en realidad una función coseno, porque conocemos la fórmula de Euler:
eix = cos (x) + isin (x) e ^ {ix} = cos (x) + isin (x)miyo x=c o s ( x )+i s i n ( x )
aquícos(x)está la parte real ysin(x)la parte imaginaria, así que cuando la usamosnp.real(f),sin(x)la parte querealmente eliminamos, lae^{ix}funciónen este momento seconvierte en realidadcos(x). Al final, no es difícil ver que la imagen que obtenemos es tambiéncos(x)una imagen.
Entonces, ¿cómo podemos obtenere^{ix}la imagen de la función? La respuesta es usarnp.abs(f). El código es el siguiente:

import numpy as np
import matplotlib.pyplot as plt

vertex = np.pi
x = np.linspace(-vertex, vertex, 100)
f = np.exp(1j * x)

plt.figure()
plt.plot(x, np.abs(f))
plt.show()

mi
Puedes ver que el resultado final que obtuvimos es 1una línea recta con comportamiento constante , esto es fácil de entender, la e^{ix}imagen es en realidad un círculo unitario, por lo que su longitud, es decir, el valor siempre es igual 1. De esto podemos concluir que al dibujar, si el valor del parámetro de entrada de la imagen es un número complejo, queremos obtener la imagen de la función original, debemos usar la np.abs()función para procesar el valor del parámetro de entrada de la imagen en lugar de usar la np.real()función.

Si aún tiene problemas con los plurales, puede continuar viendo estos conceptos básicos del plural de Python (hipervínculo, haga clic para saltar).

La palabra clave no es fácil, si la encuentra útil, levante la mano para dar un me gusta y déjeme recomendarla para que la vea más gente ~

Supongo que te gusta

Origin blog.csdn.net/u011699626/article/details/112130525
Recomendado
Clasificación