0% encontró este documento útil (0 votos)
2 vistas9 páginas

Ejercicios de MATLAB: Análisis Complejo

El documento presenta una serie de ejercicios de MATLAB relacionados con ecuaciones de Cauchy-Riemann, integrales complejas, series de Fourier, transformadas de Laplace, Maclaurin, teorema de residuos y transformadas Z. Cada sección incluye definiciones simbólicas, cálculos de derivadas, integraciones y análisis de singularidades, con ejemplos prácticos y resultados simbólicos. Se enfatiza la verificación de condiciones analíticas y la aplicación de teoremas en el contexto de funciones complejas.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas9 páginas

Ejercicios de MATLAB: Análisis Complejo

El documento presenta una serie de ejercicios de MATLAB relacionados con ecuaciones de Cauchy-Riemann, integrales complejas, series de Fourier, transformadas de Laplace, Maclaurin, teorema de residuos y transformadas Z. Cada sección incluye definiciones simbólicas, cálculos de derivadas, integraciones y análisis de singularidades, con ejemplos prácticos y resultados simbólicos. Se enfatiza la verificación de condiciones analíticas y la aplicación de teoremas en el contexto de funciones complejas.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MATLAB

—---------------------------EJERCICIOS EXAMEN EJEMPLO—------------------------

ECUACIONES DE CAUCHY-RIEMANN

%% 1. Definir variables simbólicas reales


syms x y real
z = x + 1i*y;

%% 2. Definir la función
f = 1/z^5;

%% 3. Extraer Parte Real (u) y Parte Imaginaria (v)


u = simplify(real(f));
v = simplify(imag(f));

%% 4. Calcular Derivadas Parciales


du_dx = simplify(diff(u, x));
du_dy = simplify(diff(u, y));
dv_dx = simplify(diff(v, x));
dv_dy = simplify(diff(v, y));

%% 5. Comprobar Cauchy-Riemann
% Si dan 0, la función es analítica en su dominio de definición
check1 = simplify(du_dx - dv_dy);
check2 = simplify(du_dy + dv_dx);

disp('Resultado de Cauchy-Riemann (0 indica que se cumple la estructura):');


disp(['Check 1: ', char(check1)]);
disp(['Check 2: ', char(check2)]);

%% 6. DETECTAR PUNTOS PROBLEMÁTICOS (Singularidades)


% Extraemos el numerador (N) y denominador (D) de una de las derivadas.
% Si la derivada se rompe (D=0), la función no es analítica ahí.

[N, D] = numden(du_dx);

% Resolvemos la ecuación "Denominador == 0" para encontrar los puntos malos


puntos_singulares = solve(D == 0, [x, y]);

disp('------------------------------------------------');
disp('La función NO es analítica en los siguientes puntos (Singularidades):');
% Mostramos resultados en estructura (x, y)
if isempty(puntos_singulares.x)
disp('No se encontraron puntos singulares (Analítica en todo R^2).');
else
disp(['x = ', char(puntos_singulares.x)]);
disp(['y = ', char(puntos_singulares.y)]);
end

Si tanto check1 como check2 dan 0, la función es analítica

INTEGRALES COMPLEJAS

Este tipo de ejercicios te pueden definir la curva gamma(t) de dos formas


OPCIÓN A: Círculo centro z0 y radio R:z0 + R*exp(1i*t)
OPCIÓN B: Segmento de z0 a z1: (1-t)*z0 + t*z1

OPCIÓN B
clear; clc;
syms t real

% 0. Definir los puntos del enunciado


z0 = pi + 1i;
z1 = 1i*exp(2);
z2 = 3^11;

%% --- TRAMO 1: Segmento de z0 a z1 ---


% 1. Definir la curva gamma (OPCIÓN B: Segmento)
% Fórmula: (1-t)*Inicio + t*Fin
gamma1 = (1-t)*z0 + t*z1;

% 2. Definir la función sustituyendo z por gamma


% La función es f(z) = sin(z)^3
f1 = sin(gamma1)^3;

% 3. Calcular dz (derivada)
dz1 = diff(gamma1, t);

% 4. Integrar (en segmentos t va siempre de 0 a 1)


