Python неправильно отображает "касательную" функцию - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь построить общую касательную функцию на matplotlib в Python, но она выходит неправильно.

Функция, которую я пытаюсь построить: $$ 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)

Это должно выглядеть так: correct

Но в конечном итоге это выглядит так: wrong

1 Ответ

3 голосов
/ 11 июля 2019

Это происходит из-за особенностей функции тангенса (то есть, имея значения x вокруг этих точек).Быстрое решение состоит в том, чтобы ограничить ось Y, например,

plt.ylim(-40, 40)

, давая

enter image description here

...