Восстановление функции по коэффициентам её ряда Фурье.Задание функцииМодель для компьютерного эксперимента: шесть атомов расположены на расстоянии около 5 Å на отрезке [0, 30]. Электронные плотности атомов описываются гауссовой кривой. Функция электронной плотности атомов на этом отрезке была задана с помощью скрипта compile-func.py python compile-func.py -g 5,2,5+17,2,8+30.0,2,12+20.0,2,17+7.0,2,23+30,2,27Выходной файл скрипта - текстовый файл func.txt, в котором описана заданная функция. С помощью скрипта было получено изображение заданной функции (рисунок 1).
Полные наборы гармоникРасчет коэффициентов ФурьеКоэффициенты разложения заданной функции в ряд Фурье были получены с помощью скрипта func2fourier.py. python func2fourier.py -i func.txtВыходной файл func_ft.txt содержит номера, амплитуды и фазы гармоник. Отбор гармоник и восстановление функцийВсего было получено 499 гармоник. Необходимо найти n0, для которого по графику функции, восстановленной по набору гармоник 0, 1, ..., n0 можно определить положение максимумов всех гауссовых слагаемых («отличное восстановление»). python fourier-filter.py -r 0-* -i func_ft.txt -o func_ft_0-*.txt python fourier2func.py -f func.txt -i func_ft_0-*.txt -o two_func_0-*.txtНа рисунках 2-10 представлены графики восстановленных функций по полным наборам гармоник для различных n (крупные картинки доступны по щелчку, пунктирной линией указана восстановленная функция, сплошной - исходная). Добавление шумаДалее к амплитудам и фазам был добавлен шум (0, 10 или 20%) при n0=25: python func2fourier.py -F * -P * -i func.txt -o ft_noise*-*.txt python fourier-filter.py -r 0-25 -i ft_noise*-*.txt -o ft_noise*-*_n0.txt python fourier2func.py -i ft_noise*-*_n0.txt -o two_func_noise*-*_n0.txtНа рисунках 11-18 представлены полученные графики (крупные картинки доступны по щелчку, пунктирной линией указана восстановленная функция, сплошной - исходная). Неполные наборы гармоникУдаление начальных гармоникДля получения неполного набора гармоник было удалено несколько начальных гармоник: python fourier-filter.py -r *-35 -i func_ft.txt -o ft_*-35.txt python fourier2func.py -i ft_*-35.txt -o two_func_*-35.txtПолученные графики функций представлены на рисунках 19-24 (крупные картинки доступны по щелчку, пунктирной линией указана восстановленная функция, сплошной - исходная). Удаление гармоник из середины набораДалее проводилось удаление гармоник из середины набора: python fourier-filter.py -r 0-*,*-25 -i func_ft.txt -o ft_0-*_*-25.txt python fourier2func.py -i ft_0-*_*-25.txt -o two_func_0-*_*-35.txtПолученные графики функций представлены на рисунках 25, 26 (крупные картинки доступны по щелчку, пунктирной линией указана восстановленная функция, сплошной - исходная). Добавление гармоники n0+10К набору гармоник 0, 1, ..., 25 была добавлена гармоника 35: python fourier-filter.py -r 0-25,35 -i func_ft.txt -o ft_0-25_35.txt python fourier2func.py -i ft_0-25_35.txt -o two_func_0-25_35.txtДобавление гармоники с номером n0+10 к набору гармоник 0, 1, ..., n0, не изменила качество восстановления:
Определение разрешения и полноты данныхДля полного набора гармоник разрешение - период гармоники с наибольшим номером. Для набора гармоник 0-25 разрешение равно 30 Å/25 = 1.2 Å. Полнота данных - это процент гармоник в наборе, период которых не меньше разрешения, от числа гармоник в полном наборе для этого разрешения. Для полного набора полнота данных равна 100%.
© Наталья Ланина e-mail: n.lanina@fbb.msu.ru последний раз обновлялось: 4.3.15 |
|