1 Solución numérica de sistemas de ecuaciones diferenciales. Formulación de ecuaciones de estado. La formulación de las ecuaciones de una red eléctrica en términos de las variables de estado permite encontrar la solución de un sistema de ecuaciones diferenciales de primer orden en el dominio del tiempo. La solución numérica puede aplicarse a sistemas no lineales. La representación se logra con un sistema de ecuaciones diferenciales de primer orden: dx = Ax + Bu dt Donde x es el vector de estado, u es el vector de entrada o de excitaciones. El resto de las variables del sistema puede expresarse en términos del estado, según: y = Cx + Du Donde y es el vector de salida. A se denomina matriz de estado del sistema, B es la matriz de entrada, C es la matriz de salida, y D se denomina matriz de alimentaciones directas (feedforward). Veamos un ejemplo: 2 v(t) a i(t) C R vL L b Figura 1. Red RLC. Formulando las ecuaciones de estado, se obtienen: v + Ri + L i=C di =0 dt dv dt Con las condiciones iniciales: v(0) e i(0). Del modelo de ecuaciones de estado pueden obtenerse las ecuaciones diferenciales, de mayores órdenes, para cada una de las variables de la red, por ejemplo para el voltaje en el condensador, se obtiene eliminando i: v + RC dv d 2v + LC 2 = 0 dt dt Arreglando: d 2 v R dv 1 v=0 + + dt 2 L dt LC Con C=1, R=2/3 y L=1/3, v(0)=1, i(0)=0, se tiene una ecuación diferencial de segundo grado, sin excitaciones: v + 2v + 3v = 0 v(0) = 1, v(0) = 1 i (0) = 0 C Volviendo al problema de calcular soluciones numéricas en el dominio de tiempo, se desea obtener la solución v(t) para el intervalo desde t=0 hasta t=6. 3 A partir de las ecuaciones de estado, con los valores de los parámetros, se tiene: dv =i dt di = −3v − 2i dt Expresando matricialmente, se obtiene la matriz de estado A: ⎡ dv ⎤ ⎢ dt ⎥ ⎡ 0 1 ⎤ ⎡v ⎤ ⎢ ⎥=⎢ ⎥⎢ ⎥ ⎢ di ⎥ ⎣ −3 −2 ⎦ ⎣ i ⎦ ⎢⎣ dt ⎥⎦ Método de Euler. A partir de la expansión en serie de Taylor, para una variable escalar y, se tiene: y (t + Δt ) = y (t ) + dy (t ) 1 dy 2 (t ) 2 Δt + Δt .... dt 2 dt 2 La relación anterior, puede generalizarse considerando y como un vector. Pueden calcularse, aproximadamente, los valores en el instante siguiente (k+1) a partir de los valores en el instante k-ésimo, mediante: dv(tk ) Δt dt di (tk ) = ik + Δt dt vk +1 = vk + ik +1 Este procedimiento iterativo se denomina esquema simple de Euler. Los valores de las derivadas se obtienen mediante la matriz de estado. A partir de la ecuación de estado se determina el valor de las derivadas en un punto. 4 ⎡ dv(0) ⎤ ⎢ dt ⎥ ⎡ 0 1 ⎤ ⎡v(0) ⎤ ⎡ 0 1 ⎤ ⎡1 ⎤ ⎡ 0 ⎤ ⎢ ⎥=⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥ = ⎢ ⎥ ⎢ di (0) ⎥ ⎣ −3 −2 ⎦ ⎣ i (0) ⎦ ⎣ −3 −2 ⎦ ⎣ 0⎦ ⎣ −3⎦ ⎣⎢ dt ⎦⎥ Sea Δt = 0.1 , entonces los valores en t=0.1 se obtienen mediante: ⎡ dv(0) ⎤ ⎡ v(0.1) ⎤ ⎡v(0) ⎤ ⎢ dt ⎥ ⎢ i (0.1) ⎥ = ⎢ i (0) ⎥ + ⎢ di (0) ⎥ Δt ⎣ ⎦ ⎣ ⎦ ⎢ ⎥ ⎢⎣ dt ⎥⎦ Numéricamente, se obtiene: ⎡ v(0.1) ⎤ ⎡1 ⎤ ⎡ 0 ⎤ ⎡ 1 ⎤ ⎢ i (0.1) ⎥ = ⎢0 ⎥ + ⎢ −3⎥ 0.1 = ⎢ −0.3⎥ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ Para el siguiente punto, se efectúan los siguientes cálculos: t = 0.2 ⎡ dv(0.1) ⎤ ⎢ dt ⎥ ⎡ 0 1 ⎤ ⎡v(0.1) ⎤ ⎡ 0 1 ⎤ ⎡ 1 ⎤ ⎡ −0.3⎤ ⎢ ⎥=⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥=⎢ ⎥ ⎢ di (0.1) ⎥ ⎣ −3 −2 ⎦ ⎣ i (0.1) ⎦ ⎣ −3 −2 ⎦ ⎣ −0.3⎦ ⎣ −2.4⎦ ⎢⎣ dt ⎥⎦ ⎡ v(0.2) ⎤ ⎡ 1 ⎤ ⎡ −0.3⎤ ⎡ 0.97 ⎤ ⎢ i (0.2) ⎥ = ⎢ −0.3⎥ + ⎢ −2.4 ⎥ 0.1 = ⎢ −0.54⎥ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ Y así sucesivamente, hasta llegar al valor final de t deseado. La solución exacta de la ecuación de segundo orden, obtenida por un método analítico es: v + 2v + 3v = 0 v(0) = 1, v(0) =0 v(t ) = e − t (cos 2t + 1 sin 2t ) 2 5 Solución analítica. El siguiente segmento Maple, obtiene la solución de las ecuaciones de estado y los diagramas temporales de v(t) e i(t). v(t i(t) Figura 2. Solución transitoria analítica. > restart; with(plots): > ci:= {v(0)=1,i(0)=0}; ci := { v( 0 ) = 1, i( 0 ) = 0 } > ed:={diff(v(t),t)=i(t),diff(i(t,t)=-2*diff(v(t),t)3*v(t)}; ed := { d d d v( t ) = i( t ), i( t ) = −2 ⎛⎜⎜ v( t ) ⎟⎟⎞ − 3 v( t ) } dt dt ⎝ dt ⎠ El conjunto de ecuaciones diferenciales y de condiciones iniciales, se resuelve para el conjunto de funciones que se coloca como último argumento (El conjunto: v(t), i(t) en este caso). dsolve resuelve un conjunto de ecuaciones diferenciales. > sol:= dsolve(ed union ci, {v(t),i(t)}); 1 (−t ) 3 3 ( −t ) sol :={v( t ) = − e ⎛⎜⎜− 2 sin( 2 t ) − 3 cos( 2 t ) ⎞⎟⎟, i( t ) = − e 2 sin( 2 t ) } 3 2 2 ⎝ ⎠ > assign(sol); Se almacena gráfica de v(t) en la variable exacta; y se efectúan las gráficas de v e i, que se muestran en la Figura 2. > exacta:=plot(v(t), t=0..6, thickness=2, color=red): > plot([v(t),i(t)],t=0..6,thickness=2,color=[red, blue]); 6 Solución numérica. La obtención de una solución numérica puede obtenerse de la siguiente forma: Primero se establecen los valores iniciales de las variables: > v[0]:=1: i[0]:=0: t[0]:=0: Delta:=0.1: La generación de los puntos se almacena en listas, usando notación de arreglos. Las ecuaciones de recurrencia se resuelven mediante una iteración. Si Delta disminuye, la solución aproximada de Euler es más exacta. Se repite desde n igual 0 hasta 60 lo que está entre do y od, mediante el comando for. > for n from 0 to 60 do t[n+1]:=t[n]+ Delta: i[n+1]:=i[n]+(-3*v[n]-2*i[n])*Delta: v[n+1]:=v[n]+i[n]*(Delta): od: Se genera secuencia de puntos, como pares ordenados (t, v) mediante seq. > S:=[seq([t[k],v[k]], k=0..60)]: La gráfica formada por los puntos de la lista S, se genera empleando pointplot. > puntos:=pointplot(S,symbol=circle): Display muestra los dos gráficos simultáneamente. > display(exacta, puntos); Figura 3. Solución transitoria numérica. 7 La solución aproximada, por el esquema simple de Euler, puede ser suficiente en muchos casos. Existen numerosos métodos numéricos que dan mejores soluciones que el simple método de Euler, cuando las variables son funciones que tienen crecimientos o cambios muy grandes entre los intervalos en que se calculan los puntos. En Sistemas Lineales se estudian métodos que permiten pasar de la representación de variables de estado a Funciones de transferencia. Las funciones de transferencia modelan la representación de sistemas en el dominio de la frecuencia. Pueden obtenerse importantes propiedades del comportamiento del sistema en el espacio de estado. Esto se logra dibujando los valores de las variables de estado en términos del parámetro tiempo. La secuencia de puntos (v, i) se logra con: > espacio:=[seq([v[k],i[k]],k=0..60)]: > pointplot(espacio,symbol=circle); t=∞ t=0 Figura 4. Espacio de estado.