import numpy as np
import matplotlib.pyplot as plt
run compilefunc.py -g 19,3,5+3,3.5,6+8,3,10+6,3,11.2+8,3.4,12.2
Электронная плотность, которую я смоделировала, иммитирует две молекулы, состоящие из 2х и 3х атомов. Функция задается тремя характеризующими ее числами. Максимумы в точках 5, 6, 10, 11.2,12.2 высота 19, 3, 8, 6, 8; третий задает ширину гауссиана.
Графики восстановленной функции.
Отличное восстановление – по графику восстановленной функции можно определить положение максимума всех гауссовых слагаемых функции ("атомов")
Хорошее восстановление – можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума
Среднее восстановление – положение каких-то атомов определить по восстановленной функции нельзя, других - можно
Плохое восстановление – положение атомов определить не представляется возможным; можно только предсказать примерный размер "молекулы"
run func2fourier.py -i func.txt -o out.txt
run fourier-filter.py -i out.txt -r 0-5 -o third.txt
run fourier2func.py -f func.txt -i third.txt -o fourth.txt
На рисунке функция, восстановленная по гармоникам 0-5. Такое количество гармоник позволяет детектировать центры двух молекул по пикам. Однако я привела эту функцию как пример плохого восстановления, потому что как-либо охарактеризовать молекулы еще нельзя.
run fourier-filter.py -i out.txt -r 0-12 -o fifth.txt
run fourier2func.py -f func.txt -i fifth.txt -o sixt.txt
На рисунке синтез 12 гармоник. Можно заметить, что пик молекулы из трех атомов раздвоился. Самый высокий пик первой молекулы стал более ярко выраженным. Это восстановление я охарактеризовала как среднее.
run fourier-filter.py -i out.txt -r 0-25 -o seventh.txt
run fourier2func.py -f func.txt -i seventh.txt -o eightth.txt
Примерно начиная с 24 гармоники положения всех максимумов можно определить, зная число атомов. Однако (особенно маленькие пики) не сильно отличны от шума. Пример хорошего восстановления.
run fourier-filter.py -i out.txt -r 0-33 -o nineth.txt
run fourier2func.py -f func.txt -i nineth.txt -o tenth.txt
Отличное восстановление по 0-33 гармоникам. Четко видны пики, шум практически отсутствует.Функция практически полностью совпадает с исходной электронной плотностью.
Добавление шума
run func2fourier.py -i func.txt -o ten.txt -F 40
run fourier-filter.py -i ten.txt -r 0-33 -o twelve.txt
run fourier2func.py -f func.txt -i twelve.txt -o thirteen.txt
В данном задании необходимо добавить шум к амплитудам и фазам. Я выбрала восстановление по полному набору гармоник на интервале 0-33. Первый рисунок иллюстрирует добавление шума к амплитуде (40%). По выбранному в практикуме критерию, хорошее восстановление – когда можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума. Пики изменили свою высоту и определить атом по ним стало сложнее. Атомы второй молекулы стало труднее отличить. Такое восстановление я охарактеризовываю как хорошее. Если бы мы не знали число атомов, тогда можно было бы принять пики за что-то важное и добавить пару несуществующих атомов. В таком случае хорошим восстановление назвать нельзя было бы. При подходе, когда мы знаем количество слагаемых - можно.
run func2fourier.py -i func.txt -o fourteen.txt -P 40
run fourier-filter.py -i fourteen.txt -r 0-33 -o fifteen.txt
run fourier2func.py -f func.txt -i fifteen.txt -o sixteen.txt
Добавленее шума к фазе (40%) выдало модель немного хуже предыдущей. Пики третей молекулы непропорциональны, хотя об их положении можно говорить наверняка. Атом с маленьким числом электронов неотличим от шума, и его положение определить труднее. Такое восстановленее ближе к среднему.
run func2fourier.py -i func.txt -o seventeen.txt -P 40 -F 40
run fourier-filter.py -i seventeen.txt -r 0-33 -o eighteen.txt
run fourier2func.py -f func.txt -i eighteen.txt -o nineteen.txt
Шум в 30% по обоим параметрам на рисунке. Глядя на пики нельзя сказать однозначно, что за атом мы видим без знания о молекулах. Некоторые пики неотличимы от шума. Ярко выражен только пик с наибольшим количством электронов. Восстановление все же не плохое, а среднее. Логично, что такое зашумление по двум параметрам сделало картинку хуже.
Я могу сделать вывод, что в моем случае более чувствительны к шуму фазы. Восстановление при добавлении шума к фазам получилось хуже, что соответствует и более низкой оценке по выбранному критерию.
Неполные наборы гармоник.
run fourier-filter.py -i out.txt -r 2-33 -o twenty.txt
run fourier2func.py -f func.txt -i twenty.txt -o thirty.txt
Удаление двух первых гармоник привело к изменениям, невлияющим на определение положения атомов и в целом не испортило картинку исследователя.
run fourier-filter.py -i out.txt -r 0-16,19-20,21-33 -o fourty.txt
run fourier2func.py -f func.txt -i fourty.txt -o fifity.txt
Пропуск 3 гармоник также несильно отразился на восприятии молекул. Восстановление можно даже считать отличным. Наверное, сильнее всего отсутствие гармоник сказалось на теоретическом атоме с малым количеством электронов.
run fourier-filter.py -i out.txt -r 0-33,43 -o sixty.txt
run fourier2func.py -f func.txt -i sixty.txt -o seventy.txt
Добаление гармоники высоко ранга не повлияло на ркачество восстановления электронной плотности.