Разложение функции в ряд Фурье


Создание функции электронной плотности

Все скрипты были запущены из-под Python 3.5.2 через Jupyter


Функция была смоделирована следующей командой: %run -i 'compile-func.py' -g 10,2,5+10,2,7+30.0,2,12+30.0,2,16+30.0,2,22+30,2,24

Рис.1 Смоделированная функция c максимумами в точках 5, 7, 12, 16, 22, 24 и высотой пиков 10, 10, 30, 30, 30, 30

Расчет амплитуд и фаз сигналов, моделирующих экспериментальные данные.

Функция разложена в ряд Фурье следующей командой: %run -i 'func2fourier.py' -i func.txt -o garm.txt

Был получен файл с гармониками

Восстановление функции ЭП по амплитудам и фазам части сигналов

Восстановление функции по всем возможным гармоникам: %run -i 'fourier2func.py' -f func.txt -i garm.txt

Рис.2 Функция, восстановленная по всем гармоникам

Функция восстановлена отлично. Попробуем восстановить функция по 1, 10, 20, 30 и 40 гармоникам

%run -i 'fourier-filter.py' -r 0-X -i garm.txt -o garm_X.txt (где X - число гармоник)
%run -i 'fourier2func.py' -f func.txt -i garm_X.txt -o garm_fileX.txt

Рис.3 Функия восстановлена по 1 гармонике (пунктиром)

Рис.4 Функия восстановлена по 10 гармоникам (пунктиром)

Рис.5 Функия восстановлена по 20 гармоникам (пунктиром)

Рис.6 Функия восстановлена по 30 гармоникам (пунктиром)

Рис.7 Функия восстановлена по 40 гармоникам (пунктиром)

Уже по 30 гармоникам функция восстанавливается хорошо, а по 40 -иделаьно

Далее посмотри, как влияют на общую каритну шумы в 10% по амплитуде, фазе и им обоим

%run -i 'func2fourier.py' -F X -P X -i func.txt -o *file1*.txt (где X - уровень шумов по амплитуде, Y - уровень шумов по фазе)
%run -i 'fourier-filter.py' -r 0-40 -i *file1*.txt -o *file2*.txt
%run -i 'fourier2func.py' -f func.txt -i *file2*.txt -o *file3*.txt

Рис.8 Функция с 10% зашумлением по амплитуде

Рис.9 Функция с 10% зашумлением по фазе

Рис.10 Функция с 10% зашумлением по амплитуде и фазе

Зашумление по амплитуде меньше влияет на функцию, чем зашумление по фазе и им обоим.

Далее посмотрим, как функция восстанавливается без 5 гармоник в начале, середине и конце.

%run -i 'fourier-filter.py' -r 5-40 -i garm.txt -o garm5_40.txt
%run -i 'fourier2func.py' -f func.txt -i garm5_40.txt -o 5_40.txt

Рис.11 Восстановленная функция без 5 первых гармоник

%run -i 'fourier-filter.py' -r 0-18,24-40 -i garm.txt -o garm0_18_24_40.txt
%run -i 'fourier2func.py' -f func.txt -i garm0_18_24_40.txt -o 0_18_24_40.txt

Рис.12 Восстановленная функция без 5 средних гармоник

%run -i 'fourier-filter.py' -r 0-35 -i garm.txt -o garm0_35.txt
%run -i 'fourier2func.py' -f func.txt -i garm0_35.txt -o 0_35.txt

Рис.13 Восстановленная функция без 5 последних гармоник

Исходя из рисунков, можно понять, что без части данных в начале и середине функция восстанавливается с трудом.

Итоги


Назад к странице седьмого семестра.


© Григорий Сафронов