Está en la página 1de 16

Contenido

2.1 Solución analítica de ecuaciones diferenciales ........................................................... 31

2.1.1 Solución de una EDO de primer orden utilizando la función dsolve ............ 31

2.1.2 Solución de una EDO utilizando la función int ............................................... 33

2.1.3 Solución de sistemas de EDOs utilizando la función dsolve ......................... 37

Graficas utilizando la función plot................................................................. 38

Graficas utilizando la función subplot ......................................................... 39

Graficas utilizando la función plotyy ............................................................ 40

2.1.4 Solución de una EDO de segundo orden utilizando la función dsolve ......... 44
2.1 Solución analítica de ecuaciones diferenciales

Las Ecuaciones Diferenciales Ordinarias (EDO) se pueden resolver en forma analítica con
la función dsolve de Matlab. La sintaxis para utilizar la función puede ser: a)
especificando la ecuación a resolver como una expresión simbólica contenida en el
comando diff; b) como una ‘cadena de caracteres’ con la letra D para indicar la
diferenciación. Versiones actuales de Matlab, indican que la forma de escribir la ecuación
como una ‘cadena de caracteres’ se encuentra en desuso, por los cual estos apuntes se
enfocarán a la forma de escribir la ecuación como una expresión simbólica.

2.1.1 Solución de una EDO de primer orden utilizando la función dsolve

Cuando la EDO a resolver se presenta como una función simbólica, primero se definen la
variable dependiente y e independiente x como syms y(x). Se usa diff(y) para
indicar la diferenciación y el operador == para crear una ecuación.

syms y(x)

dsolve(ecn1,…,cond1,…) donde ecn es la ecuación simbólica que representa la


EDO a resolver, cond1 es la condición inicial.

dy
Ejemplo: resolver = y con condición inicial (C.I.) a x = 0, y = y0
dx

syms y(x) y0

y = dsolve(diff(y) == y, y(0) == y0)

y =

y0*exp(x)

Si no se especifica la condición inicial al dentro de dsolve, el resultado aparece una


constante cn.

31
dy
Ejemplo: resolver = 3y + 5
dt

syms y(t)

y = dsolve(diff(y) == 3*y + 5)

y =

(C19*exp(3*t))/3 - 5/3

dy
= ( y + 2 ) x C.I . y ( 0 ) = −1
2
Ejemplo: resolver
dx

syms y(x) y0

y = dsolve(diff(y) == x*(y+2)^2, y(0) == -1)

y =

1
- 1/(x^2/2 - 1) – 2 y=− 2
−2
x
−1
2

32
2.1.2 Solución de una EDO utilizando la función int

En los ejemplos anteriores se ha visto que la función dsolve se utiliza para resolver EDO
de la forma de problemas de valor inicial (PVI) o problemas de valor a la frontera (PVF)
para obtener su solución explícita, sin embargo algunas EDO no lineales no son resueltas
con esta función.

dy (
2xy + x 3 )
Ejemplo: Resuelva dx = − 2
(
x + y2 )
syms y(x)

y = dsolve(diff(y) == -(2*x*y + x^3)/(x^2 + y^2), y(1) == 0);

Warning: Explicit solution could not be found.

In dsolve (line 201)

y =

[ empty sym ]

d 2c  dc  dc ( 0 )
Ejemplo: Resuelva 2 − c  c − 1 = 0 c ( 0 ) = 0, =0
dt  dt  dt

syms c(t)

Dc = diff(c);

c = dsolve(diff(c,2) - c*(c*Dc-1) == 0, c(0) == 0, Dc(0) ==0)

Warning: Explicit solution could not be found.

In dsolve (line 201)

c =

[ empty sym ]

33
Si no se encuentra la solución explicita, se puede intentar separar variables y calcular la
integral indefinida por medio de la función int(expr,var), expr es la expresión
simbólica que va a integrar respecto a la variable var.

dy
Ejemplo: Resuelva = 1+ y
dt

syms y(x)

y = dsolve(diff(y) == 1 + y^0.5)

