Необходимо построить функцию косинуса в часах, когда она рассчитывается в секундах - PullRequest
0 голосов
/ 28 января 2019

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

Функция: F0*cos((pi*(t-12))/12), где t от 0 до 86400 секунд.

Мне нужно, чтобы эта функция рассчитывалась для каждой секунды не только для точности, но и потому, что функция, которую представляет этот cos,измеряется в ваттах / м ^ 2.

Я пытаюсь построить эту функцию, но хочу, чтобы ось х была от 0 до 24 часов вместо 0 до 86400 секунд, чтобы график не выглядел так:

enter image description here

Вот мой код и спасибо заранее!

import numpy as np
import matplotlib.pyplot as plt

ax = plt.subplot(111)
F0 = 500.0

t = np.arange(0, 86400, 1)
s = F0*(np.cos((np.pi*(t-12))/12))
line, = plt.plot(t, s, lw=1)

plt.show()

1 Ответ

0 голосов
/ 28 января 2019

Вам необходимо преобразовать время из секунд в часы, разделив t на 3600 перед вычислением s, потому что в уравнении используется коэффициент 12, который относится к часам.Если вы конвертируете их после вычисления s, вы не получите желаемый график.Поэтому вы должны использовать

import numpy as np
import matplotlib.pyplot as plt

ax = plt.subplot(111)
F0 = 500.0

t = np.arange(0, 86400, 1)/3600
s = F0*(np.cos((np.pi*(t-12))/12))
line, = plt.plot(t, s)

enter image description here

PS Не выполняйте следующее, потому что здесь вы вычисляете s, используя времяв секундах, но затем выведите время в часах, что приведет к неправильному масштабированию по оси x

t = np.arange(0, 86400, 1)
s = F0*(np.cos((np.pi*(t-12))/12))
line, = plt.plot(t/3600, s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...