Репозиторий содержит код на Matlab и Python, написанный в ходе работы над выпускной квалификационной работы на тему "Восстановление дифференциальных уравнений, описывающих распространение излучения в сильно неоднородных рассеивающих средах, методами искусственного интеллекта" на физическом факультете Университета ИТМО.
Поиск одномерных дифференциальных уравнений, описывающих распространение излучения в сильно неоднородной рассеивающей среде на основании строгих численных решений уравнений Максвелла с использованием методов искусственного интеллекта
Изучение распространения и рассеяния электромагнитных волн в сильно неоднородных рассеивающих средах находит свое применение в различных областях физики, где возникает задача определения состава среды на основании светорассеяния/спектроскопии и некоторых предположений о составе среды. Например, в биофизике для неинвазивной диагностики биологических тканей в инфракрасном и видимом диапазонах. В науках о Земле часто приходится работать с шероховатыми рассеивающими поверхностями, такими как почва, поверхность океанов, снежный покров и растительность, для чего применяются различные методы моделирования рассеяния света.
Существует два основных подхода к моделированию распространения электромагнитного излучения в неоднородных средах. Первый основан на точном численном решении уравнений Максвелла, второй - на использовании теории переноса излучения. Однако существующие методы имеют ряд существенных недостатков. Численные методы решения уравнений Максвелла в случае достаточно большого количества рассеивающих частиц требуют слишком большого количества вычислений. Методы, основанные на теории переноса излучения, могут быть применены только в случае достаточно низкой плотности упаковки рассеивающих частиц. Поэтому необходимы исследования более простых аппроксимаций сложной модели распространения излучения в неоднородной среде с достаточной плотной упаковкой рассеивающих частиц.
Для моделирования двумерной неоднородной среды использовалась модель суперячейки с периодом 
Для сбора данных необходимо было получить численные решения уравнений Максвелла внутри неоднородной подложки. Для этого подложка "разрезалась" на тонкие слои, как это показано на рисунке ниже
На каждом таком слое возникала задача дифракции, для решения которой в рамках модели суперячейки может быть использован Фурье-модальный метод
Применяя Фурье-модальный метод на каждом тонком слое, можно рассчитать разложение поля в ряд Фурье на произвольном расстоянии от верхней границы подложки. В качестве данных, описывающих распространение энергии в неоднородной среде, использовалось значение нулевой гармоники Фурье проекции вектора Пойнтинга на вертикальную ось.
Моделирование среды и сбор данных производился с помощью языка программирования Matlab, так как существует реализация Фурье-модального метода на этом языке программирования.
В результате численных экспериментов в качестве данных были получены значения исследуемой фунции, но не значения ее производной. К имеющимся данным необходимо было применить методы численного дифференцирования. Полученные данные предварительно сглаживались с помощью гауссова ядра. Для вычисления производных по данным формировался многочлен Чебышева, который впоследствии дифференцировался для нахождения значений производных. Также производилась перенормировка значений сетки, чтобы они находились внутри отрезка
Для восстановления дифференциальных уравнений, описывающих исследуемый процесс, на основе данных использовался алгоритм, объединяющий генетический алгоритм и LASSO-регрессию. Генетический алгоритм использовался для определения оптимального набора слагаемых в уравнении, а LASSO-регрессия для вычисления промежуточных значений коэффициентов и определения значимых из них. К полученной в результате работы алгоритма популяции уравнений применялась линейная регрессия для окончательного вычисления коэффициентов в уравнении. Описанный алгоритм реализован в библиотеке EPDE для языка программирования Python.
В проекте предусмотрена возможность численного решения дифференциальных уравнений. Для получения решений использовались методы классического машинного обучения: искомая функция аппроксимировалась параметризованной моделью, затем решалась задача минимизации ошибки по набору параметров модели. Используемый алгоритм реализован в библиотеке TEDEouS для языка программирования Python. Преимуществом использования данной библиотеки является совместимость с фреймворком EPDE, с помощью которого восстанавливались уравнения.
В работе исследовалась двумерная подложка коненчной толщины с диэлектрическими включениями с одинаковыми значениями радиусов и диэлектрических проницаемостей, имеющая периодичность вдоль горизонтальной оси
Падающее на исследуемую структуру поле представляло собой TE-поляризованную плоскую монохроматическую волну, длина волны которой составляла
Уравнение, восстановленное по данным, для значения радиуса
Уравнение имеет граничное условие