Warning: Explicit solution could not be found.

In dsolve (line 201)

y =

[ empty sym ]

Separando variables en el ejemplo anterior:

dy
= dt
(1 + y )
int(1/(1 + y^0.5))

ans =

2*y^(1/2) - 2*log(y^(1/2) + 1)

Resultado al integrar ambos lados: 2 y − 2ln ( )


y +1 = t

La integral definida (resultado numérico) en un intervalo [a,b] se calcula con


int(expr,var,a,b)

34
syms y
y1 = int(1/(1 + y^0.5), 0, 2)
y1 =
log(3 - 2*2^(1/2)) + 2*2^(1/2)
ans =
1.0657
La función integral(fun, xmin, xmax) integra numéricamente la función
definida como Anonymous function de xmin a xmax, el resultado es un escalar:

dy = @(y) 1./(1 + y.^0.5); Anonymous function


integral(dy, 0, 2)
ans =
1.0657

Ejemplo

Calcule el h de un gas cuando se calienta de 300 K a 1000 K. La capacidad calorífica Cp


de un gas se puede modelar con la ecuación CP = a + bT + cT 2 + dT 3 donde a, b, c y d son

constantes empíricas y T temperatura absoluta. El cambio de entalpía en función de la


temperatura en el gas es

dh Cal
= CP en
dT mol − K

a = 25.48
b = 1.52  10 −2
c = −0.715  10 −5
d = 1.312  10 −9

35
syms h(T) a b c d h0

h = dsolve(diff(h) == a + b*T + c*T^2 + d*T^3, h(0) == 0)


a = 25.58;
b = 1.52e-02;
c = -0.715e-05;
d = 1.312e-09;
h0 = 0;
T = [300; 1000];
hev = eval(h);
dh = hev(end) - hev(1);
cal
dh = 2.2828 104
mol

Otra forma de resolver es utilizando la función integral(fun, lmin, lmax)

a = 25.48; b = 0.0152; c = -7.15e-06; d = 1.312e-09;

Cp = @(T) (d*T.^3) + (c*T.^2) + (b*T) + a;

dH = integral(Cp,300,1000);

cal
dH = 2.2828 104
mol

Si para una EDO no se puede encontrar su solución explicita por medio de dsolve y no
es de variables separables, se puede resolver mediante integración numérica.

36
2.1.3 Solución de sistemas de EDOs utilizando la función dsolve

Los sistemas de EDOs se pueden resolver analíticamente de forma semejante a una


ecuación diferencial por medio la función dsolve:

Ejemplo: Resolver el sistema

dy A
= yB − 4 y A C.I . y A ( 0 ) = 25
dx
dyB
= 4 y A − 4 yB C.I . yB ( 0 ) = 0
dx
syms ya(x) yb(x)
M = dsolve(diff(ya) == yb-4*ya, diff(yb) == 4*ya-4*yb,
ya(0) == 25, yb(0) == 0)
M =
yb: [1x1 sym]
ya: [1x1 sym]

La solución del sistema está contenida en una estructura simbólica M, para que se
despliegue el resultado debe escribirse:

ya = M.ya
ya =
(25*exp(-2*x))/2 + (25*exp(-6*x))/2
yb = M.yb
yb =
25*exp(-2*x) - 25*exp(-6*x)

La solución del sistema es

25 −2 x 25 −6 x
yA = e + e
2 2
yB = 25e − 25e −6 x
−2 x

37
Graficas utilizando la función plot

Es posible graficar dos o más series de datos (x,y) en la misma gráfica con la función
‘plot’, tomando la solución del ejemplo anterior, (Figura 16):

x = (0:0.02:3);
yae = eval(ya);
ybe = eval(yb);
plot(x, yae, x, ybe)
xlabel('Variable Independiente x')
ylabel('Variable Dependiente y')
legend('y_A', 'y_B')

Figura 16. Grafica de dos series de datos con la función plot

38
Graficas utilizando la función subplot

