FEMM 5

Часть III · Встроенный Python и воспроизводимая автоматизация → § 12 · Язык и безопасная последовательность вычислений

Занятие 12.3

Комплексные числа и численные вычисления во встроенном Python

Цель и задачи

Цель. Проверить комплексную арифметику на балансе электрической мощности.

Задачи

  • Вычислять комплексные токи и мощности, явно различая амплитудные и действующие значения.
  • Вычислить P, Q и модуль S по амплитудным фазорам с комплексным сопряжением.
Что нужно вспомнить перед началом

Если одно из понятий незнакомо, вернитесь к предыдущему занятию и воспроизведите его численный пример. После этого переходите к новой постановке.

Место занятия в инженерной методике

Расчётная лабораторная работа · Согласование комплексного отклика и средней мощности

Инженерный вопрос. Согласуются ли комплексная мощность и принятая нормировка?

Эти действия входят в подготовку расчёта любого устройства: они устанавливают связь источника, геометрии и наблюдаемой величины. Их результат позволяет выбрать допустимую постановку и способ извлечения будущей характеристики.

Последовательность решения, отчёт и критерии результата

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

Последовательность решения

  1. Обосновать постановку и способ измерения. Зафиксируйте частоту, фазовый нуль и амплитудную либо действующую нормировку; отдельно запишите действительную и мнимую части уравнения.

  2. Вычисленный аналитический эталон. Проверьте комплексное произведение для мощности и физический смысл фазы на численном примере.

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

  4. Ответить на вопрос по своим результатам. Проверьте действительную и мнимую части отдельно, затем фазу и мощность; явно сохраните амплитудную либо действующую нормировку.

Что включить в отчёт

Результат этого занятия. Расчёт с проверкой сопряжения, фазы и амплитудной нормировки.

Данные именно этого опыта. Сохраните комплексные напряжение, ток и вычисленные активную и реактивную мощности.

Оформление наблюдений. Частота, \operatorname{Re} и \operatorname{Im} входных и выходных величин, единицы, нормировка и средняя мощность; модуль без фазы недостаточен.

Как обосновать результат

Проверка из практикума. Остаток линейной системы близок к машинной точности; P в пассивном сопротивлении неотрицательна.

Независимый контроль. Сопоставьте комплексное уравнение целиком, отдельно баланс активной мощности и допустимый низкочастотный или постоянный предел.

Критерий выполнения. Вещественный эталон x=\begin{pmatrix}1{,}6\\1{,}8\end{pmatrix}; комплексный эталон удовлетворяет обоим уравнениям; единицы мощности согласованы.

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

Основание сравнения. Опора — комплексные уравнения и определение средней мощности из занятия. Не смешивайте амплитудные и действующие значения и не заменяйте комплексную невязку одной разностью модулей.

Вывод для устройства

Объясните, как фазовый отклик влияет на параметр цепи, реактивную составляющую или потери в исследуемом режиме.

Границы вывода. Простой эталон проверяет конкретное действие или физический закон; перенос на устройство требует заново согласовать геометрию, материалы, режим и объёмный множитель.

Теория и вывод формул

Комплексная арифметика и решение систем уравнений составляют основу автоматизации гармонических расчётов. Возможности встроенного пакета numpy рассматриваются на примерах с независимо проверяемыми результатами.