integral_1 = int(f1 * dz1, t, 0, 1);
%% --- TRAMO 2: Segmento de z1 a z2 ---
% Repetimos el proceso para el segundo segmento
gamma2 = (1-t)*z1 + t*z2;
f2 = sin(gamma2)^3;
dz2 = diff(gamma2, t);
integral_2 = int(f2 * dz2, t, 0, 1);

%% --- RESULTADO FINAL ---


total = integral_1 + integral_2;

disp('Valor simbólico exacto:');


pretty(simplify(total))

disp('Valor numérico (4 decimales):');


vpa(total, 4)

OPCIÓN A
syms t real
% 1. Definir la curva gamma(t)
z0 = 0; R = 2;
gamma_t = z0 + R*exp(1i*t);

% 2. Definir la función sustituyendo z por gamma_t


% EJEMPLO: f(z) = z^2 / (z-1)
f_z = (gamma_t)^2 / (gamma_t - 1);

% 3. Calcular dz (derivada de la curva)


dz = diff(gamma_t, t);

% 4. Integrar f(gamma) * dz entre los límites (ej: 0 a 2*pi)


integral_val = int(f_z * dz, t, 0, 2*pi);

disp('Valor de la integral:');
pretty(simplify(integral_val))
SERIES DE FOURIER (Para calcular an y bn)

syms t n
% Definimos la función y el semi-periodo L
% Si el ciclo completo es 1, entonces T=1, lo que implica L=0.5 (T=2L)
% Sin embargo, para series definidas en [0, T], las fórmulas cambian ligeramente.
% Usaremos la definición estándar sobre el intervalo [0, 1].

f = t^5;
T = 1;
w0 = 2*pi/T; % Frecuencia angular base

% 1. Calcular a0
a0 = (2/T) * int(f, t, 0, T)

% 2. Calcular an
an_formula = (2/T) * int(f * cos(n * w0 * t), t, 0, T);
a3 = subs(an_formula, n, 3) % Sustituimos n=3

% 3. Calcular bn
bn_formula = (2/T) * int(f * sin(n * w0 * t), t, 0, T);
b5 = subs(bn_formula, n, 5) % Sustituimos n=5

—----int realiza la integración simbólica. subs sustituye la variable simbólica n por el


número armónico específico (3 o 5)----------
LAPLACE Y SU INVERSA

syms t s

% Parte 1: Transformada directa de Laplace


f1 = cos(t) + t^2*sin(t);
L_f1 = laplace(f1, t, s);
% Simplificamos para que coincida con la solución
L_f1 = simplify(L_f1)

% Parte 2: Transformada inversa de Laplace


F2 = (s^3 + 3*s) / (s^2 + 1)^2;
inv_F2 = ilaplace(F2, s, t)

n TÉRMINOS DE MACLAURIN

syms t
f = cos(t) / (1 - 2*t^3);

% Calculamos Taylor alrededor de 0 (Maclaurin)


% 'Order', 7 significa que calcula hasta el término de grado 6 (O(t^7))
serie = taylor(f, t, 'Order', 7)
TEOREMA DE LOS RESIDUOS

syms z
% 1. Definimos el denominador tal cual el enunciado
denom = 2*z^4 - (pi + 2i)*z^3 + (18 + pi*1i)*z^2 - (9*pi + 18i)*z + 9*pi*1i;

% 2. Buscamos las raíces (polos)


polos = solve(denom == 0, z);

% Imprimimos los polos para ver cuáles son


disp('Los polos encontrados son:');
disp(polos);

% 3. Filtramos los que están dentro de |z| < 2


% Nota: eval() o double() es necesario porque 'pi' es simbólico
polos_adentro = polos(double(abs(polos)) < 2);

disp('Polos dentro de la curva:');


disp(polos_adentro);

% 4. Teorema de los Residuos


f = 1 / denom;
suma_residuos = 0;

for k = 1:length(polos_adentro)
pk = polos_adentro(k);
% Calculamos residuo en cada polo interior
res_k = limit((z - pk) * f, z, pk);
suma_residuos = suma_residuos + res_k;
end

