Devo usar a função numpy.abs () ou a função numpy.real () quando o desenho do python encontra dados de valor complexos?

Sempre sinto que entendo o desenho, mas cada vez que encontro valores complexos, sinto que a ideia não é muito clara. Por exemplo, se quisermos fazer uma numpy.exp(1j * x)imagem de função , podemos ver que ao xinserirmos o valor obteremos o complexo Valor numérico. Se usarmos o valor complexo para desenhar diretamente, encontraremos uma mensagem de aviso, o código é o seguinte:

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 a mensagem de prompt dizendo que, por estarmos usando números complexos, descartamos automaticamente a parte imaginária e apenas mantemos a parte real. No código acima, podemos np.real()eliminar essa mensagem de aviso adicionando uma função neste momento . A partir daqui, também podemos concluir que o comando de desenho do módulo matplotlib requer que os parâmetros de entrada sejam números reais .

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()

Neste momento, eliminamos a mensagem de aviso e geramos com sucesso a seguinte imagem.
cosseno
Não é difícil ver que esta é na verdade uma função cosseno, porque conhecemos a fórmula de Euler:
eix = cos (x) + isin (x) e ^ {ix} = cos (x) + isin (x)eeu x=c o s ( x )+i s i n ( x )
aquicos(x)está a parte real esin(x)a parte imaginária, então quando a usamosnp.real(f),sin(x)a parte querealmente removemos, ae^{ix}funçãoneste momentorealmente se tornacos(x). No final, não é difícil perceber que a imagem que realmente obtemos também écos(x)uma imagem.
Então, como podemos obtere^{ix}a imagem da função, a resposta é usarnp.abs(f). O código é o seguinte:

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()

e
Você pode ver que o resultado final que obtivemos é 1uma linha reta com comportamento constante.Isso é fácil de entender.A e^{ix}imagem é na verdade um círculo unitário, então seu comprimento, ou seja, o valor é sempre igual 1. Disto podemos concluir que ao desenhar, se o valor do parâmetro de entrada da imagem for um número complexo, queremos obter a imagem da função original, devemos usar a np.abs()função para processar o valor do parâmetro de entrada da imagem em vez de usar a np.real()função.

Se ainda tiver problemas com plurais, você pode continuar a ver este básico de python no plural (hiperlink, clique para pular).

A palavra de código não é fácil, se você achar útil, levante a mão para dar um like e deixe-me recomendá-la para mais pessoas verem ~

Acho que você gosta

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