Está en la página 1de 8

Link de los codigos de

MATLAB:
https://docs.google.com/d
ocument/d/1XpwAyF1_4n
FvoRdiwSzntYzvjapG5ke
72nDuveECKyM/edit?
usp=sharing
1. Grafico de la función:

2. Muestreo de la función:
Taller de Fourier Circuitos 3
Thomas Santiagos Aldana Salguero-20221007003
Harol David Vacca Sanchez-20221007021

1. Punto de graficar:
a. e^x:
>> % Definir los puntos x
x = linspace(0.5, 2.5, 51);

% Calcular los valores de y correspondientes


y = exp(x);

% Graficar la función
plot(x, y, 'LineWidth', 2);
title('Gráfica de la función e^x');
xlabel('x');
ylabel('e^x');
>>
>> % Definir los puntos x
x = linspace(0.5, 2.5, 51);

% Calcular los valores de y correspondientes


y = exp(x);

% Graficar la función
plot(x, y, 'LineWidth', 2);
title('Gráfica de la función e^x');
xlabel('x');
ylabel('e^x');
>> % Definir los puntos x
x = linspace(0.5, 2.5, 51);

% Calcular los valores de y correspondientes


y = exp(x);

% Graficar la función
plot(x, y, 'LineWidth', 2);
hold on;
scatter(x, y, 'filled');
hold off;

title('Gráfica de la función e^x con puntos de muestreo');


xlabel('x');
ylabel('e^x');
b. Sen(x)*Cos(x):
% Definir los puntos x
x = linspace(0, 4 * pi, 51);

% Calcular los valores de y correspondientes


y = sin(x) .* cos(x);

% Graficar la función
plot(x, y, 'LineWidth', 2);
hold on;
scatter(x, y, 'filled');
hold off;

title('Gráfica de la función sin(x)cos(x) con puntos de muestreo');


xlabel('x');
ylabel('sin(x)cos(x)');

2. F(X)= 2Cos(3*pi*t)
% Definir los puntos x
x = linspace(0, 4 * pi, 51);
% Calcular los valores de y correspondientes
y = 2 * cos(3 * pi * x);

% Graficar la función
plot(x, y, 'LineWidth', 2);
hold on;
scatter(x, y, 'filled');
hold off;

title('Gráfica de la función 2cos(3\pix) con puntos de muestreo');


xlabel('x');
ylabel('2cos(3\pix)');

3. Función a trozos: F(X)= {0; si -pi<=x<0. pi-x; si 0<=x<pi}


>> y = arrayfun(f_reconstructed, x, 'UniformOutput', false);
% Definir los parámetros
L = pi; % Longitud del intervalo
n = 50; % Número de términos en la serie de Fourier

% Definir la función original a trozos


f_piecewise = @(x) (x >= 0 & x <= pi) .* (pi - x);

% Calcular los coeficientes de la serie de Fourier


a0 = 1/L * integral(f_piecewise, 0, L);
a = zeros(1, n);
b = zeros(1, n);

for i = 1:n
f_cos = @(x) f_piecewise(x) .* cos(i * pi * x / L);
f_sin = @(x) f_piecewise(x) .* sin(i * pi * x / L);
a(i) = 1/L * integral(f_cos, 0, L);
b(i) = 1/L * integral(f_sin, 0, L);
end

% Reconstruir la función utilizando la serie de Fourier


f_reconstructed = @(x) a0/2;
for i = 1:n
f_reconstructed = @(x) f_reconstructed(x) + a(i) * cos(i * pi * x / L) +
b(i) * sin(i * pi * x / L);
end

% Crear un vector de valores de x


x = linspace(-2 * L, 2 * L, 6);

% Calcular los valores de y correspondientes


y = arrayfun(f_reconstructed, x);

% Graficar la función original y la función reconstruida


plot(x, y, 'LineWidth', 2, 'DisplayName', 'Serie de Fourier');
hold on;
fplot(f_piecewise, [-L, L], 'LineWidth', 2, 'DisplayName', 'Función a
trozos');
hold off;

legend;
title('Expansión en series de Fourier de la función a trozos f(x)= [0 si
-pi<x<0 o pi-x si 0<x<pi]');
xlabel('x');
ylabel('f(x)');

5. Función onda cuadrada:

Aproximación solicitada:
>> % Definir los parámetros
T = 2; % Periodo
n_max = 50; % Número máximo de términos en la serie de Fourier

% Definir la función original a trozos


f_piecewise = @(t) (mod(t, T) <= 1) * 2 - 1;

% Calcular los coeficientes de la serie de Fourier


a0 = (1/T) * integral(f_piecewise, 0, T);
a = zeros(1, n_max);
b = zeros(1, n_max);

for n = 1:n_max
f_cos = @(t) f_piecewise(t) .* cos(2 * pi * n * t / T);
f_sin = @(t) f_piecewise(t) .* sin(2 * pi * n * t / T);
a(n) = (2/T) * integral(f_cos, 0, T);
b(n) = (2/T) * integral(f_sin, 0, T);
end

% Reconstruir la función utilizando la serie de Fourier


t = linspace(0, 4 * T, 1000); % Ajustar el rango de t para visualización
f_reconstructed = a0/2;
for n = 1:n_max
f_reconstructed = f_reconstructed + a(n) * cos(2 * pi * n * t / T) + b(n) * sin(2 *
pi * n * t / T);
end

% Crear un vector de valores de t


t = linspace(0, 4 * T, 15);

% Calcular los valores de y correspondientes


y = arrayfun(f_piecewise, t);

% Graficar la función original y la función reconstruida


plot(t, y, 'LineWidth', 2, 'DisplayName', 'Función a trozos');
hold on;
plot(t, f_reconstructed, 'LineWidth', 2, 'DisplayName', 'Serie de Fourier');
hold off;

legend;
title('Expansión en series de Fourier tren de pulsos 15 pasos');
xlabel('t');
ylabel('y');
Aproximación exacta:
>> T = 2; % Periodo
n_max = 15; % Número máximo de términos en la serie de Fourier

% Definir la función original a trozos


f_piecewise = @(t) (mod(t, T) <= 1) * 2 - 1;

% Calcular los coeficientes de la serie de Fourier


a0 = (1/T) * integral(f_piecewise, 0, T);
a = zeros(1, n_max);
b = zeros(1, n_max);

for n = 1:n_max
f_cos = @(t) f_piecewise(t) .* cos(2 * pi * n * t / T);
f_sin = @(t) f_piecewise(t) .* sin(2 * pi * n * t / T);
a(n) = (2/T) * integral(f_cos, 0, T);
b(n) = (2/T) * integral(f_sin, 0, T);
end

% Reconstruir la función utilizando la serie de Fourier


t = linspace(0, 4 * T, 1000); % Ajustar el rango de t para visualización
f_reconstructed = a0/2;
for n = 1:n_max
f_reconstructed = f_reconstructed + a(n) * cos(2 * pi * n * t / T) + b(n) * sin(2 *
pi * n * t / T);
end

% Crear un vector de valores de t


t = linspace(0, 4 * T, 1000);

% Calcular los valores de y correspondientes


y = arrayfun(f_piecewise, t);
% Graficar la función original y la función reconstruida
plot(t, y, 'LineWidth', 2, 'DisplayName', 'Función a trozos');
hold on;
plot(t, f_reconstructed, 'LineWidth', 2, 'DisplayName', 'Serie de Fourier');
hold off;

legend;
title('Expansión en series de Fourier de la función tren de pulsos 15 pasos');
xlabel('t');
ylabel('y');

También podría gustarte