Решение Легко заметить, что функция
Download 129.5 Kb.
|
Вариант 4
- Bu sahifa navigatsiya:
- Решение
Задание 1Согласно варианту разложить в частичный ряд Фурье для k = 0, 1, 2,…,6 два заданных сигнала x1(t) и x2(t). Сигнал x1(t) задан на всей числовой оси, найти его период. Сигнал x2(t) задан на указанном отрезке, при разложении считать, его период равен длине отрезка. Найти спектры сигналов x1(t) и x2(t). Для каждого сигнала построить его график, графики разложений и спектры. x1(t)= |sin(2t-4)| (абсолютная величина) РешениеЛегко заметить, что функция sin(2t-4) имеет период . Учитывая, что функция имеет модуль, то период функции сокращается вдвое, т.к. функции лишается отрицательного полупериода: . Построим график функции x1(t): Рис.1 – График функции x1(t). Для сигнала x1(t) довольно трудно найти первообразную для нахождения коэффициентов ряда Фурье, поэтому мы напишем программу для вычисления интеграла на языке C++ , воспользуемся методом прямоугольников. Метод прямоугольников является самым простым и эффективным метом вычисления интегралов. В качестве опорной точки для нахождения высоты возьмем точку посередине промежутка. В результате получаем формулу средних прямоугольников: где . Метод прямоугольников был реализован в Borland C++ Builder 6. Функция, вычисляющая сразу два интеграла с косинусом и синусом, имеет следующий вид: void CalcIntCS(const int n, float& fys, float& fyc) { const float T = M_PI/2; // период const int iter=100; // Число итераций const float h = T/iter; // Шаг итерации fys = 0;
for(float x=-T/2+h/2; x<=T/2; x+=h) { fys += fabs(sin(2*x-4))*sin(2*M_PI/T*n*x); // функция с sin fyc += fabs(sin(2*x-4))*cos(2*M_PI/T*n*x); // функция с cos } fys = fys*2/T*h; fyc = fyc*2/T*h; }
float fys,fyc; char str [40]; CalcIntCS(0,fys,fyc); sprintf(str,"a0 = %*.*f;",10,5,fyc); Form1->Memo1->Lines->Add(str); for(int k=1;k<=6;k++) { CalcIntCS(k,fys,fyc); sprintf(str,"a%d = %*.*f; b%d = %*.*f;",k,10,5,fyc,k,10,5,fys); Form1->Memo1->Lines->Add(str); } Для расчета коэффициентов ряда Фурье мы воспользовались следующими формулами: Рассчитанные коэффициенты заносим в среду моделирования MATLAB. В ней мы построим графики и оценим правильность расчета ряда Фурье. Исходный код программы: t = 0:0.01:pi/2; T = pi/2; Y = abs(sin(2*t-4)); a0 = 1.27323; a1 = 0.06176; b1 = -0.41991; a2 = 0.08130; b2 = 0.02444; a3 = -0.01544; b3 = 0.03295; a4 = -0.01687; b4 = -0.01116; a5 = 0.00859; b5 = -0.00959; a6 = 0.00570; b6 = 0.00686; d0 = a0/2; d1 = a1*cos(2*pi/T*t)+b1*sin(2*pi/T*t); d2 = a2*cos(2*pi/T*2*t)+b2*sin(2*pi/T*2*t); d3 = a3*cos(2*pi/T*3*t)+b3*sin(2*pi/T*3*t); d4 = a4*cos(2*pi/T*4*t)+b4*sin(2*pi/T*4*t); d5 = a5*cos(2*pi/T*5*t)+b5*sin(2*pi/T*5*t); d6 = a6*cos(2*pi/T*6*t)+b6*sin(2*pi/T*6*t); D = d0+d1+d2+d3+d4+d5+d6; figure;
grid on; legend('Y','1','2','3','4','5','6','full'); Формула, используемая нами для разложения в ряд Фурье для n=0..6: Графики функции Y и суммы всех членов ряда Фурье полностью на рис.2: Рис.2 – Ряд Фурье для N=6 Разложение в ряды Фурье функции Период функции согласно условиям T=5. Найдем коэффициенты рядов, решив ряд интегралов: Расчеты произведем в MATLAB: t = 2:0.01:5; T = 3; dn = zeros(6,length(t)); dn1 = zeros(6,length(t)); dn2 = zeros(6,length(t)); d01 = -4/3; d02 = 4/3; d0 = d01 + d02; for n=1:6 dn1(n,:) = (2*sin(4/3*pi*n)/pi/n) * cos(2*pi/T*n*t)+ ... ((cos(4/3*pi*n)-cos(8/3*pi*n))/pi/n) * sin(2*pi/T*n*t); dn2(n,:) = (2*(sin(10*pi*n/3)-sin(8*pi*n/3))/pi/n)* cos(2*pi/T*n*t)+ ... (2*(cos(8*pi*n/3)-cos(10*pi*n/3))/pi/n)* sin(2*pi/T*n*t); dn(n,:)= dn1(n,:) + dn2(n,:); end D1 = d01/2+dn1(1,:)+dn1(2,:)+dn1(3,:)+dn1(4,:)+dn1(5,:)+dn1(6,:); D2 = d02/2+dn2(1,:)+dn2(2,:)+dn2(3,:)+dn2(4,:)+dn2(5,:)+dn2(6,:); D = d0/2+dn(1,:)+dn(2,:)+dn(3,:)+dn(4,:)+dn(5,:)+dn(6,:); Построим графики всех разложений: Рис.3 – Ряд Фурье для t от 2 до 4 Рис.4 – Ряд Фурье для t от 4 до 5 Рис.5 – Ряд Фурье для t от 2 до 5 Download 129.5 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling