import numpy as np
import matplotlib
run compile-func.py -g 2,3,1.5+40,3,2.7+2,3,4+30,3.1,9+25,3,10.1+2,3.1,11.3
File func.txt created
Выше приведён график сгенерированной функции электронной плотности 2-ух молекул, которые состоят из 3 атомов.
run func2fourier.py func.txt -o noshum.txt
..Done
После расчёта амплитуд и фаз, моделирующих экспериментальные данные, проводилось восстановление функции ЭП по полному набору гармоник (0-разные n). Графики, восстановленных функци приведены ниже. (В таблице на странице практикума приведены параметры восстановленных функций)
run fourier-filter.py -i noshum.txt -r 0-40 -o one.txt
..Done
run fourier-filter.py -i noshum.txt -r 0-25 -o two.txt
..Done
run fourier-filter.py -i noshum.txt -r 0-15 -o three.txt
..Done
run fourier-filter.py -i noshum.txt -r 0-5 -o four.txt
..Done
При использовании гармоник 0-40 качество восстановления было отличное.График восстановленной и исходной функций приведён ниже. Можно видеть, что графики практически совпадают.
run fourier2func.py -i one.txt
File two_func.txt with function and its recovering is created
Гармоники 0-25
run fourier2func.py -i two.txt
File two_func.txt with function and its recovering is created
Гармоники 0-15
run fourier2func.py -i three.txt
File two_func.txt with function and its recovering is created
Гармоники 0-5
run fourier2func.py -i four.txt
File two_func.txt with function and its recovering is created
Таким образом, при увеличении размера полного набора гармоник увеличивается качество восстановления функции ЭП. Для данной смоделированной функции ЭП номер гармоники, начиная с которой полный набор гармоник обеспечивает отличное восстановление функции, равно 40.
Далее были расчитаны амплитуды и фазы сигналов с добавлением гауссового шума. (21% в ампитуды и 17% шума в фазы). И аналогично предыдущему пунку восстанавливались функции ЭП.
run func2fourier.py func.txt -o shum.txt -F 21 -P -17
..Done
run fourier-filter.py -i shum.txt -r 0-40 -o oneshum.txt
..Done
run fourier-filter.py -i shum.txt -r 0-25 -o twoshum.txt
..Done
run fourier-filter.py -i shum.txt -r 0-5 -o threeshum.txt
..Done
После добавления шума качество восстановления функций ухудшилось.(графики для разных наборов гармоник приведены ниже) Так для полного набора гармоник с n=40 восстановление теперь можно определить как хорошее, а не отличное. При этом с точки зрения сложности интерпретации полученный ЭП нивелировалось различие между полным набором 0-40 и 0-25.
Гармоники 0-40
run fourier2func.py -i oneshum.txt
File two_func.txt with function and its recovering is created
Гармоники 0-25
run fourier2func.py -i twoshum.txt
File two_func.txt with function and its recovering is created
Гармоники 0-5
run fourier2func.py -i threeshum.txt
File two_func.txt with function and its recovering is created
В этой части функция ЭП восстанавливалась по разным наборам неполных гармоник (амплитуды и фазы без шума). Ниже приведены графики восстановленных функций. Удаление 0-вой гармоники в наборе '1-40' не ухудшает качество восстановления. Тем временем в наборе '5-40' и '2-25' качество ухудшается до среднего. При удалении 10% гармоник из набора качество восстановления среднее, при этом кажется, что если удалять гармоники не подряд, а из разных частей набора, то качество восстановления будет лучше. При добавлении гармоники с номером, превышающим n_0 на 10, нет заметных для глаза улучшений в качестве. Это логично, поскольку чем больше номер гармоники (здесь добавлялась 50-ая гармоника), тем меньше уточнение модели.
run fourier-filter.py -i noshum.txt -r 1-40 -o nepoln1.txt
..Done
Гармоники 1-40
run fourier2func.py -i nepoln1.txt
File two_func.txt with function and its recovering is created
run fourier-filter.py -i noshum.txt -r 5-40 -o nepoln2.txt
..Done
Гармоники 5-40
run fourier2func.py -i nepoln2.txt
File two_func.txt with function and its recovering is created
run fourier-filter.py -i noshum.txt -r 2-25 -o nepoln3.txt
..Done
Гармоники 2-25
run fourier2func.py -i nepoln3.txt
File two_func.txt with function and its recovering is created
run fourier-filter.py -i noshum.txt -r 0-17,26-40 -o nepoln4.txt
..Done
Гармоники 0-17,26-40
run fourier2func.py -i nepoln4.txt
File two_func.txt with function and its recovering is created
run fourier-filter.py -i noshum.txt -r 0-7,10-24,32-40 -o nepoln5.txt
..Done
Гармоники 0-7,10-24,32-40
run fourier2func.py -i nepoln5.txt
File two_func.txt with function and its recovering is created
run fourier-filter.py -i noshum.txt -r 0-40,50 -o nepoln6.txt
..Done
Гармоники 0-40,50
run fourier2func.py -i nepoln6.txt
File two_func.txt with function and its recovering is created