<jupyter_start><jupyter_text>Tarea 2 - Simulación de sistema simple con retardos  ProblemaDado el sistema:$$\dot{x} = - 3 x(t) + x(t - 1) + x(t - 2)$$Simular el sistema con las siguientes condiciones iniciales $\varphi$:1. $\varphi(t) = 1 \quad t \in [-2, 0]$2. $\varphi(t) = \sin(t) \quad t \in [-2, 0]$3. $\varphi(t) = \begin{cases} 1 & t = 0 \\ 0 & t \ne 0 \end{cases} \quad t \in [-2, 0]$  SoluciónPara simular y gráficar este sistema, tenemos que definir una función la cual sea capaz de comportarse como el sistema descrito, esto lo logramos con el código de MATLAB descrito en el archivo ```f.m```, el cual podemos ver a continuación:<jupyter_code>cat MATLAB/f.m<jupyter_output>function dydt = f(t, y, Z)
    yret1 = Z(:, 1);
    yret2 = Z(:, 2);
    
    dydt = -3*y + yret1(1) + yret2(1);
end<jupyter_text>Esta función se puede analizar por lineas, la primer linea```MATLABfunction dydt = f(t, y, Z)``` tan solo describe la función ```f```, con variables de entrada, ```t```, ```y```, ```Z``` y una salida ```dydt```.En esta función ```t``` es el tiempo para el que queremos calcular el valor de nuestra función; en especifico para nuestro ejemplo, como nuestro sistema es invariante en el tiempo, no necesitamos incluirla dentro de los calculos, ```y``` es el valor de nuestra variable, el cual será aproximado por la función ```dde23``` y ```Z``` es el valor de la variable del sistema, con un retardo aplicado.Las siguientes lineas tan solo guardan los valores de la variable del sistema en variables con un nombre significativo:```MATLAB    yret1 = Z(:, 1);    yret2 = Z(:, 2);```Y la ultima linea calcula el valor de la salida del sistema, para nosostros $\dot{x}$, ```MATLAB    dydt = -3*y + yret1(1) + yret2(1);```Sin embargo, en este punto, nuestro modelo computacional se acerca mas bien a:$$\dot{x} = -3x(t) + x(t - \tau_1) + x(t - \tau_2)$$y los valores de los retrasos $\tau_1$ y $\tau_2$ los ingresaremos en la función ```dde23```.Para poder simular este sistema, ahora tenemos que introducir la función que define el comportamiento de nuestro sistema, en la función ```dde23```, lo cual se verá así:```MATLABsol0 = dde23(@f, [1, 2], @phi0, [0, 5])```En donde ```@f```es la sintaxis para pasar como argumento a la función ```f```, ```[1, 2]``` es el conjunto de los retardos a utilizar, ```@phi0``` es la función que define a las condiciones iniciales y ```[0, 5]``` es el intervalo de simulación.Una vez que hemos simulado, la variable ```sol0``` es una estructura que contiene a las variables asociadas a la simulación, de donde podemos obtener ```x``` y ```y```, las cuales corresponden a $t$ y $x$.Ahora importamos los resultados de la simulación en MATLAB:<jupyter_code># Se importa libreria de entrada y salida y se importan datos de simulacion en MATLAB
import scipy.io
sistemaretardos = scipy.io.loadmat('./MATLAB/sistemaretardos.mat')
# Se importan datos de simulación a variables de Python para poder manipularlas
x0 = sistemaretardos.get("x0")
x1 = sistemaretardos.get("x1")
x2 = sistemaretardos.get("x2")
y0 = sistemaretardos.get("y0")
y1 = sistemaretardos.get("y1")
y2 = sistemaretardos.get("y2")<jupyter_output><empty_output><jupyter_text>Pero aun no hemos hablado de las funciones $\phi$, las cuales deben ser definidas de la misma manera que la función que nos da el comportamiento del sistema, por lo que para la primer condición inicial:$$\varphi(t) = 1 \quad t \in [-2, 0]$$nos quedará:<jupyter_code>cat MATLAB/phi0.m<jupyter_output>function y = phi0(t)
    y = 1;
end<jupyter_text>y por lo tanto, para esta condición inicial, el comportamiento del sistema nos queda:<jupyter_code>f = figure(figsize=(11, 7))
plot(x0[0], y0[0])

ax = f.gca()
ax.set_xlabel(r'$t$', fontsize=20)
ax.set_ylabel(r'$x$', fontsize=20);<jupyter_output><empty_output><jupyter_text>De la misma manera, para la segunda condición inicial:$$\varphi(t) = \sin(t) \quad t \in [-2, 0]$$tenemos que la función ```phi1``` nos quedará:<jupyter_code>cat MATLAB/phi1.m
f = figure(figsize=(11, 7))
plot(x1[0], y1[0])

ax = f.gca()
ax.set_xlabel(r'$t$', fontsize=20)
ax.set_ylabel(r'$x$', fontsize=20);<jupyter_output><empty_output><jupyter_text>Y para la tercer condición inicial:$$\varphi(t) = \begin{cases} 1 & t = 0 \\ 0 & t \ne 0 \end{cases} \quad t \in [-2, 0]$$tenemos:<jupyter_code>cat MATLAB/phi2.m
f = figure(figsize=(11, 7))
plot(x2[0], y2[0])

ax = f.gca()
ax.set_xlabel(r'$t$', fontsize=20)
ax.set_ylabel(r'$x$', fontsize=20);<jupyter_output><empty_output><jupyter_text>Puedes acceder a este notebook a traves de la páginahttp://bit.ly/1CzgVi5o escaneando el siguiente código:![Codigo](codigos/codigo2.jpg)<jupyter_code># Codigo para generar codigo :)
from qrcode import make
img = make("http://bit.ly/1CzgVi5")
img.save("codigos/codigo2.jpg")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14827945776850887, 'fraction_numerical': 0.026903023983315955, 'mean_word_length': 5.010025062656641, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '566761', 'license': 'MIT', 'n_tokens_mistral': 1887, 'n_tokens_neox': 1810, 'n_words': 593, 'path': 'IPythonNotebooks/Sistemas con retardo en la entrada/Tarea 2.ipynb', 'repo_name': 'robblack007/DCA', 'size': '4795'}