python描画で複雑な値のデータが検出された場合、numpy.abs()関数またはnumpy.real()関数を使用する必要がありますか?

私はいつも絵を理解していると感じますが、複雑な値に出会うたびに、その考えはあまり明確ではないと感じます。たとえば、関数numpy.exp(1j * x)イメージを作成したい場合x、値入力すると複雑になることがわかります。数値。複素数値を使用して直接描画すると、警告メッセージが表示されます。コードは次のとおりです。

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

複素数を使用しているため、虚数部を自動的に破棄し、実数部のみを保持するというプロンプトメッセージが表示されます。上記のコードでは、この時点でnp.real()関数を追加することで、この警告メッセージを削除できます。ここから、matplotlibモジュールの描画コマンドでは、入力パラメーターが実数である必要があると結論付けることもできます

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

このとき、警告メッセージを削除し、次の画像を正常に出力しました。
余弦
オイラーの式がわかっているので、これが実際に余弦関数であることを確認するのは難しくありません
。eix= cos(x)+ isin(x)e ^ {ix} = cos(x)+ isin(x)ei x=c o s x +私は、私のn X
ここでは、cos(x)実部とであるsin(x)私たちが使用するときに、虚部np.real(f)を、sin(x)その部分私たちは実際に削除はe^{ix}機能、この時点では、実際になりcos(x)結局、私たちが実際に得cos(x)た画像がの画像であることを確認することは難しくありません
では、どうすればe^{ix}関数のイメージを取得できますかnp.abs(f)答えは使用することです。コードは次のとおりです。

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
得られた最終結果は1一定の動作をする直線であることがわかります。これは理解しやすいです。e^{ix}画像は実際には単位円であるため、長さ、つまり値は常に等しくなり1ます。このことから、描画時に画像入力パラメータ値が複素数の場合、元の関数画像を取得したい場合は、np.abs()関数を使用する代わりに、np.real()関数を使用して画像入力パラメータ値を処理する必要があると結論付けることができます。

それでも複数の問題が発生する場合は、このpythonの複数の基本を引き続き表示できます(ハイパーリンク、クリックしてジャンプ)。

コードワードは簡単ではありません。役に立つと思ったら、手を挙げて「いいね」を付けて、もっと多くの人に見てもらいましょう〜

おすすめ

転載: blog.csdn.net/u011699626/article/details/112130525