Соглашения об обозначениях и единицах
  • \(i(t)\), \(u(t)\) — мгновенные значения; \(\widehat I\), \(\widehat U\) — комплексные амплитуды; \(\underline I_{\text{д}}\), \(\underline U_{\text{д}}\) — комплексные действующие значения. Для синусоиды \(\widehat I=\sqrt{2}\,\underline I_{\text{д}}\); действующее значение тока равно \(|\underline I_{\text{д}}|\). Нормировка обязательно учитывается в формулах мощности.
  • \(\Phi=\int_S\mathbf B\cdot\mathrm d\mathbf S\) — поток через ориентированную поверхность; \(\Psi=\sum_k\oint_{C_k}\mathbf A\cdot\mathrm d\mathbf l\) — потокосцепление последовательных витков с согласованными замкнутыми контурами. Только при одинаковом сцепленном потоке каждого витка \(\Psi=N\Phi\). Обе величины измеряются в веберах: число витков безразмерно. Запись «Вб·виток» подчёркивает суммирование.
  • \(\theta_{\text{м}}\), \(\Omega\) (также \(\omega_{\text{мех}}\)) — механические угол и угловая скорость. Для основной гармоники \(\theta_{\text{э}}=p\theta_{\text{м}}\), \(\omega_{\text{э}}=p\Omega\), где \(p\) — число пар полюсов. Геометрический период зубцов задаётся отдельно. В производных по углу используйте радианы.
  • Статическая индуктивность \(L_{\text{ст}}=\Psi/i\) — наклон секущей из начала координат; это определение используется при \(\Psi(0)=0\) и \(i\ne0\). Динамическая индуктивность \(L_{\text{дин}}=\partial\Psi/\partial i\) — наклон касательной (дифференциальная, инкрементальная); положение и остальные токи фиксированы. Для линейной характеристики без смещения обе равны одной индуктивности \(L\). При постоянных магнитах и взаимном возбуждении сначала учитывают ненулевое смещение потокосцепления.
  • Положительные направления, оси и специальные индексы определяются в конкретной задаче. Единицу берите из условия или заголовка таблицы; перед подстановкой в формулу СИ переводите миллиметры в метры, миллигенри в генри и градусы в радианы.
  • Численные результаты обычно показаны с четырьмя значащими цифрами; для сравнения близких значений в таблицах сходимости сохранено больше цифр. Полные значения остаются в исходных расчётных данных. Малые остатки вычисления координат на осях показаны как ноль; малые физические величины сохраняются в показательной записи.
Указатель формул этого занятия
  1. (12.5) · Физическая и вычислительная постановка
  2. (12.6) · Комплексная арифметика и сохранение фазы
  3. (12.7) · Численный пример

Физическая и вычислительная постановка

При установившемся гармоническом режиме физическая величина восстанавливается как действительная часть комплексной амплитуды, умноженной на \exp(j\omega t). Комплексное число хранит амплитуду и фазу, а не два независимых режима. Модуль определяет амплитуду, аргумент — фазовый сдвиг. Для синусоиды действующее значение равно амплитуде, делённой на корень из двух.

В проверенной сборке FEMM 5.0 от 6 октября 2026 года import numpy as np подключает встроенную реализацию на основе ulab с дополнениями FEMM. Подтверждены комплексное решение малой линейной системы и БПФ. Это подмножество обычного NumPy; нельзя переносить произвольную программу, предполагая все его функции. Для обучения достаточно math, cmath, списков и проверенных функций numpy.linalg.solve, numpy.fft.fft. Вначале решите малый известный эталон, только затем включайте этот же алгоритм в полевой проход.

\widehat I=\frac{\widehat U}{R+j\omega L},\qquad S=P+jQ=\frac12\widehat U\widehat I^*
(12.5)
Амплитудная нормировка: множитель 1/2 обязателен. Звёздочка означает комплексное сопряжение.

Порядок проверки результата

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

Пояснение программы

Запись 3+4j задаёт комплексное сопротивление; суффикс j обозначает мнимую единицу. Метод conjugate возвращает комплексно сопряжённый ток. Коэффициент 0,5 в формуле мощности относится к амплитудным значениям напряжения и тока. В отдельном примере np.linalg.solve решает систему двух линейных уравнений. Результат проверяют подстановкой в исходную систему: успешное выполнение команды само по себе не подтверждает правильность её составления.

Комплексная арифметика и сохранение фазы

Программа использует комплексные амплитуды с положительным временным показателем. Действительная и мнимая части несут информацию о фазе.

  1. Составьте комплексное сопротивление из активной и индуктивной частей. Делите комплексное напряжение на весь комплексный знаменатель.

  2. Модуль тока вычисляйте после деления. Отдельное деление действительных частей или модулей теряет фазовый угол и не решает уравнение цепи.

  3. Мощность проверяется сопряжением тока; для амплитуд обязателен множитель одной второй.

    P=\frac12R|\widehat I|^2,\qquad Q=\frac12\omega L|\widehat I|^2
    (12.6)
Таблица 12.7. Обозначения и единицы
ВеличинаФизический смыслЕдиница СИ
\widehat IКомплексная амплитуда токаА
\widehat UКомплексная амплитуда напряженияВ
ZКомплексное электрическое сопротивлениеОм
RАктивное электрическое сопротивлениеОм
PСредняя активная мощностьВт
QРеактивная мощностьвар

Границы применимости. Соглашение о времени определяет знак мнимой реактивности. Перевод единиц и нормировку выполняйте один раз на входе, а не скрыто внутри отдельных формул.

