С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/76: Рейтинг темы: голосов - 76, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 82

Построение графика в комплексной плоскости (MatPlotLib)

18.10.2015, 23:10. Показов 15499. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Такая проблема: нужно нарисовать график функции w(s) = 1/(1 + s). (Это годограф апериодического звена, но это не важно)

В данном случае s - это произведение мнимой единицы на какую-то переменную omega. Нарисовать нужно в комплексной плоскости.
Вопрос: где у меня ошибка в коде?


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from numpy import *
import matplotlib.pyplot as plt
plt.axis([-10., -10., -10., 10.])
omega = linspace(-10, 10, 181)
s = 1j * omega
w = 1/(1 + s)
plt.plot(omega, w, 'g--', label = 's(w)')
 
plt.xlabel('Real')
plt.ylabel('Imaginary')
plt.title('Graphik')
plt.legend()
plt.show()
Добавлено через 1 час 25 минут
Час гугления ничего мне не дал, посему решил упростить вопрос: а как вообще в питоне рисовать в комплексных координатах?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2015, 23:10
Ответы с готовыми решениями:

Построение графика с matplotlib
Не могу разобраться как построить график. График должен выглядеть как на фотографии. Пытался написать код, но что-то не догоняю ...

Ускорение обновления графика matplotlib с использованием matplotlib.animation
Всем добрый день. Я пытаюсь оптимизировать вывод графиков matplotlib в режиме реального времени. Пробовал реализовать через plt.plot и...

Построение графика через Matplotlib
Traceback (most recent call last): File "C:\Users\admin\Desktop\регресия\Regressia__kopia.py", line 8, in <module> import...

10
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
19.10.2015, 08:01
Лучший ответ Сообщение было отмечено Timebird как решение

Решение

А как вы себе вообще это представляете?
Две действительные координаты у аргумента, две у функции - в итоге получается четыре.
То есть для "честного" отображения вам понадобится четырёхмерное пространство.

Его изобразить не получится, поэтому надо как-то выкручиваться, делать "срезы".
Когда я изучал ТФКП в институте, там в учебнике использовалось отображение через два обычных 3д-графика. По плоскости XY аргумент, по Z - на одном графике мнимая часть, на другом - действительная.

Можно выкрутится - например, я когда-то сам придумал отображать "сдвигом" сетки. Берём участок сетки, для каждой точки (x,y) наносим на плоскость её функцию. Плохо, что аргумент тут на графике не видать, только если вручную написать. Но картинки красивые.

Так что тут общего способа нет.
1
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 82
19.10.2015, 15:16  [ТС]
Спасибо, я Вас понял). Вместе с задачей давалась схематичная картинка, которая должна получиться. Там оси просто помечены как Re и Im, так что склоняюсь к тому, что имелась в виду ось Z

Добавлено через 3 часа 17 минут
Тем не менее. Для оси Z как строить, чтобы по абсциссам откладывались действительные числа, а по ординатам - мнимые?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
20.10.2015, 08:49
Не знаю. Говорят об абсциссах и ординатах обычно для 2д.
Если я правильно понял, у вас там два графика должно было даваться. В одном по Z - действительные, в другом - мнимые.
0
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 82
20.10.2015, 12:58  [ТС]
Вы правы! Забил тут эту формулу в wolfram - действительно, два. Сверил.
Получилось, что график, листинг которого выше - это график для действительной части.
А как тогда мнимую построить? Что нужно изменить в коде?
График на вольфраме
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
20.10.2015, 13:06
Не поленился, посмотрел ваш код
Первый раз увидел запись "1j". Неудивительно, просто с комплексными числами не работал.
У комплексных чисел в numpy есть атрибуты - real и imag.

Кроме того, у вас график 2д. А надо 3д.
1
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 82
20.10.2015, 18:44  [ТС]
Запустил тут код в первом посте, а он бред какой-то показывает. Видимо, по ошибке вставил старье.

Не по теме:

Неделю просто уже мучаюсь над этой штукой, если не больше.


Вот здесь верная действительная часть:
Python
1
2
3
4
5
6
7
8
9
10
from numpy import *
import matplotlib.pyplot as plt
 
plt.axis([-4., 4, -4., 4.])
omega = linspace(-4, 4, 251)
T = 1
j = complex(0, 1)
w = 1/(j*omega*T + 1)
plt.plot(omega, w, label='s(w)')
plt.show()
Спасибо, попробую тогда изменить на 3д и отпишусь!

Добавлено через 3 часа 34 минуты
В 3Д получить график не смог, зато получилось зарисовать мнимую часть.
Итого - как-то вот так:


Python
1
2
3
4
5
6
7
8
9
10
11
12
from numpy import *
import matplotlib.pyplot as plt
 
plt.axis([-4., 4, -4., 4.])
omega = linspace(-4, 4, 251)
T = 1
j = complex(0, 1)
w = 1/(j*omega*T + 1)
plt.plot(omega, w, label='s(w) -- REAL')
plt.plot(omega, w.imag, label='s(w) -- IMAGINARY')
plt.legend()
plt.show()
Добавлено через 1 час 54 минуты
Мда, а теперь есть загвоздка, как графики и оси местами поменять.
То есть по идее нужно, чтобы мы откладывали по действительной и мнимой осям функцию w(omega)
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
21.10.2015, 09:10
А это точно то, что вам нужно?
У вас частный случай, действительная часть = 0. В общем случае такое не проканает. Надо 3д рисовать.
0
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 82
21.10.2015, 23:56  [ТС]
Вышло вот так.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import matplotlib.pyplot as plt
import numpy as np
 
def func(a):
    for x in range(len(a)):
        plt.plot([0, a[x].real], [0, a[x].imag], 'ro-', label='python')
    limit=np.max(np.ceil(np.absolute(a))) # set limits for axis
    plt.xlim((-limit,limit))
    plt.ylim((-limit,limit))
    plt.ylabel('Imaginary')
    plt.xlabel('Real')
    plt.show()
 
omega = np.linspace(-4, 4, 251)
a = 1/(1 + 1j*omega)
func(a)
Миниатюры
Построение графика в комплексной плоскости (MatPlotLib)  
0
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 82
22.10.2015, 00:02  [ТС]
Кстати! Очень нужно срочно. Есть ли функция в Python для того, чтобы по оси абсцисс откладывались, допустим, обычные числа, а по оси ординат -- углы в градусах?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
22.10.2015, 12:07
Откладывайте, в чём проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2015, 12:07
Помогаю со студенческими работами здесь

Построение автообновляемого не стандартного графика (matplotlib)
Имеется Arduino с подключенным к ней датчиком, она непрерывно посылает по serial порту данные в виде b'000'\r\n. Есть функция, которая...

Построение графика в комплексной плоскости
Собственно возникла сабжевая проблемка. Нижеприведённый текст используется для построения АЧХ акселерометра unit Unit1; interface...

Построение 2-х окружностей в комплексной плоскости
Задача просто элементарная Дана "средняя" окружность, она лежит на мнимой оси координат, т.е координата х центра окружности =0, а...

Построение множества на комплексной плоскости
Дано такое множество: |z - 2 + 3i| = |z + 2 + 4i| Задание звучит так: Построить множество на комплексной плоскости, записав его уравнение...

Построение графика нормального распределения matplotlib
Здравствуйте, хотел построить график нормального распределения по данным, но он выглядит странновато, не могли бы помочь исправить? Мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru