0% encontró este documento útil (0 votos)
21 vistas21 páginas

Intro MATLAB

El taller de Introducción a MATLAB tiene como objetivo familiarizar a los estudiantes con el entorno de programación de MATLAB y Simulink, cubriendo temas como la creación de gráficas, el uso de variables simbólicas, sistemas dinámicos y teoría de control. Se presentan comandos importantes y ejemplos prácticos para realizar gráficas, cálculos simbólicos, resolver ecuaciones diferenciales y analizar funciones de transferencia. Además, se incluyen ejercicios para aplicar los conocimientos adquiridos en cada sección.
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)
21 vistas21 páginas

Intro MATLAB

El taller de Introducción a MATLAB tiene como objetivo familiarizar a los estudiantes con el entorno de programación de MATLAB y Simulink, cubriendo temas como la creación de gráficas, el uso de variables simbólicas, sistemas dinámicos y teoría de control. Se presentan comandos importantes y ejemplos prácticos para realizar gráficas, cálculos simbólicos, resolver ecuaciones diferenciales y analizar funciones de transferencia. Además, se incluyen ejercicios para aplicar los conocimientos adquiridos en cada sección.
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

Taller de Introducción a MATLAB

Nombre:

Código:

El objetivo de este taller introductorio es que usted se familiarice con el entorno de programación de MATLAB y
Simulink y tenga las herramientas para el uso de este software en futuras actividades del curso. Este taller no
representa ninguna nota para el curso.

Gráficas
En esta sección, explorará cómo crear gráficas en MATLAB, ajustar sus propiedades y trabajar con múltiples
gráficos en una sola figura.

Comandos importantes:

• plot: Para graficar datos en 2D.


• subplot: Para dividir una figura en subgráficas.
• grid, legend, xlabel, ylabel, title: Para agregar detalles a las gráficas, como cuadrículas, etiquetas
y leyendas.
• hold on/off: Para superponer múltiples gráficas en una misma figura.

Nota: En caso de necesitar más información sobre los comandos, puede buscar en internet o utilizar el
comando help seguido del nombre del comando que desea conocer.

Ejemplo: Gráfica de una función seno en un intervalo de 0 a .

% Crear el rango de valores


x = linspace(0, 2*pi, 100);
y = sin(x);

% Graficar la función seno


figure;
plot(x, y);

% Añadir información adicional


grid on; % Agregar cuadrícula
xlabel('x'); % Etiqueta para el eje x
ylabel('sin(x)'); % Etiqueta para el eje y
title('Función sin(x)'); % Título

1
Ejercicio 1: Cree una gráfica que contenga las funciones seno y coseno en el rango de 0 a . Agregue un
título, etiquetas en los ejes y una leyenda para identificar cada función. Se espera una figura como la siguiente:

% Escriba su código aquí


x = linspace(0, 2*pi, 100);
y1 = sin(x);
y2 = cos(x);
% Crear el rango de valores
figure; % Crear una nueva figura
plot(x, y1, 'b', 'LineWidth', 2); % Graficar la primera función en rojo
hold on; % Mantener la gráfica activa
plot(x, y2, 'r--', 'LineWidth', 2); % Graficar la segunda función en azul punteado
hold off; % Terminar la superposición

2
legend('Seno', 'Coseno');
xlabel('X');
ylabel('Y');
title('Funciones Sin(x) y Cos(x)');
grid on;

Ejercicio 2: Cree una figura que contenga las funciones seno y coseno en dos subgráficas diferentes en el
rango de 0 a . Agregue un título, y etiquetas en los ejes. Se espera una figura como la siguiente:

% Escriba su código aquí

3
% Escriba su código aquí
% Crear el rango de valores
figure; % Crear una nueva figura
subplot(2,1,1)
plot(x, y1, 'b', 'LineWidth', 2);
title('Gráfica del Seno');
xlabel('X');
ylabel('Sin(X)');
grid on;

subplot(2,1,2); % Crear el segundo subgráfico (2 filas, 1 columna, posición 2)


plot(x, y2, 'r--', 'LineWidth', 2);
title('Gráfica del Coseno');
xlabel('X');
ylabel('Cos(X)');
grid on;

Variables simbólicas
MATLAB permite trabajar con variables simbólicas, lo que es especialmente útil para realizar cálculos
algebraicos, como derivadas, integrales, simplificaciones y resolución de ecuaciones simbólicas.

Comandos importantes:

4
• syms: Para definir variables simbólicas.
• diff: Para calcular derivadas.
• simplify: Para simplificar expresiones.
• solve: Para resolver ecuaciones algebraicas.
• subs: Para sustituir valores en expresiones simbólicas.

Nota: En caso de necesitar más información sobre los comandos, puede buscar en internet o utilizar el
comando help seguido del nombre del comando que desea conocer.

Ejemplo: Cálculo de derivadas de la funcion .

% Definir una variable simbólica


syms x;

% Definir una función simbólica