Пояснения к официальному руководству

Подробности, которые следует учитывать при настройке и проверке модели. Все учебные пояснения.

Формулы и таблицы руководства к этому занятию

MicroPython, поиск модулей и библиотечные ограничения

Встроенный интерпретатор FEMM 5 основан на MicroPython. Совпадение имени numpy или scipy с пакетом настольного Python не гарантирует совпадения всего API. Сценарий может использовать числовые и комплексные данные, строки %, str.format и f-строки; FEMM дополнительно разрешает форматировать комплексное число через %g, %e и %f.

Поиск пользовательского модуля начинается с текущего каталога, затем проходит python рядом с исполняемыми файлами и личный каталог FEMM/python. Рабочий каталог автоматически меняется при открытии сценария через интерфейс. Собственные модули храните в личном каталоге с неповторяющимися именами: каталог установки заменяется при обновлении. Переносимые дополнения для встроенного интерпретатора должны быть совместимым чистым Python; расширение CPython на C туда просто скопировать нельзя.

Выберите строку своей операционной системы и создайте личный каталог для собственных модулей. Это третье место в порядке поиска; путь рядом с установленной программой принадлежит поставке FEMM.

Таблица М.Н.1. Личные каталоги модулей Python
СистемаКаталог
Windows%APPDATA%/FEMM/python
macOS~/Library/Application Support/FEMM/python
Linux, FreeBSD~/.local/share/FEMM/python; при заданном XDG_DATA_HOME — $XDG_DATA_HOME/FEMM/python
  • Обратные косые черты Windows здесь заменены прямыми для переносимых строк Python. Личный каталог пользователь создаёт сам.
  • Общий порядок поиска: текущий рабочий каталог → python рядом с программой → личный python. Не храните свои модули в каталоге поставки: обновление заменяет его содержимое.

Случайные числа в начале работы получают начальное состояние по часам. При сравнении параметрических серий задавайте random.seed. Для времени различайте локальные localtime/mktime и UTC gmtime; time.time использует эпоху 1970 и дробные секунды. time.sleep оставляет интерфейс отзывчивым.

Регулярные выражения в актуальном перечне руководства включают split, findall, finditer, sub, subn, fullmatch и escape, но не поддерживают флаги re.IGNORECASE и подобные, просмотр вперёд/назад и именованные группы. datetime не содержит базы часовых поясов; применяйте фиксированное смещение и strftime. Формат даты внутри f-строки и локализованные названия месяцев/дней не гарантируются.

В PDF сохранены противоречивые старые абзацы: стр.92 описывает csv и re.split, а стр.94–95 отрицает их наличие. Проверка установленной сборки 16.10.2026 подтвердила csv.reader(["a,b"]) и re.split(",", "a,b"). Это малая проверка этих вызовов, а не полная проверка библиотек; для другой поставки сохраните собственный результат вместе с версией.

Таблица Р.39.1. MicroPython, поиск модулей и библиотечные ограничения
ПлатформаЛичный каталог модулей
Windows%APPDATA%/FEMM/python
macOS~/Library/Application Support/FEMM/python
Linux, FreeBSD~/.local/share/FEMM/python; при заданном XDG_DATA_HOME — $XDG_DATA_HOME/FEMM/python
Таблица Р.39.2. MicroPython, поиск модулей и библиотечные ограничения
Документированные группы модулейЧто проверять при использовании
numpy, scipy (ulab); math, cmathМассивы, линейная алгебра, действительная и комплексная математика
os, os.path, sys, time, datetimeПути, окружение сценария, время и ограничения календарных форматов
json, re, csvСериализация и синтаксис; учитывать отмеченное противоречие PDF
random, binascii, hashlib, base64Воспроизводимость seed, кодирование, SHA-256
glob, shutil, tempfileПоиск и операции с файлами; glob возвращает несортированный список
itertools, functools, operator, copyГруппировки, ключи сортировки, независимые копии параметров
contextlib, traceback, types, logging, textwrapКонтекстные менеджеры, диагностика и оформление сообщений
pathlib, stat, string, pprint, bisect, heapq, pickle, abc, inspect, argparseБиблиотечные подмножества; в string нет Template и Formatter
collections, struct, array, io, errno, gcКонтейнеры, двоичные структуры, потоки, ошибки и память
matplotlib, xlsxwriter, zipfile, pandasПеренаправляются во внешний CPython; требуют подходящего внешнего окружения

Проверьте на своей модели

  • Найдите личный каталог модулей на своей платформе и проверьте фактический os.getcwd().
  • Сравните два запуска случайной выборки с одинаковым seed.
  • Проверьте ровно тот режим csv/re, который нужен заданию; не переносите ограничения всей MicroPython-библиотеки на FEMM без проверки.

Источник: [33]. § 3.1 · § 3.2

Встроенные константы и безопасный пересчёт единиц

Предопределённые имена разрешены и в сценарии, и в числовых полях интерфейса, которые вычисляются Python. Их значение — числовой множитель, переводящий указанную единицу в СИ соответствующей величины. Это не система автоматического контроля размерностей: выражение с правильным синтаксисом может задавать физически неверную единицу аргумента.

Встроенные электромагнитные константы FEMM

\mu_0=4\pi\cdot10^{-7}\,\mathrm{H/m},\qquad\varepsilon_0=8.8541878188\cdot10^{-12}\,\mathrm{F/m}
(М.Н.16)
Это числовые значения предопределённых имён программы, которые можно вводить и в поля интерфейса. Они позволяют явно задавать размерные выражения.

Обозначения и единицы

  • uo, muo — имена \mu_0, Гн/м; eo — имя \varepsilon_0, Ф/м; pi, Pi, PI — безразмерное число \pi.

Условия применения. Используются внутренние константы рассматриваемой версии FEMM; точность измеренных свойств материала определяется отдельно.

Ненумерованное соотношение из текста руководства; обозначения и условия раскрыты для курса.

Особенно важно отделить длину в метрах от координат документа. mm равен 0.001 метра. При units="millimeters" координата узла 10 задаёт 10 мм, а 10mm передаст числовое значение 0.01 и задаст только 0.01 мм. Для геометрии в миллиметрах используйте x_{\mathrm{mm}}; для геометрии в метрах — x_{\mathrm{mm}}mm. Названия единиц в probdef и множители единиц в выражениях решают разные задачи.

Пример преобразования эрстедов

1000\,\mathrm{Oe}=1000\frac{1000}{4\pi}\,\mathrm{A/m}\approx79577.47\,\mathrm{A/m}
(М.Н.17)
Запись 1000*Oersted в поле напряжённости переводит исходное значение в А/м. Пересчёт единиц нужен до задания материала или сравнения с измерениями.

Обозначения и единицы

  • Oe — эрстед; H — напряжённость поля, А/м в системе СИ.

Условия применения. Имя единицы является числовым множителем в SI-нормировке ожидаемого поля.

Руководство приводит численное равенство 1000*Oersted = 79577.47; промежуточный коэффициент раскрыт для проверки.

Названия единиц допускают заглавную букву и множественное число; пример руководства — inch, inches, Inch, Inches. Для учебного сценария лучше выбрать одно стабильное написание. AWG(n) возвращает диаметр в миллиметрах; результат нужно перевести, если геометрия задана в другой единице.

Числа \mu _{0} и \varepsilon _{0} в таблице — именно значения предопределённых имён документации FEMM, а не заявление о метрологической точности фундаментальных констант. Не заменяйте числовые свойства магнитного материала этими константами: mu_x/mu_y задают относительную проницаемость.

Таблица Р.41.1. Встроенные константы и безопасный пересчёт единиц
ИменаМножитель / единица результата
pi, Pi, PI\pi
uo, muo4\pi \cdot 10^{-7} Гн/м
eo8,854·10⁻¹² Ф/м
meter, inch, cm, mm, um (micron), mil1; 0.0254; 0.01; 0.001; 10⁻⁶; 25.4·10⁻⁶ м
Tesla, mTesla, Gauss, kGauss1; 10⁻³; 10⁻⁴; 0.1 Тл
AmpMeter, kAmpMeter, Oersted, kOersted1; 1000; 1000/(4\pi ); 10^{6}/(4\pi ) А/м
AWG(n)Диаметр провода, мм

Проверьте на своей модели

  • Вычислите координату 10 мм для документов в millimeters и meters и сравните реальные размеры.
  • Пересчитайте 1000 Oersted в А/м и 1 kGauss в Тл.
  • Подпишите, в каких единицах возвращается AWG и вводится WireD.

Источник: [33]. § 3.4

Внешний CPython и граница передачи объектов

При импорте matplotlib, xlsxwriter, zipfile или pandas FEMM обращается к отдельному CPython-процессу на этой же машине. FEMM не устанавливает эти библиотеки автоматически. Для интерактивного графика руководство задаёт CPython не ниже 3.9, matplotlib и оконный backend; Tk достаточен, Qt через PyQt6/PySide6 необязателен. Без графического backend неграфические библиотеки моста могут работать.

Интерпретатор выбирается автоматически либо задаётся через Edit → Scripting Preferences и pybridge.set_interpreter; эта настройка сохраняется. FEMMQT_PYTHON задаёт выбор на один запуск. Ошибка BridgeError перечисляет проверенные интерпретаторы, поэтому устанавливать пакет нужно именно в выбранное окружение, а не в произвольный Python из PATH. pybridge.info позволяет включить версии и backend в описание условий построения рисунка.

Числа, строки, массивы и контейнеры этих значений могут передаваться по значению; сложные объекты остаются во внешнем процессе и доступны через proxy. put отправляет массив целиком, fetch возвращает значение в FEMM. DataFrame и его столбец могут оставаться удалёнными; для локального массива используется fetch(column.to_numpy()). Передача массива целиком обычно экономнее тысячи обращений к отдельным элементам.

Открытый файл принадлежит своему процессу: библиотеке внешнего CPython передайте путь либо файл, открытый через pybridge.open. Встроенную Python-функцию нельзя передать внешнему оптимизатору или обработчику графического события как callback. Определите функцию через pybridge.exec на внешней стороне либо оставьте управляющий цикл и вызовы FEMM во встроенном интерпретаторе.

Пространство eval/exec сохраняется между вызовами. restart/shutdown и отмена зависшего вызова клавишей Esc уничтожают внешний процесс и его рисунки; при следующем обращении он может стартовать заново, но прежние переменные и proxy нужно восстановить. Рисунки находятся в отдельных окнах и не встраиваются в окно FEMM. Одновременно допускается один вызов моста.

Таблица Р.47.1. Внешний CPython и граница передачи объектов
Вход в pybridgeНазначение
import_module(name)Получить удалённый модуль
eval(expr), exec(statements)Вычислить выражение или исполнить код во внешнем пространстве
put(name,value), fetch(obj)Передать по имени во внешний процесс / получить значение в FEMM
open(path,mode,...)Открыть файл во внешнем процессе; newline="" показан для CSV
set_interpreter(path), info()Выбрать CPython / прочитать сведения окружения
restart(), shutdown()Сбросить или завершить вспомогательный процесс и его окна

Проверьте на своей модели

  • Сохраните pybridge.info перед экспортом рисунка.
  • Передавайте данные таблицы через write_row/write_column или массив, а не вызовом на каждую ячейку.
  • Объясните, почему путь файла пересылается, а локальный FileIO или функция FEMM — нет.

Источник: [33]. § 4 · § 4.1 · § 4.4 · § 4.6

Какие NumPy и SciPy выполняют вычисления

import numpy и import scipy внутри FEMM выбирают локальную ulab-библиотеку. Это позволяет выполнять численную обработку без передачи каждого вектора между процессами. Руководство перечисляет комплексную линейную алгебру, FFT, полиномы, линейную интерполяцию, свёртку, trapz и ввод/вывод таблиц. Наличие отдельного имени в перечне не гарантирует весь набор аргументов соответствующего CPython API.

Более широкие методы вызываются явно через pybridge.import_module или exec. В пространстве pybridge.eval имя np означает уже внешний NumPy; одинаковая краткая переменная в двух пространствах не указывает на один объект. Сначала закончите локальный расчёт массива, затем передайте его для одной крупной внешней операции.

Когда один шаг оптимизации должен запустить FEMM, удобно оставить цикл во встроенном scipy.optimize.fmin/newton и вызывать решатель из локальной целевой функции. Внешний least_squares не сможет вызвать функцию, определённую внутри FEMM, через мост. Перенос функции во внешний процесс помогает лишь тогда, когда её вычисления могут происходить там без такого обратного вызова.

Таблица Р.48.1. Какие NumPy и SciPy выполняют вычисления
Документировано локальноДля расширенного варианта нужен внешний CPython
linalg: solve,inv,det,eig,qr,svd,pinv,cond,rank,cholesky,norm; комплексные матрицыПроверяйте совместимость сигнатур конкретного метода
polyfit/polyval; interpcurve_fit/least_squares и сплайны
fft, convolve; signal.sosfiltПроектирование фильтров, welch, periodogram
integrate.quad; optimize.bisect/newton/fminodeint, solve_ivp и другие дополнительные алгоритмы
Массивы и доступные элементарные операцииscipy.stats

