Студенческий научный форум 2026rae.ru
Материалы Международной студенческой научной конференции

Студенческий научный форум 2026

БИБЛИОТЕКА МОДЕЛИРОВАНИЯ ДИНАМИЧЕСКИХ СИСТЕМ С ИСПОЛЬЗОВАНИЕМ PYTHON

1Федеральное государственное бюджетное образовательное учреждение высшего образования (ФГБОУ ВО) «Мелитопольский государственный университет»

Постановка проблемы. В современных условиях разработки электронных устройств возникает необходимость в эффективном инструменте моделирования схем до их физической реализации. Существующие решения часто имеют ограниченную гибкость или сложность в расширении функциональности.

Требуется создание программного обеспечения, позволяющего:

− Создавать математические модели электронных схем

− Проводить различные виды анализа

− Обеспечивать возможность расширения базового функционала

Анализ последних исследований и публикаций. Современные системы моделирования электронных схем активно развиваются в направлении повышения точности и скорости вычислений.

Особое внимание уделяется:

− Интеграции с другими инструментами проектирования

− Расширению библиотек компонентов

− Внедрению новых методов анализа

− Улучшению пользовательского интерфейса

Целью работы является разработка программного обеспечения для моделирования электронных схем, которое:

− Обеспечивает создание математических моделей схем

− Реализует основные виды анализа (DC и AC)

− Имеет модульную архитектуру для дальнейшего расширения

− Предоставляет удобный интерфейс для работы с данными

Основная часть

Для решения задачи моделирования электронной схемы необходимо получить математическую модель для возможности дальнейшего анализа.

Следовательно, необходимо реализовать класс, который будет соответствовать математической модели электрической цепи и хранить в себе все необходимые данные, такие как: номера и индексы узлов, список компонентов (нетлист), сформированные уравнения равновесия.

Представим диаграмму класса Circuit (рис. 1).

При инициализации объекта класса Circuit формируется список узлов и список компонентов из переданного нетлиста. Также для инициализации объекта можно указать тип модели, которая будет создаваться. реализовано два метода: общий табличный метод и гибридный ГМ10. Но Такая реализация предполагает возможность добавления других необходимых пользователю методов путем дописывания соответствующего кода.

Рис. 1. Диаграмма класса Circuit

Также на данной диаграмме видны два возможных анализа: DC-анализ и AC-анализ. В дальнейшем планируется доработать еще несколько типов анализа.

Методы DC и AC анализов возвращают словарь с такой структурой:

- Название анализа;

- Начало отсчета времени;

- Конец отсчета времени;

- Шаг времени;

- Список векторовнапряжений и токов (для каждого момента времени и каждого элемента схемы).

Сделано это для удобства формирования результатов, как в текстовой, так и в графической формах.

На диаграмме, представленной на рисунке 2, изображено подробное описание логики возможного сеанса использования данной программы. Пользователь создает компоненты, необходимые ему для моделирования. Затем необходимо создать объект схемы Circuit и передать ему нетлист для формирования математической модели. При вызове метода для анализа схемы пользователю будет предоставлено решение уравнений равновесия данной модели в виде текстового или графического ответа.

Для реализации компонентов был создан класс Component с общими полями и методами (рис. 3). Все компоненты из базового набора подражают классу Component. То есть, для создания нового компонента необходимо просто переопределить или добавить необходимые поля и/или методы. Это также упрощает создание новейших, нужных юзеру частей схемы, не входящих в базисный набор.

Рис. 2. Диаграмма последовательности работы программы

Рис. 3 Диаграмма класса Component

Рис. 4 Диаграмма класса Resistor

Класс Resistor следует классу Component и представлен на рисунке 4.

Осмотрим параметры, необходимые для инициализации объекта класса:

classResistor(Component):

def__init__(self, name: str, nodes: list, resistance: float):

− name – название для компонента в схеме;

− nodes – список из узлов, к которым подключен резистор (в данном случае 2 узла)

− resistance – числовое значение с плавающей точностью для определения сопротивления

Пример создания объекта:

R1 = Resistor('R1', [0,1],3)# 3 Ohm

Класс CurrentSource следует классу Component и представлен на рисунке 5.

Осмотрим параметры, необходимые для инициализации объекта класса:

class CurrentSource(Component):

def__init__(self, name: str, nodes: list, current: float, ac_curr ent=None):

1) name – название для компонента в схеме;

2) nodes – список из узлов, к которым подключен резистор (в данном случае 2 узла)

3) current – числовое значение с плавающей точной для определения силы тока

- ac_current – функция зависимая от времени (для анализа по переменному току), принимающая функцию или кортеж значений для функций по умолчанию.

Пример создания объекта:

I2 = CurrentSource(‘I2’, [0,1],2)#2 Ampere

Класс VoltageSource следует классу Component и представлен на рисунке 6.

Осмотрим параметры, необходимые для инициализации объекта класса:

classVoltageSource(Component):

def__init__(self, name: str, nodes, voltage, ac_voltage=None):

1) name – название для компонента в схеме;

2) nodes – список из узлов, к которым подключен резистор (в данном случае 2 узла)

− voltage – числовое значение с плавающей точностью для определения напряжения

− ac_ voltage – функция зависимая от времени (для анализа по переменному току), принимающая функцию или кортеж значений для функций по умолчанию.

Имеющиеся функции:

Пример создания объекта:

V2 = VoltageSource('V2', [0,1],1)#1 Volt

Для выполнения АC-анализа необходимо вызвать метод solve_AC(), имеющий следующие входные параметры:

defsolve_AC(self, start, stop, step):

− start – начало отсчета времени;

− stop – конец отсчета времени;

− step – шаг времени.

Данный метод возвращает словарь, содержащий результаты выполнения матричного уравнения Ax=b для каждого шага времени. На базе данного словаря можно строить графические результаты анализа.

Рассмотрим схему, состоящую из двух элементов: источника тока и резистора и двух узлов (один из которых нулевой) (рис. 7).

Код для описания конфигурации схемы:

R1 = Resistor(‘R1’, [0,1],3)# 3 Ohm

I2 = CurrentSource(‘I2’, [0,1],2)#2 Ampere

test_circuit = Circuit()

test_circuit.add_components([R1, I2])

Рис. 5. Диаграмма класса CurrentSource

Рис. 6. Диаграмма класса VoltageSource

Рис. 7. Схема к примера

Пусть сила тока источника равна 2 Ампера, а сопротивление резистора – 3 Ом (рис. 8).

Проведем DC анализ для данных значений:

test_circuit.solve_DC()#DC

Рис. 8. Результаты примера

Выводы

Разработанное программное обеспечение позволяет эффективно моделировать электронные схемы. Основные результаты:

− Создана гибкая архитектура на основе объектно-ориентированного подхода

− Реализованы базовые методы анализа DC и AC

− Обеспечена возможность расширения функциональности

− Система позволяет получать детальные результаты анализа в удобной форме


Библиографическая ссылка

Узков А.Ю., Мозговенко А.А. БИБЛИОТЕКА МОДЕЛИРОВАНИЯ ДИНАМИЧЕСКИХ СИСТЕМ С ИСПОЛЬЗОВАНИЕМ PYTHON // Студенческий научный форум 2026. 2026. № 20. С. 121-124;
URL: https://publish2020.scienceforum.ru/article/view?id=1047 (дата обращения: 01.11.2026).