f = x^3 + 2*x^2 - x + 5

f =

% Calcular la primera y segunda derivada


f_primera = diff(f)

f_primera =

f_segunda = diff(f, 2)

f_segunda =

% Igualar la primera derivada a 0


solve( f_primera == 0, x) % Resolver la ecuación para x

ans =

% Evaluar la función y su derivada en x = 2


valor_funcion = subs(f, x, 2)

valor_funcion =

valor_derivada = subs(f_primera, x, 2)

valor_derivada =

Ejercicio 1: Resuelva el siguiente sistema de ecuaciones:

5
syms x y z;

eq_1 = x+y+z == 6

eq_1 =

eq_2 = (2*x)-y+z == 3

eq_2 =

eq_3 = x +(2*y)-z == 4

eq_3 =

sol = solve([eq_1,eq_2,eq_3],[x,y,z])

sol = struct with fields:


x: 11/7
y: 16/7
z: 15/7

Ejercicio 2: Defina la función simbólica . Luego, realice lo siguiente:

1. Calcule el gradiente de f(x,y).


2.
Evalue el gradiente en el punto .

syms x y z;

f = ((x^2)*y)+ (exp(x))*sin(y)

f =

f_derivada = gradient(f,[x,y])

f_derivada =

valor_gradiente = subs(f_derivada,[x,y],[1,pi/2])

6
valor_gradiente =

Sistemas Dinámicos
Esta sección introduce conceptos básicos de sistemas dinámicos, como la transformada de Laplace.

Comandos importantes:

• laplace, ilaplace: Calculan la transformada de Laplace y su inversa.


• residue: Realiza descomposición en fracciones parciales.

Ejemplo: Consideremos la ecuación diferencial:

Donde es una entrada escalón unitario. Ademas, .

En MATLAB, esta ecuación se puede resolver utilizando el comando dsolve para obtener una solución
analítica.

% Definir las variables simbólicas


syms x(t) u(t);

% Ecuación diferencial
u(t) = heaviside(t); % Entrada escalón
ecuacion = diff(x, t, 2) + 3*diff(x, t) + 2*x == u

ecuacion(t) =

% Resolver la ecuación diferencial


y_sol = dsolve(ecuacion, x(0) == 0, subs(diff(x, t), t, 0) == 0)

y_sol =

% Graficar la solución
fplot(y_sol, [0, 10]);
grid on;
title('Solución Analítica de la Ecuación Diferencial');
xlabel('t'); ylabel('y(t)');

7
Ahora, la transformada de Laplace convierte la ecuación diferencial a una representación algebraica en el
dominio s. Con esto podemos resolver tambien nuestra ecuacion, de la siguiente manera:

syms X s

ecuacion = diff(x, t, 2) + 3*diff(x, t) + 2*x == u

ecuacion(t) =

% Transformada Laplace
Leq = laplace(ecuacion)

Leq =

% Condiciones Iniciales
Leq = subs(Leq, {laplace(x(t),t,s), x(0), subs(diff(x, t), t, 0)}, {X, 0, 0})

Leq =

% Resolver para Y(s)

8
Y_s = solve(Leq, X)

Y_s =

% Transformada inversa
y_t = ilaplace(Y_s)

y_t =

% Graficar la solución
fplot(y_t, [0, 10]);
grid on;
title('Solución por Transformada de Laplace');
xlabel('t'); ylabel('y(t)');

Podemos apreciar que ambas soluciones son equivalentes.

Ejercicio 1: Considere la ecuación diferencial:

Asumiendo .

9
• Obtenga la solución analítica usando dsolve.
• Calcule la transformada de Laplace de la ecuación y obtenga Y(s), luego calcule la solucion en tiempo.

solucion directa

% Escriba su código aquí


syms x(t)
ecuacion_dif = diff(x, t, 2) + 5*diff(x, t) + 6*x == 0

ecuacion_dif(t) =

y_sol_2 = dsolve(ecuacion_dif, x(0) == 1, subs(diff(x, t), t, 0) == 0)

y_sol_2 =

t_vals = linspace(0,10,100);
y_vals = double(subs(y_sol_2, t, t_vals))

y_vals = 1×100
1.0000 0.9741 0.9119 0.8307 0.7420 0.6530 0.5681 0.4896

plot(t_vals, y_vals);
grid on;
title('Solución Analítica de la Ecuación Diferencial');
xlabel('t'); ylabel('y(t)');

10
Laplace

syms X s
Leq_1 = laplace(ecuacion_dif)

Leq_1 =

Leq_1 = subs(Leq_1, {laplace(x(t),t,s), x(0), subs(diff(x, t), t, 0)}, {X, 1, 0})

Leq_1 =

Y_s_1 = solve(Leq_1, X)

Y_s_1 =

y_t_1 = ilaplace(Y_s_1)

y_t_1 =

figure;

