Гауссова функция определяется числами lambda,beta,gamma по формуле:
gauss = lambda*exp(-(beta^2)*(X-gamma)^2)
.Функция была создана с помощью скрипта compile-func.py суммой гауссовых функций, где первые позиции задают параметры высот колокола (высота зависит от числа электронов в атоме), вторые позции - ширина колоколов (порядка 1), третьи позиции - точки, в которых функции имееют максимумы.
По условию, молекулы состоят из разных атомов, что влечет за собой разницу в максимальных значениях их ЭП.
C помощью скрипта compile-func.py была задана функция со следующими параметрами:
Был визуализирован суммарный график гауссовых функций, представленный на рисунке 1.
![]() |
С помощью скрипта func2fourier.py рассчитываются коэффициенты Фурье
(на вход подается результат работы compile-func.py).
В результате был получен файл, содержащий 499 гармоник.
Команда:python func2fourier.py -i func.txt -o func_ft.txt
Для определения минимального числа гармоник, необходимых для отличного восстановления исходной функции ЭП,
использовался скрипт fourier-filter.py.
Команда: python fourier-filter.py -i func_ft.txt -r 0-5 -o func_ft_filtered_0-5.txt
Для последующей визуализации восстановленной функции по отобранным гармоникам использовался скрипт fourier2func.py
В таблице 1 приведены результаты для разного количества выбранных полных наборов гармоник без шума.
Таблица 1. Результаты восстановления ЭП для разного количества выбранных полных наборов гармоник (0-5 и т.д.)
|
На 55 гармониках функция плотности атома водорода была восстановлена с хорошим качеством.
На 45-50 гармониках функция плотности атома водорода приобретает характерный сигнал, но для уточнения функции необходима дополнительная информация.
Видно, что для полного восстановления функции нужно примерно 60 гармоник.
Следующим шагом было добавление шума к амплитудам (параметр -F) и фазам (параметр -P) с помощью скрипта func2fourier.py.
Отбирались первые 55 гармоник.
Это является лучшим приближением, когда удается получить лишь какой-то набор гармоник.
Результаты представлены в таблице 2.
Таблица 2. Результаты восстановления ЭП для разного количества выбранных полных наборов гармоник (0-5 и т.д.) с добавлением амплитудных и фазовых шумов.
|
При добавлении шума самые значительные изменения вызвал фазовый шум.
При значениях шума 50-70% можно потерять информацию о средних по размеру атомах,
взятых для симуляции.
При 70% амплитудного шума теряется информация о положении атома водорода у второй молекулы.
При комбинации самым "страшным" был вариант с комбинацией 20% амплитудного шума и 70% фазового шума. Мы потеряли почти все атомы.
Чтобы получить информацию об устойчивости восстановленной функции в зависимости от набра гармоник, было решено использовать следующие наборы гармоник:
Для моделирования был использован набор гармоник из предыдущего эксперимента, который видоизменялся в соответствии с указанными правилами. Результаты представлены в таблице 3.
Таблица 3. Результаты восстановления ЭП для неполного набора гармоник
|
Исходя из наблюдений можно сделать вывод, что разные гармоники вносят различный вклад.
Первые гармоники задают общее положение функции: при их удалении функция начинает опускаться и приобретать побочные синусоидальные колебания.
Гармоник из центра задают амплитуду высоты пиков и амплитуду функции. При удалении этих гармоник наблюдается общее снижение высот пиков и возникновение частых
колебаний, приводящих к невозможности идентифицировать средние и малые атомы.
Интересно, что при добавлении гармоники №65 наблюдается ухудшение показателей функции по сравнению с набором 0-55. Думаю, это связано с переоцениванием веса этой гармоники.
Когда мы делаем синтез Фурье, каждая последующая гармоника поправляет предыдущие и уточняет общий результат. Но если убрать промежуточные поправки, то
гармоника №65 может привнести не вполне адекватную информацию.
Я попробовал добавить больше гармоник с большими номерами (65-69), но это не помогло. Видимо, предыдущие гармоники более важны.
![]() |