【发布时间】:2019-07-10 21:14:59
【问题描述】:
我正在尝试在 Python 中将一般正切函数绘制到 matplotlib 上,但结果不正确。
我要绘制的函数是: $$ f(x) = A tan( \frac{2\pi}{\lambda} x - \phi ) $$
import numpy as np
import math
import matplotlib.pyplot as plt
import tkinter
f = lambda x, A, lambda_, phi: A * math.sin( ((2 * math.pi) / lambda_) * x - phi)
g = lambda x, A, lambda_, phi: A * math.cos( ((2 * math.pi) / lambda_) * x - phi)
h = lambda x, A, lambda_, phi: f(x, A, lambda_, phi) / g(x, A, lambda_, phi)
def generate_graph(A, lambda_, Phi):
plt.figure()
x = np.arange(-.95, .95, 0.005)
#plt.plot(x, [f(k, A, lambda_, Phi) for k in x], color='red')
#plt.plot(x, [g(k, A, lambda_, Phi) for k in x], color='blue')
plt.plt(x, [h(k, A, lambda_, Phi) for k in x], color='green')
plt.show()
A = 1 #amplitude
lambda_ = 3 #wavelength
Phi = 0 #phase shift
generate_graph(A, lambda_, Phi)
它应该看起来像这样:
但它最终看起来像这样:
【问题讨论】:
-
据我所知(调试),您正在正确生成值。我不知道这是否有帮助......
-
您的函数具有趋向于正无穷和负无穷的渐近线 - 但您评估它的网格碰巧捕获了一些极负值(最小值 -1374823386397210.2),但没有相应的高正值(最大值95.5)。我很确定问题只是由于这个原因,matplotlib 为绘图提供了一个极其倾斜的 Y 轴范围。如果你给它一个明确的范围(对不起,不熟悉模块告诉你怎么做),我认为它会解决问题。
-
好奇被截断的情节线的非线性、非常量包络是如何出现的?