Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
6.7 kB
2
Indexable
Never
% БОЯН ГАНДОВ ИКИ 2-РИ КУРС Ф.Н. 2213811088
% ЗАДАНИЕ 4
% ЗАДАЧА 1
syms t; % задаване на символна променлива t - време
t0 = 0; % Начало на периода
T = 1.8; % Период на x
x = 8 * exp(0.4 * t + 0.45); % функция x
figure(1)
ezplot(x, [t0 t0 + T]); 
% ЗАДАЧА 2
w0 = 2 * pi / T; % Изчисляване на базовата честота
N = 31; % броят на коефициентите е 2*N+1
for k = -N:N
    a(k + N + 1) = (1 / T) * int(x * exp(-1j * k * w0 * t), t, t0, t0 + T); % изчисляване на уравнение (2)
    ex(k + N + 1) = exp(1j * k * w0 * t); % изчисляване на експонента
end % на уравнение (3)
xx = sum(a .* ex); % изчисляване на уравнение (3) - апроксимация на функция
figure(2)
ezplot(xx, [t0 t0 + T]); grid
title('Approximation with 31 terms')
% ЗАДАЧА 3
 % параметри на функцията
T = 1.8;               % период
t0 = 0;              % Начало на интервала
t = linspace(t0, t0 + 3 * T, 1000);  % времева ос

% инициализация на променливи
w0 = 2 * pi / T;
N = 31;

% символни променливи
syms x t

% изчисление на коефициентите
for k = -N:N
    x = 8 * exp(0.4 * t + 0.45); 
    a(k + N + 1) = (1 / T) * int(x * exp(-1j * k * w0 * t), t, t0, t0 + T);
    ex(k + N + 1) = exp(1j * k * w0 * t);
end

% апроксимация на функцията
xx = sum(a .* ex);

% визуализация на резултата
figure(3);
ezplot(xx, [t0 t0 + 3 * T]);
grid on;
title('Апроксимация на 3 периода на x с (2*N+1) ');
xlabel('Време');
ylabel('x_N(t)');

% ЗАДАЧА 4
% Първа част - Визуализация на модула на коефициентите
% параметри на функцията
T = 1.8;               % период
t0 = 0;              % Начало на интервала
w0 = 2 * pi / T;         % основна честота
N = 31;

% символична променлива и времева променлива
syms x t

% изчисление на коефициентите
x = 8 * exp(0.4 * t + 0.45);
a = (1 / T) * int(x * exp(-1j * (N:-1:-N) * w0 * t), t, t0, t0 + T);

% визуализация на модула на коефициентите
figure(4);
stem(-N:N, abs(a), 'LineWidth', 1.5, 'Marker', 'o');
grid on;
title('Модул на коефициентите a_k');
xlabel('k');
ylabel('|a_k|');

% Втора част - Визуализация на фазата на коефициентите
figure(5);
stem(-N:N, angle(a), 'LineWidth', 1.5, 'Marker', 'o');
grid on;
title('Фаза на коефициентите a_k');
xlabel('k');
ylabel('Фаза(a_k)');


% ЗАДАЧА 5

% Стойност N=31 с един период
% параметри на функцията
T = 1.8;               % период
t0 = 0;              % Начало на интервала
t = linspace(t0, t0 + 3 * T, 1000);  % времева ос

% инициализация на променливи
w0 = 2 * pi / T;
N = 31;

% символни променливи
syms x t

% изчисление на коефициентите
for k = -N:N
    x = 8 * exp(0.4 * t + 0.45); 
    a(k + N + 1) = (1 / T) * int(x * exp(-1j * k * w0 * t), t, t0, t0 + T);
    ex(k + N + 1) = exp(1j * k * w0 * t);
end

% апроксимация на функцията
xx = sum(a .* ex);

% визуализация на резултата
figure(6);
ezplot(xx, [t0 t0 + T]);
grid on;
title('Апроксимация на 3 периода на x с (2*N+1)');
xlabel('Време');
ylabel('x_N(t)');




% Стойност N=31 с три периода
% параметри на функцията
T = 1.8;               % период
t0 = 0;              % Начало на интервала
t = linspace(t0, t0 + 3 * T, 1000);  % времева ос

% инициализация на променливи
w0 = 2 * pi / T;
N = 31;

% символни променливи
syms x t

% изчисление на коефициентите
for k = -N:N
    x = 8 * exp(0.4 * t + 0.45); 
    a(k + N + 1) = (1 / T) * int(x * exp(-1j * k * w0 * t), t, t0, t0 + T);
    ex(k + N + 1) = exp(1j * k * w0 * t);
end

% апроксимация на функцията
xx = sum(a .* ex);

% визуализация на резултата
figure(7);
ezplot(xx, [t0 t0 + 3 * T]);
grid on;
title('Апроксимация на 3 периода на x с (2*N+1)');
xlabel('Време');
ylabel('x_N(t)');
% Стойност N=60 с един период 
% параметри на функцията
T = 1.8;               % период
t0 = 0;              % Начало на интервала
t = linspace(t0, t0 + 3 * T, 1000);  % времева ос

% инициализация на променливи
w0 = 2 * pi / T;
N = 60;

% символни променливи
syms x t

% изчисление на коефициентите
for k = -N:N
    x = 8 * exp(0.4 * t + 0.45); 
    a(k + N + 1) = (1 / T) * int(x * exp(-1j * k * w0 * t), t, t0, t0 + T);
    ex(k + N + 1) = exp(1j * k * w0 * t);
end

% апроксимация на функцията
xx = sum(a .* ex);

% визуализация на резултата
figure(8);
ezplot(xx, [t0 t0 + T]);
grid on;
title('Апроксимация на 3 периода на x с (2*N+1)');
xlabel('Време');
ylabel('x_N(t)');
 
% Стойност N=60 с три периода
% параметри на функцията
T = 1.8;               % период
t0 = 0;              % Начало на интервала
t = linspace(t0, t0 + 3 * T, 1000);  % времева ос

% инициализация на променливи
w0 = 2 * pi / T;
N = 60;

% символни променливи
syms x t

% изчисление на коефициентите
for k = -N:N
    x = 8 * exp(0.4 * t + 0.45); 
    a(k + N + 1) = (1 / T) * int(x * exp(-1j * k * w0 * t), t, t0, t0 + T);
    ex(k + N + 1) = exp(1j * k * w0 * t);
end

% апроксимация на функцията
xx = sum(a .* ex);

% визуализация на резултата
figure(9);
ezplot(xx, [t0 t0 + 3 * T]);
grid on;
title('Апроксимация на 3 периода на x с (2*N+1)');
xlabel('Време');
ylabel('x_N(t)');


Leave a Comment