所以我希望在python中创建以下函数的log(y)vs log(x)。我不确定范围(w)应该如何构成才能得到一个好的图形。现在,我将其留空。

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


没关系,我已修复它。

最佳答案

您可以使用numpy.arange函数来获取numpy版本的range。此功能的合理范围是:

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


(也就是说,以1000为步长从1000增长到10000000)。但是,请注意,为了使Python知道您正在尝试使用幂运算而不是按位xor运算符,应将行更改为:

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


然后,如果进行对数-对数图,最终得到:

plt.loglog(w, y)

09-11 21:38