Задать вопрос
@Timebird

Простой вопрос по Python [функции]?

Здравствуйте! Такой вопрос. Допустим, у нас есть какая-нибудь математическая формула, допустим, модуляции:
x(t) = sin(omega*t + phi)
Нужно задать диапазон значений для omega, t и phi. И, соот-но построить графики примерные для этих значений.
Как это реализовать на Python? (примерный синтаксис что должен собой представлять?)
Больше всего смущает словосочетание "диапазон значений", из-за него и вопрос.

Заранее спасибо!
  • Вопрос задан
  • 744 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@nirvimel
График строится не по функции, а по точкам, координаты которых получены путем применения функции к некоторому диапазону значений аргумента. Алгоритм (упрощенно) такой:
  1. Написать саму функцию, которая принимает на вход один скалярный аргумент и возвращает скалярную величину.
  2. Построить массив подряд идущих значений - это будут координаты X
  3. Подать его на вход функции, получить на выходе другой массив - это будут координаты Y.
  4. На этом этапе можно ограничить диапазон значений отфильтровав пары координат и выбросив те, в которых значение Y выходит за пределы диапазона.
  5. Отобразить на графике кривую, проходящую через все полученные пары точек.

В качестве UI-библиотеки лучше всего взять Matplotlib, по ней есть хорошие туториалы, например - один, другой, третий и другие.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Cyber_bober
Диапазон значений это массив, если я правильно вас понимаю.
Ответ написан
@abcd0x00
Табулирование функций прямой и параболы
>>> def f1(x):
...     return 2 * x
... 
>>> def f2(x):
...     return x * x 
... 
>>> def g(func, start, end, step):
...     while start <= end:
...         yield start, func(start)
...         start += step
... 
>>> list(g(f1, -3, 3, 1))
[(-3, -6), (-2, -4), (-1, -2), (0, 0), (1, 2), (2, 4), (3, 6)]
>>> 
>>> list(g(f2, 0, 10, 1))
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81), (10, 100)]
>>>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы