2012-10-07 82 views
1

所以我希望在python中創建下面函數的log(y)vs log(x)。我不確定範圍(w)應該如何組成才能得到一個好的圖。現在我已經把它留空了。如何在Python中編寫函數範圍

import numpy as np 
import matplotlib.pyplot as plt 

w = 
y = 1/(1+2.56e-8*(w)^2) 

plt.plot(log(w),log(y)); 

好吧,現在我必須做更多的情節,但它有點複雜。

w = np.arange(1e3, 1e7, 1e3) 

z = 1/ (((5.89824e-15 (w ** 4))+(1-2.56e-8 (w ** 2))) ** 0.5) 
b = plt.loglog(w, z); 

這給我一個錯誤:

z = 1/ (((5.89824e-15 (w ** 4))+(1-2.56e-8 (w ** 2))) ** 0.5) 
TypeError: 'float' object is not callable 

別介意我固定它。

+0

你知道該函數的'plt.loglog'? –

+0

我不是。下面的人向我展示了它。 –

回答

2

您可以使用numpy.arange函數來獲得一個numpy版本的範圍。這個功能的合理範圍是:

w = np.arange(1e3, 1e7, 1e3) 

(也就是說,從1000到10000000以1000步爲單位)。但是,請注意,爲了使Python知道你正在嘗試使用冪,而不是按位異或運算符,你應該改變你的線路:

y = 1/(1+2.56e-8*(w ** 2)) 

然後,如果你犯了一個雙對數圖,你結了:

plt.loglog(w, y) 

enter image description here

+0

謝謝,這工作。我不知道loglog()函數。 –

+0

創建'w'也可能值得考慮'numpy.logspace'。 –