На главную


Гармоники Фурье

1. Задание функции

Модель компьютерного эксперимента представляет собой отрезок [0,30] ангстрем. 2 молекулы (3+1 атомов). Атомы в молекуле связаны ковалентной связью, расположены на расстоянии 1,5 ангстрема. Между молекулами расстояние 5 ангстрем. Электронные плотности атомов описываются гауссовой кривой, т.ч. максимум ЭП в центре атома приблизительно пропорционален числу электронов в атоме.
Все скрипты, используемые в данном задании лежат в этой папке.
С помощью скрипта compile-func.py была создана функция:
python compile-func.py -g 41,3.2,14.5+21,3.7,17.5+31.0,3.2,20+10,2,10
получен файл func.txt с координатами точек. На рисунке ниже представлено изображение смоделированной функции:

На следующем шаге были рассчитаны амплитуды и фазы сигналов по созданной функции электронной плотности. Для разложение гауссовской функции в ряд Фурье был использован скрипт func2fourier.py.
python func2fourier.py func.txt
В результате был получен файл func_ft.txt, содержащий 498 гармоник.
На следующем шаге был смоделирован этап восстановления функции ЭП по набору гармоник. Для этого были взяты первые 10,20,30,40,50 гармоник и для каждой восстановлена исходная ЭП. Перебор осуществлялся с помощью скрипта на языке bash. Восстановленные функции в данной папке. Результаты восстановления приведены ниже. Пунктиром обозначены восстановленная функция, сплошной линией - исходная. Видно, что начиная с 30-ой гармоники восставновление пиков происходит довольно точно, и шум остается только между пиками. Таким образом, можно заключить, что гармоники высоких порядков определяют шум между пиками.

Такого рода симуляция соответсвует иделаьным результатам эксперимента, когда все гармоники померяны правильно. На практике измерение всегда сопровождается какой-либо ошибкой. Чтобы симулировать реальные экспериментальные данные к амплитудам и фазам был добавлен искусственный шум 25% (python func2fourier.py func.txt -F 25 -P 25). Полученные результаты приведены в <а href='с шумом/'>папке, визуализация представлена ниже. Видно, что шум, вносимый в фазу, сильнее отражается на качестве восстановления, чем шум, вносимый в амплитуды.

Последним этапом "экспериметов" стало восстановление функици по неполным наборам гармоник. С помощью скрипта на языке bash был осуществлен перебор наборов из 10-ти гаромоник. Результаты приведены в <а href='шаги гармоник/'>папке, визуализация представлена ниже. Из полученных данных можно сделать вывод, что первые гармоники наиболе важны для правильного восстановления функции. Видно, что по перым и по вторым 10-ти гармоникам в общем и целом можно восстановить положение атомов, хотя их амплитуда сильно искажена. Дальше же восстановение не представляется возможным: много низкоамплитудных пиков, неотличимых от среднего шума.

Результаты по качеству восстановления функции ЭП из различных рассмотренных наборов гармоник приведены в таблице. Для сравнения восстановленной функции с исходной использовались следующие "критерии качества":
Отличное восстановление — по графику восстановленной функции можно определить положение максимума всех гауссовых слагаемых функции ("атомов");
Хорошее восстановление — можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума;
Среднее восстановление — положение каких-то атомов определить по восстановленной функции нельзя, других - можно;
Плохое восстановление — положение атомов определить не представляется возможным; можно только предсказать примерный размер "молекулы".
Полнота набора гармоник определяется как % гармоник (k штук) от полного числа гармоник (от 0 до n-й), разрешение - как длина отрезка/номер последней гармоники.