11
fplot(y_t_1, [0, 10]);
grid on;
title('Solución por Transformada de Laplace');
xlabel('t'); ylabel('y(t)');

Teoría de Control
En esta sección se presentan conceptos básicos de teoría de control, como la función de transferencia, el
análisis de polos y ceros, y la obtención de respuestas al impulso y al escalón.

Comandos importantes:

• tf: Define una función de transferencia.


• pzmap: Grafica el diagrama de polos y ceros.
• impulse: Muestra la respuesta al impulso de un sistema.
• step: Muestra la respuesta al escalón de un sistema.

La función de transferencia de un sistema dinámico lineal e invariante en el tiempo se define como:

donde representa la relación entre la salida y la entrada en el dominio de Laplace.

Ejemplo: Consideremos la ecuación diferencial:

12
Donde es la entrada del sistema. Suponiendo condiciones iniciales nulas, la transformada de Laplace de la
ecuación será:

De aquí obtenemos la función de transferencia:

Con ayuda de MATLAB, podemos analizar esta función de transferencia para observar los polos y ceros del
sistema, la respuesta del sisttema ante un impulso y la respuesta ante un escalón.

% Definir la función de transferencia


numerador = 1;
denominador = [1 3 2];
G = tf(numerador, denominador)

G =

1
-------------
s^2 + 3 s + 2

Continuous-time transfer function.


Model Properties

% Graficar el diagrama de polos y ceros


figure;
pzmap(G);
title('Diagrama de Polos y Ceros');

13
% Respuesta al impulso
figure;
impulse(G);
title('Respuesta al Impulso');
grid on;

14
% Respuesta al escalón y sus características de respuesta
figure;
step(G);
title('Respuesta al Escalón');
grid on;

15
stepinfo(G)

ans = struct with fields:


RiseTime: 2.5901
TransientTime: 4.6002
SettlingTime: 4.6002
SettlingMin: 0.4511
SettlingMax: 0.4996
Overshoot: 0
Undershoot: 0
Peak: 0.4996
PeakTime: 7.7827

Otro concepto importante es la representación de estado. Esta, es otra forma de describir un sistema
dinámico usando un conjunto de ecuaciones diferenciales de primer orden en lugar de una sola ecuación en
términos de s. Se expresa como:

donde x es el vector de estados, u la entrada, y la salida y A, B, C, D son matrices que definen la dinámica del
sistema. A diferencia de la función de transferencia, que solo relaciona entrada y salida, la representación de
estado muestra la evolución interna del sistema. Para hallar la representación de estado a partir de una función
de transferencia, se realiza el siguiente procedimiento:

[A, B, C, D] = tf2ss(numerador, denominador)

A = 2×2

16
-3 -2
1 0
B = 2×1
1
0
C = 1×2
0 1
D =
0

En este contexto es importante saber que los valores propios de la matriz A corresponden a los polos de la
función de transferencia.

eig(A)

ans = 2×1
-2
-1

Asimismo, se puede obtener la ecuación característica del sistema, correspondiente al denominador de la


función de transferencia y que dicta la estabilidad del sistema. Esta tiene la forma .

eq_caracteristica = det(s*eye(2)-A) == 0

eq_caracteristica =

Ejercicio 1: Tome la siguiente función de transferencia

• Obtenga los ceros y los polos de la función de transferencia dada


• Cree la función de transferencia utilizando el comando tf(). Grafique el mapa de ceros y polos del
sistema.
• Grafique la respuesta escalón y obtenga las características de esta respuesta escalón
• Halle la representación de estado a partir de la función de transferencia. Obtenga los polos y compárelos
con los obtenidos en el primer literal.

% Escriba su código aquí

numerador = [1 4];
denominador = [1 0.5 2];

G = tf(numerador,denominador)

G =

s + 4
---------------
s^2 + 0.5 s + 2

Continuous-time transfer function.


Model Properties

17
pzmap(G);
title('Diagrama de Polos y Ceros');

figure;
impulse(G);
title('Respuesta al Escalón');
grid on;

18
[A, B, C, D] = tf2ss(numerador, denominador)

A = 2×2
-0.5000 -2.0000
1.0000 0
B = 2×1
1
0
C = 1×2
1 4
D = 0

eig(A)

ans = 2×1 complex


-0.2500 + 1.3919i
-0.2500 - 1.3919i

Ejercicio 2: Considere una funcion de transferencia de la forma:

donde son números reales que usted seleccionará.

19
• Pruebe diferentes valores de (puede alternar entre números positivos y negativos).
• Utilice los comandos pzmap, impulse y step para visualizar los efectos de las diferentes elecciones de
parámetros.

numerador = [1 4];
denominador = [1 0 -4];

G = tf(numerador,denominador)

G =

s + 4
-------
s^2 - 4

Continuous-time transfer function.


Model Properties

pzmap(G);
title('Diagrama de Polos y Ceros');

figure;
impulse(G);
title('Respuesta al Escalón');
grid on;

20
21

También podría gustarte