Проверьте на своей модели

  • Для выбранного алгоритма отметьте процесс исполнения и число передач массивов.
  • Проверьте поддержку нужных аргументов локальной функции на малом массиве.
  • Не передавайте встроенную целевую функцию как callback внешнему SciPy.

Источник: [33]. § 4.5 · § 4.6

Разобранный численный пример

Вычисленный аналитический эталон

Дано. U_{\text{амп}} = 10 \,\text{В}; R = 3 \,\text{Ом}; \omega L = 4 \,\text{Ом}. Все комплексные величины амплитудные.

  1. Z = 3 + j4 \,\text{Ом}; |Z| = 5 \,\text{Ом}.

    \widehat I=\frac{10}{3+j4}=1{,}2-j1{,}6\ \text{А},\quad S=\frac{10(1{,}2+j1{,}6)}2=6+j8\ \text{В}\cdot\text{А}
    (12.7)
  2. I = 10 / (3 + j4) = 1{,}2 - j1{,}6 А; |I| = 2 \,\text{А}; I_{\text{д}} = 1{,}4142 \,\text{А}.

  3. S = 10 \cdot (1{,}2 + j1{,}6) / 2 = 6 + j8 \,\text{В}\cdot \text{А}.

Ответ: P = 6 \,\text{Вт}; Q = 8 \,\text{вар}; |S| = 10 \,\text{В}\cdot \text{А}; \cos \varphi = 0{,}6.

Проверка: P = I_{\text{д}}^2R = 2 \cdot 3 = 6 \,\text{Вт}; это независимая проверка нормировки.

Практикум в FEMM 5

Комплексная мощность без внешних библиотек

Таблица 12.8. Исходные данные практикума
Исходная величинаЗначениеЕдиница
Амплитуда напряжения10В
Сопротивление3Ом
Реактивное сопротивление4Ом
  1. Вычислите эталон сначала встроенными complex и cmath, не используя полевую модель.
  2. Подключите numpy, решите систему из двух уравнений и подставьте найденные значения в исходные уравнения.
  3. Проверьте доступность нужной функции маленьким вызовом. Сохраните номер сборки FEMM рядом с таблицей.
  4. В ранее рассчитанной линейной катушке при гармоническом возбуждении прочитайте амплитудные U и I; сформируйте P и Q по той же формуле.
  5. Повторите вычисление через действующие значения без множителя 1/2 и сравните результат.
  6. Около нулевого тока не вычисляйте Z делением U/I: задайте отдельный порог и сообщите, что отношение не определено.

Ожидаемый результат. Комплексная арифметика и две нормировки мощности дают одинаковый физический результат.

Как проверить. Остаток линейной системы близок к машинной точности; P в пассивном сопротивлении неотрицательна.

Обработка и анализ результатов

Согласуются ли комплексная мощность и принятая нормировка?

  1. Сохраните комплексные напряжение, ток и вычисленные активную и реактивную мощности.
  2. Проверьте действительную и мнимую части отдельно, затем фазу и мощность; явно сохраните амплитудную либо действующую нормировку.

С чем сравнить. Опора — комплексные уравнения и определение средней мощности из занятия. Не смешивайте амплитудные и действующие значения и не заменяйте комплексную невязку одной разностью модулей.

Итог работы. Расчёт с проверкой сопряжения, фазы и амплитудной нормировки.

Программа с русскими пояснениями: Комплексная мощность и малая система · Порядок запуска

Комплексная мощность и малая система

Комплексные вычисления встроенными функциями FEMM 5.

Python · встроенный MicroPython FEMM 5
"""Комплексная мощность и малая система.

Среда: встроенный MicroPython FEMM 5.
Аналитический учебный пример; полевой решатель не вызывается.
Параметры, единицы величин и порядок вывода пояснены по стадиям.
"""

import numpy as np

