簡體   English   中英

Matplotlib 未繪制軸的虛側

[英]Matplotlib not plotting the imaginary side of the axis

我試圖繪制這個冪律方程:冪律方程

這是我的代碼。 但是,當n < 1 ,繪圖僅繪制方程的一側(實側而不是虛側)。 如何繪制虛側(當n < 1 )?

import numpy as np
from matplotlib import pyplot as plt

n = 0.4
k = 0.479862
p = 9470
r = np.linspace(-0.0127, 0.0127, 500)
d = 0.0254
u = (n/n+1)*(p/(2*k))** (1/n)*(d**((n+1)/n) - r**((n+1)/n))
plt.xlabel('Radius m')
plt.ylabel('Velocity l/min')
plt.plot(r, u)

n = 0.4繪圖

n = 0.4 繪圖

它應該看起來類似於這個n=1或牛頓圖

n=1 或牛頓圖

這個問題與n是否小於 1 無關。 每當(n+1)/n不是完美整數時就會出現問題。 然后, r**((n+1)/n)對於浮點數沒有明確定義,對於負r ,如在這篇文章中解釋的那樣。 只需嘗試n = 2 ,您就會注意到它也沒有任何負值r的值。

另請注意,您的 Python 公式以(n/n+1)開頭,而您的數學公式以(n/(n+1))開頭。

要繪制對稱曲線,您可能只需復制和鏡像正部分。

import numpy as np
from matplotlib import pyplot as plt

n = 0.4
k = 0.479862
p = 9470
r = np.linspace(0, 0.0127, 100)
d = 0.0254
u = (n/(n+1))*(p/(2*k))** (1/n)*(d**((n+1)/n) - r**((n+1)/n))

plt.xlabel('Radius m')
plt.ylabel('Velocity l/min')
plt.plot(np.concatenate([-r[::-1], r]), np.concatenate ([u[::-1], u]))
plt.show()

這是結果曲線,公式的第一個因子經過調整( n/(n+1) ),對於n=0.4 結果圖

或者,您可以將所有內容轉換為復數,並分別繪制它們的實部和虛部。 因此,您使用r.astype(np.complex)轉換r np.imag(u)得到的虛部u

import numpy as np
from matplotlib import pyplot as plt

n = 0.4
k = 0.479862
p = 9470
r = np.linspace(-0.02, 0.02, 500)
r = r.astype(np.complex)
d = 0.0254
u = n / (n + 1) * (p / (2 * k)) ** (1 / n) * (d ** ((n + 1) / n) - r ** ((n + 1) / n))

plt.xlabel('Radius m')
plt.ylabel('Velocity l/min')
plt.plot(r, u, color='dodgerblue', label='real part')
plt.plot(r, np.imag(u), color='crimson', label='imaginary part')
plt.legend()
plt.show()

用實部和虛部繪圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM