Пакет математических вычислений MAPLE.
Математическое моделирование.
Гармонический синтез. Гармонический анализ.
Цель работы:
Ознакомление с алгоритмами моделирования сигналов (гармонический синтез) тригонометрическими полиномами. Изучение алгоритмов аппроксимации дискретных и непрерывных периодических сигналов тригонометрическими полиномами (гармонический анализ). Применение этих алгоритмов для аппроксимации и спектрального анализа (Амплитудно-частотные характеристики сигналов). Выделение гармоник (фильтрация в частотной области) по построенному спектру.
Порядок выполнения задания
Ознакомиться с учебными программами гармонического синтеза и построения амплитудно-частотных характеристик периодических сигналов.
Освоить процедуры построения характеристик фильтров АЧХ и ФЧХ с помощью графических возможностей пакета MAPLE.
1. Вызвать учебную программу (файл «АЧХ_ФЧХ.mws»), изучить процедуру вычисления коэффициентов Фурье для дискретного периодического сигнала.
2. Построить графики АЧХ и ФЧХ для заданных десяти вариантов сигналов (файлы «Варианты_сигналов.doc» с формулами сигналов и «рисунки.doc» с их графиками).
3. Построить графики синтезированных сигналов по заданным формулам коэффициентов (файл «синтез.mws»).
Образец выполнения задания (файл «АЧХ_ФЧХ. mws » из папки lab 9):
Гармонический анализ и AЧХ сигналов
> restart;with(plots):pp:=(x,y)->[x,y];
|
|
Warning, the name changecoords has been redefined
Процедура построения суммы Фурье на отрезке периодичности [0: :]
> Fourier:=proc (n,X,Y,N,tau) local k,g,j,p,q; global a,b;
for k from 0 to n do
p:=0;q:=0;
for j from 1 to N do
p:=p+evalf(Y[j]*cos(k*X[j]*2*Pi/tau));
q:=q+evalf(Y[j]*sin(k*X[j]*2*Pi/tau));
end; a[k]:=2/N*p;b[k]:=2/N*q;
#print(k,a[k],b[k]);
end:;
end:;
Построение тригонометрического полинома по коэффициентам
> Trig:=proc(t,tau) local z,k;
z:=a[0]/2+sum(a[k]*cos(k*t*2*Pi/tau)+b[k]*sin(k*t*2*Pi/tau),k=1..n);
end;
Зададим различные варианты сигнала
> y1:=proc(x) local z;z:=piecewise(x<-Tau/4,0,x<0,-1,x<Tau/4,1,0);end;
> y2:=proc(x) local z;z:=piecewise(x<-Tau/8,0,x<0,-1,x<Tau/8,1,0);end:;
> y3:=proc(x) local z;z:=piecewise(x<-Tau/16,0,x<0,-1,x<Tau/16,1,0);end:;
> y4:=proc(x) local z;z:=piecewise(x<0,0,x<Tau/4,1,0);end:;
> y5:=proc(x) local z;z:=piecewise(x<0,0,x<Tau/8,1,0);end:;
> y6:=proc(x) local z;z:=piecewise(x<0,0,x<Tau/16,1,0);end:;
> y7:=proc(x) local z;z:=piecewise(x<0,0,x);end:;
> y8:=proc(x) local z;z:=x;end:;
> y9:=proc(x) local z;z:=piecewise(x<0,0,1);end:;
> y10:=proc(x) local z;z:=x^2;end:;
> y11:=proc(x) local z;z:=3*sin(x*2*Pi/Tau)+0.2*cos(15*x*2*Pi/Tau);end;
Выбираем вариант расчета, заменив вызов функции y11(x) в операторах ниже на название функции выбранного варианта
Вычисление коэффициентов тригонометрического полинома для заданной функции y(t)
на периоде Tau с числом узлов Nt и числом коэффициентов полинома n
> n:=20;Tau:=2;Nt:=50;
> a:=array(0..n):b:=array(0..n):
> h:=evalf(Tau/Nt);
> X:=array(0..Nt):;Y:=array(0..Nt):;
|
|
> #==для проверки вычислений можно включить печать, убрав знак # у print-a
> for j from 0 to Nt do
X[j]:= -Tau/2+evalf(j*h);
t:=X[j];Y[j]:= y11(t);# здесь название функции
#print(j,X[j],Y[j]);
end:
> RS:=zip(pp,X,Y):
> Rs:=plot(RS,-Tau/2..Tau/2,color=brown,style=point,symbol=cross):
Это график функции на сетке. Затем обращение к процедуре вычисления коэффициентов
> display(Rs);
> Fourier(n,X,Y,Nt,Tau):;
> t:='t';RT:=plot(Trig(t,Tau),t=-Tau/2-0.1..Tau+0.1,color=blue):
Построение совместного графика дискретного сигнала и приближающего полинома
> display(RT,Rs);
Графики спектральных параметров
> k:='k';c:=array(0..n);phi:=array(0..n);num:=array(0..n);
> for k from 0 to n do
c[k]:=evalf(abs(a[k]+I*b[k])):
phi[k]:=evalf(argument(a[k]+I*b[k]));
num[k]:=k;
#print(k,c[k],phi[k]);
end:;
Для печати коэффициентов триг. полинома нужно убрать решетку в операторе PRINT
> Risc:=zip(pp,num,c):
> Risphi:=zip(pp,num,phi):
> with(plottools):# присоединение пакета графики
> arr:=array(0..n);
> for i from 0 to n do
arr[i]:=arrow([i,0],[i,c[i]],0.2,0.2,0,color=black);
end:;
> Ar:=convert(arr,list):;
Rsym:=plot(Risc,style=point,symbol=circle,thickness=2,color=black):
> display(Ar,Rsym);
Это АЧХ, на графике которой виден вклад первой и пятнадцатой гармоник.
Эдесь надо посмотреть варианты аппроксимации, меняя выше строки с Nt=50 на Nt=20,
а n =15, 20, 25
Затем задать новую функцию y(x) (другой номер варианта)
Для нее повторить вычисления с построением АЧХ
|
|
Затем задать функцию y11 вида y=3*sin(t) (см. ниже формулу) и для нее построить АЧХ
Осознать, что получилось
Построить функцию y=3*sin(t) + 0.2 cos(15t) и проделать вычисления при разных n, меняя гармонику 15t и задавать значения n =15, 20, 25.
График ФЧХ
> plot(Risphi, numpoints=500);
Частотный фильтр для варианта № 11
Убираем 15-ю составляющую
> a[15]:=0:;b[15]:=0:;
> t:='t';RT0:=plot(Trig(t,Tau),t=-2.1..2+0.1,thickness=2,color=brown):
> display(RT,Rs,RT0);
>
>
Литература
1. Фаронов В.В. DELPHI. Программирование на языке высокого уровня. Учебник для вузов.—СПб.:Питер, 2005, 640с.
2. Немнюгин С. Turbo Pascal. Программирование на языке высокого уровня. Учебник для вузов. 2-е изд.—СПб.:Питер, 2005, 544с.
3. Немнюгин С. Turbo Pascal. Практикум. Учебное пособие. 2-е изд.—СПб.:Питер, 2004, 272с.
4. Васюков Н.Д. Практикум по основам программирования.Язык Паскаль:учебное пособие/ Н.Д.Васюкова, В.В.Тюляева.-М.:Высш. Шк.,1991
5. Д. Мак-Кракен, У. Дорн. Численные методы и программирование на Фортране. – М.:Мир, 1977.
7. Хемминг Р.В. Численные методы. – М.: Наука, 1972.
8. Калиткин Н.Н. Численные методы. – М.: Наука, 1978
9. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык ПАСКАЛЬ. – М.: Наука, 1988.
10. Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ. – М.:Наука, 1987.
|
|
11. Мудров А.Е. Численные методы для ПЭВМ на языках БЕЙСИК, ФОРТРАН, ПАСКАЛЬ. – Томск. 1991.
12. Дьяконов В.,П. Maple 7: учебный курс. – СПб.: Питер,2002.
13. Сдвижков О.А. Математика на компьютере: Maple 8. – М.: СОЛОН-Пресс, 2003.
14. Говорухин В.Н., Цибулин В.Г. Компьютер в математическом исследовании. Учебный курс. 2001
Дата добавления: 2018-10-27; просмотров: 236; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!