Solución numérica de sistemas de ecuaciones diferenciales.

Anuncio
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.
Descargar