【问题标题】:python isn't plotting the "tangent" function correctlypython没有正确绘制“切线”函数
【发布时间】: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 轴范围。如果你给它一个明确的范围(对不起,不熟悉模块告诉你怎么做),我认为它会解决问题。
  • 好奇被截断的情节线的非线性、非常量包络是如何出现的?

标签: python math graphing


【解决方案1】:

这是由于切线函数的奇异性(即,在这些点周围具有 x 值)。一个快速的解决方法是限制 y 轴,例如,

plt.ylim(-40, 40)

给予

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2020-10-21
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多