# Комплексные напряжение и ток заданы амплитудными значениями.
# Мнимая единица в Python обозначается суффиксом j; сопротивление задано в омах.
voltage = 10 + 0j
impedance = 3 + 4j
current = voltage / impedance
# Множитель 1/2 относится к амплитудным значениям.
# Сопряжение тока необходимо для вычисления комплексной мощности.
power = 0.5 * voltage * current.conjugate()
# Порядок вывода: ток, А; активная мощность, Вт; реактивная мощность, вар.
print(current, power.real, power.imag)
# Отдельный численный эталон: коэффициенты двух линейных уравнений.
# Эта матрица не является полевой моделью катушки.
matrix = np.array([[2.0, 1.0], [1.0, 3.0]])
rhs = np.array([5.0, 7.0])
# Решаем систему с заданной правой частью; проверка выполняется обратной подстановкой.
print(np.linalg.solve(matrix, rhs))

Пошаговая настройка расчётного примера

Откройте отдельную страницу с последовательными действиями, точными параметрами, накопительными файлами этапов и программами с русскими комментариями.

Все расчётные примеры курса

Расчётный образец FEMM 5

Откройте модель, воспроизведите указанный режим и сопоставьте свои измерения с таблицей результатов.

Таблица 12.9. Результаты расчётного образца
ВеличинаРезультатЕдиница
Частота0Гц
Ток цепи Катушка1А
Потокосцепление цепи Катушка95,85 × 10⁻⁶Вб
Энергия поля47,92 × 10⁻⁶Дж
Модуль B в контрольной точке608,5 × 10⁻⁶Тл
Координаты контрольной точки (r, z)0,001; 0мм
Визуализация численных данных FEMM 5: Воздушная катушка. Это экспорт результатов поля, а не снимок окна программы.
Рисунок 12.12. Визуализация численных данных FEMM 5: Воздушная катушка. Это экспорт результатов поля, а не снимок окна программы.

Осесимметричная учебная модель. Независимо проверены изменения сетки и внешнего радиуса; аналитическая модель тонкостенного соленоида служит отдельным приближённым ориентиром.

Ориентиры в интерфейсе
Версия FEMM 5 и дата сборки: окно «О программе».
Рисунок 12.13. Версия FEMM 5 и дата сборки: окно «О программе». Открыть в полном размере
Поле воздушной катушки: осесимметричный магнитостатический эталон FEMM 5.
Рисунок 12.14. Поле воздушной катушки: осесимметричный магнитостатический эталон FEMM 5. Открыть в полном размере
Встроенная Python-консоль FEMM 5: решение малой системы и БПФ внутри приложения.
Рисунок 12.15. Встроенная Python-консоль FEMM 5: решение малой системы и БПФ внутри приложения. Открыть в полном размере
Встроенная консоль FEMM: Комплексные числа и численные вычисления во встроенном Python. Аналитическая проверка программы занятия. Показана консоль исходной редакции программы, зафиксированной при съёмке. Текущая программа с русскими пояснениями проверена отдельно во встроенном Python FEMM; этот снимок не является новым запуском текущей редакции.
Рисунок 12.16. Встроенная консоль FEMM: Комплексные числа и численные вычисления во встроенном Python. Аналитическая проверка программы занятия. Показана консоль исходной редакции программы, зафиксированной при съёмке. Текущая программа с русскими пояснениями проверена отдельно во встроенном Python FEMM; этот снимок не является новым запуском текущей редакции. Открыть в полном размере

Самостоятельная работа

Решите систему \begin{pmatrix}2&1\\1&3\end{pmatrix}x=\begin{pmatrix}5\\7\end{pmatrix} встроенным numpy.linalg.solve и вручную; затем замените вторую правую часть на 7 + j.

Критерий выполнения: Вещественный эталон x=\begin{pmatrix}1{,}6\\1{,}8\end{pmatrix}; комплексный эталон удовлетворяет обоим уравнениям; единицы мощности согласованы.
Первоисточники и дополнительное чтение по занятию
  1. [33] — 90–94, 160–164
  2. [81] — Раздел Packages · Локальная копия
Пояснения и типичные ошибки
Нужно ли импортировать внешний pyFEMM?

Нет. Рассматривается встроенный Python FEMM 5; команды уже доступны внутри приложения.

Почему P = U_{\text{амп}} I_{\text{амп}} \cos \varphi неверно?

Для комплексных амплитуд средней мощности нужен множитель 1/2; без него результат завышен вдвое.

На что обратить внимание

  • Существование scipy в списке пакетов не означает наличия любого оптимизатора или интегратора.
  • Гармонический ток и мгновенный ток нельзя подставлять в одну формулу без преобразования нормировки.