% 5. Resultado final (multiplicar por 2*pi*i)


integral_res = 2*pi*1i * suma_residuos;

% Simplificamos para comparar con la solución del PDF


solucion = simplify(integral_res);
disp('Solución calculada:');
pretty(solucion)
TRANSFORMADA DE FOURIER

syms t w
% Definir función "caja" usando Heaviside (escalón unitario)
% Vale 3 entre 0 y 4, y 0 en el resto.
f = 3 * (heaviside(t) - heaviside(t - 4));

% Calcular Fourier
% NOTA: MATLAB usa por defecto una definición de Fourier que puede diferir en
constantes.
% Para coincidir con la solución del PDF (que tiene sqrt(pi)), es posible que
% el curso use la definición unitaria o asimétrica específica.
F_w = fourier(f, t, w);

% Intentamos simplificar o reescribir para ver la forma trigonométrica


simplify(rewrite(F_w, 'sinc')) % A veces ayuda convertir a sinc

TRANSFORMADA Z

syms n z
% Parte 1: Transformada Z directa
xn = n^2 * cos(pi*n/2);
X_z = ztrans(xn, n, z);
X_z = simplify(X_z)

% Parte 2: Transformada Z inversa


X_z_inv = (1 + 2*z) / (1 + z)^5;
xn_result = iztrans(X_z_inv, z, n);
—---------------------------OTROS TIPOS DE EJERCICIOS—--------------------------

1.​ Te dan solo u y te piden hallar v

clear; clc;
syms x y z real % 'real' es vital para separar u y v correctamente

%% 1. DATOS DE ENTRADA (Modifica esta sección según tu examen)


% Ejemplo: Te dan u = x^3 - 3*x*y^2 + x
dato = x^3 - 3*x*y^2 + x;
es_parte_real = true; % Pon 'false' si el dato es v

%% 2. MÉTODO MILNE-THOMSON (Cálculo de f(z))


if es_parte_real
u_in = dato;
% Si dan u: f'(z) = du/dx(z,0) - i*du/dy(z,0)
du_dx = diff(u_in, x);
du_dy = diff(u_in, y);
f_prima = subs(du_dx, {x, y}, {z, 0}) - 1i * subs(du_dy, {x, y}, {z, 0});
else
v_in = dato;
% Si dan v: f'(z) = dv/dy(z,0) + i*dv/dx(z,0)
dv_dx = diff(v_in, x);
dv_dy = diff(v_in, y);
f_prima = subs(dv_dy, {x, y}, {z, 0}) + 1i * subs(dv_dx, {x, y}, {z, 0});
end

% Integramos para obtener f(z)


f_z = int(f_prima, z);

%% 3. SEPARACIÓN DE U y V
% Sustituimos z = x + iy en la solución
f_xy = subs(f_z, z, x + 1i*y);

% Extraemos y simplificamos partes real e imaginaria


u_final = simplify(real(f_xy));
v_final = simplify(imag(f_xy));

%% 4. MOSTRAR RESULTADOS
disp('--------------------------------------------------');
disp('RESULTADO 1: Función f(z) compleja:');
pretty(f_z)
disp('(Recuerda añadir la constante +C o +iC al copiarlo)');

disp('--------------------------------------------------');
disp('RESULTADO 2: Componentes u(x,y) y v(x,y):');
disp('u(x,y) = '); pretty(u_final)
disp('v(x,y) = '); pretty(v_final)
disp('--------------------------------------------------');

2.​ Calcular serie de Taylor (y de Maclaurin si lo centramos en 0)

syms z
% 1. Define la función
f = log(z); % EJEMPLO (log(z) no existe en 0, hay que hacerlo en otro lado)

% 2. Define el centro (z0) y el Orden


z0 = 1; % CAMBIAR ESTO (Ej: 1, pi, 1+1i, etc.)
grado = 6; % Hasta qué potencia quieres (aprox)

% 3. El comando clave es 'ExpansionPoint'


serie = taylor(f, z, 'ExpansionPoint', z0, 'Order', grado);

disp(['Serie de Taylor centrada en ', char(sym(z0)), ':']);


pretty(serie)

También podría gustarte