Para desplegar 2, 3 o 4 gráficas en la misma figura de dos dimensiones, se utiliza la función


subplot(m,n,p) ésta divide el cuadro de la figura en una cuadricula de m renglones
por n columnas y crea los ejes para el subplot en la posición especificada por p (1, 2,
3, 4)

1 1 2

2 3 4

Ejemplo: Graficar las funciones ya(x) y yb(x) del ejemplo anterior en la misma figura en el
intervalo x = [0 5], (Figura 17):

subplot(2,1,1);
plot(x,yae, ‘b’)
xlabel('x')
ylabel('y_A')

subplot(2,1,2)
plot(x,ybe, ‘m’)
xlabel('x')
ylabel('y_B')

39
Figura 17. Graficas generadas con la función subplot

Graficas utilizando la función plotyy

Es posible realizar la gráfica de dos series de datos utilizando el eje y del lado izquierdo y
el del lado derecho utilizando la función plotyy(x1, y1, x2, y2), en la Figura 18
se muestra la gráfica del ejemplo anterior:

plotyy(x, yae, x,ybe)

40
Figura 18. Gráfica utilizando la función plotyy(x, y1, x, y2)

Los nombres en los dos ejes y no es posible asignarlos solo con la instrucción ylabel, ni en
el menú de gráficas con Property Editor – Figure. Es necesario utilizar la notación:
[Y,f1,f2] = plotyy(...) con esto se producen los dos ejes creados en Y y los
objetos gráficos en f1 y f2. Y (1) es el eje izquierdo y Y (2) es el eje derecho. Enseguida se
puede asignar el nombre a cada eje y, por medio de ylabel, (Figura 19):

41
Figura 19. Gráfica utilizando la función
[Y, f1,f2] = plotyy(x, y1, x, y2)y asignando nombres a los ejes

En la Figura 20 se muestra el script para resolver un sistema de EDOs, evaluar el resultado


en un vector de la variable independiente y tres formas de graficar el resultado.

42
Figura 20. Script para la solución del sistema

dy A
= yB − 4 y A C.I . y A ( 0 ) = 25
dx
dyB
= 4 y A − 4 yB C.I . yB ( 0 ) = 0
dx

43
2.1.4 Solución de una EDO de segundo orden utilizando la función dsolve

Para las EDO de segundo orden la notación es diff(y,2) para indicar dy2/dx2 además
si en las condiciones de frontera existe una primera derivada, se requiere definir variables
intermedias, utilizando diff.

d2y dy
Ejemplo: resolver 2
− 3 − 4 y = 4x 2
dx dx

syms y(x)

Dy = diff(y);

y = dsolve(diff(y,2) - 3*Dy - 4*y == 4*x^2)

y =

(3*x)/2 - x^2 + C7*exp(-x) + C9*exp(4*x) - 13/8

3 13
y = C1e− x + C2e4 x − x 2 + x−
2 8

d 2 y dy dy ( 0 )
Ejemplo: Resolver + − 2 y = 2 x, C.I. y ( 0 ) = 0, =1
dx 2 dx dx

syms y(x)

Dy = diff(y);

y = dsolve(diff(y,2) + Dy - 2*y == 2*x, y(0)==0, Dy(0)==1)

y =

e −2 x 1
exp(x) - exp(-2*x)/2 - x - 1/2 y=e − x
−x−
2 2

pretty(y)

exp(-2 x) 1
exp(x) - --------- - x - -
2 2

44
Ejemplo: resolver

d 2T dT dT
=0 C.I . z = 0, − k = qz → ( 0 ) = −qz / k
dz 2 z dz
C.F . z = L, T = T0 → T ( L ) = T0

syms T(z) qz k L T0

DT = diff(T);

T = dsolve(diff(T,2) == 0, DT(0) == -qz/k, T(L) == T0)

T =

Lqz + T0 K qz z
(L*qz + T0*k)/k - (qz*z)/k T= −
k k

pretty(T)

L qz + T0 k qz z
----------- - ----
k k

45

También podría gustarte