Está en la página 1de 18

Universidad Nacional de Colombia Sede Medelln

Solucin Taller # 8 Con Matlab


Mtodos Numricos
Tema: Solucin Numrica de Sistemas de Ecuaciones Diferenciales, Ecuaciones Diferenciales
de Orden Superior y Problemas de Contorno.
1. Considere

el

siguiente

P.V.I.

con

solucin

nica

Aplique el mtodo de Runge-Kutta clsico de orden 4 con 20 pasos para aproximar la


solucin del P.V.I. Grafique en una misma ventana la solucin y la aproximacin obtenida.
Cul es el valor aproximado obtenido para y (2), y (2) y y (2)?
Para Encontrar la solucin al P.V.I dado se debe tener en cuenta que, para el caso en
cuestin, se tiene un Problema de orden superior. En este tipo de casos cuando se tienen
Problemas de Orden Superior lo que se toma como procedimiento general para resolver la
ecuacin dada en Matlab, es reducir el orden de las derivadas involucradas en la Ecuacin
Diferencial por medio de un cambio de Variables. En nuestro caso se puede proceder as:
Sea
1 =
1 =
Tambin
2 =
2 =
Por tanto
2 = 1 (1)
Si se considera
3 =
As
3 = 2 (2)
Y Finalmente

3 =
1
3
4
3 = 3 2 2 + 3 1 + 5 ln + 9 (3)

Como vemos con (1), (2) y (3) se tiene un sistema de ecuaciones diferenciales que al
solucionarlas para cada variable se obtiene la solucin para 1 que es en realidad la solucin
para y, del P.V.I Original. Tambin se debe tener en cuenta las condiciones iniciales:
1 (1)
0
0 = 2 (1) = 1
3 (1)
3
Aplicamos Entonces el mtodo de Runge- Kutta de orden 4 para sistemas, de la siguiente
manera:
Usamos rks4.m para ello invocamos el contenido de esta rutina con la instruccin help
help rks4.m
Entrada - F es el sistema introducido como cadena de caracteres 'F'
- a y b los extremos del intervalo
- Za = [x(a), y(a)] las condiciones iniciales
- M es el numero de pasos
Salida - T es el vector de pasos
- Z = [x1(t), . . ., xn(t)] donde xk(t) es la aproximacion a la
k-esima variable dependiente
Definimos a la Funcin F, como la funcin que contiene las ecuaciones diferenciales del
sistema dado (Lados derecho de cada derivada). Lo hacemos de la siguiente manera:
F=inline('[x(2),x(3),(1/t)*(x(3))-(3/(t^2))*x(2)+(4/(t^3))*x(1)+5*log(t)+9]','t','x')
F=
Inline function:
F(t,x) = [x(2),x(3),(1./t)*(x(3))-(3/(t^2))*x(2)+(4/(t^3))*x(1)+5*log(t)+9]
Recuerde que es necesario definir cules son la variable independiente y dependiente para
F. Aplicamos el mtodo as

[T, Z] = rks4 (F, 1, 3, [0 1 3], 20)


T=
Columns 1 through 13
1.0000 1.1000 1.2000 1.3000
1.9000 2.0000 2.1000 2.2000

1.4000

1.5000

1.6000

1.7000

1.8000

Columns 14 through 21
2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3.0000

Z=
0 1.0000 3.0000
0.1165 1.3469 3.9560
0.2727 1.7945 5.0105
0.4791 2.3517 6.1474
0.7470 3.0263 7.3547
1.0885 3.8247 8.6232
1.5163 4.7527 9.9459
2.0435 5.8155 11.3170
2.6840 7.0176 12.7319
3.4518 8.3632 14.1869
4.3616 9.8562 15.6788
5.4281 11.5001 17.2048
6.6667 13.2982 18.7628
8.0930 15.2537 20.3507
9.7228 17.3693 21.9668
11.5723 19.6479 23.6096
13.6579 22.0921 25.2778
15.9963 24.7043 26.9700
18.6045 27.4869 28.6853
21.4995 30.4421 30.4227
24.6987 33.5721 32.1813

En los resultados anteriores se muestra el vector T, el cual contiene los valores de t


equiespaciados en [1 3] con 20 subintervalos. De manera simultnea se muestra en Z los
valores de solucin de 1 , 2 3 . Cada una de las soluciones para cada t de cada una de
estas variables se encuentra por columnas, as para 1 la solucin para cada t es la primera
columna y de manera sucesiva ocurre para las dems variables. Como 1 es igual a y,
entonces la solucin del P.V.I para cada t es la columna uno. Tambin se puede obtener
informacin de la primera derivada de y, que seran los datos de la segunda columna. Y
finalmente se puede obtener informacin de y que seran los datos de la tercera columna
de Z.
De los resultados obtenidos y de la explicacin Mostrada anteriormente los datos de y (2),
y (2) y y (2); son respectivamente

Z(11,:)
ans =
4.3616 9.8562 15.6788

La grafica de la solucin obtenida de manera aproximada y la solucin analtica se puede


obtener as:
Definimos la solucin analtica del P.V.I como una funcin inline g
g=inline('-t^2+t*cos(log(t))+t*sin(log(t))+(t^3)*log(t)')
g=
Inline function:
g(t) = -t^2+t*cos(log(t))+t*sin(log(t))+(t^3)*log(t)
Graficamos
plot(T,Z(:,1),'r'),hold on,grid on
fplot(g,[1 3],'b')
Finalmente lo que se observa es lo que se muestra en la siguiente pgina.

25

20

15

10

1.2

1.4

1.6

1.8

2.2

2.4

2.6

2.8

Como se puede observar la solucin analtica y la solucin numrica se acercan demasiado,


hasta el punto en que no se alcanzan a distinguir las dos curvas. Ampliamos por medio del
instrumento de lupa para verificar que efectivamente existen diferencias entre las dos
soluciones:

10.2

10.15

10.1

10.05

10

9.95

9.9

9.85

2.405

2.41

2.415

2.42

2.425

2. Consideremos el problema de predecir la poblacin de dos especies que compiten por la


misma comida. Si denotamos sus poblaciones en el instante t por x1 (t) y x2 (t), se suele
suponer que las tasas de natalidad de cada especie son proporcionales a las
correspondientes poblaciones, mientras que la tasa de mortalidad de cada especie depende
de la poblacin de ambas. Supongamos que la poblacin de una pareja determinada de
especies se describe mediante las ecuaciones:

Si se sabe que la poblacin inicial de cada especie es de 10000 individuos, encuentre una
aproximacin a la solucin de este sistema cuando 0 4 con intervalos de tiempo de
0.1, usando el mtodo de Runge-Kutta clsico de orden 4. Cul es la poblacin de
individuos de las especies 1 y 2 en el tiempo t = 2? Cmo cambian las poblaciones de las
especies 1 y 2 en t = 2? Grafique, en una misma ventana, las aproximaciones obtenidas para
x1 (t) y x2 (t), y observe el comportamiento de estas poblaciones en el intervalo de tiempo
0 4.
Aplicamos el mtodo de Runge- Kutta para sistemas teniendo en cuenta que se debe definir
la funcin F, la cual sera:
F=inline('[x(1)*(4-0.0003*x(1)-0.0004*x(2)),x(2)*(2-0.0002*x(1)-0.0001*x(2))]','t','x')
F=
Inline function:
F(t,x) = [x(1)*(4-0.0003*x(1)-0.0004*x(2)),x(2)*(2-0.0002*x(1)-0.0001*x(2))]
Aplicamos el Mtodo de la siguiente manera:
Debemos saber el valor de M, lo calculamos
M=(4-0)/0.1
Ans=
40
Ejecutamos la rutina
[T, Z] = rks4 (F, 0, 4, [10000 10000],40)
T=
Columns 1 through 13
0 0.1000 0.2000
1.0000 1.1000 1.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

Columns 14 through 26
1.3000 1.4000 1.5000 1.6000
2.2000 2.3000 2.4000 2.5000

1.7000

1.8000

1.9000

2.0000

2.1000

3.0000

3.1000

3.2000

3.3000

3.4000

Columns 27 through 39
2.6000 2.7000 2.8000 2.9000
3.5000 3.6000 3.7000 3.8000
Columns 40 through 41

3.9000 4.0000

Z=
1.0e+004 *
1.0000
0.7804
0.6527
0.5676
0.5049
0.4553
0.4134
0.3763
0.3424
0.3106
0.2801
0.2509
0.2227
0.1956
0.1698
0.1454
0.1228
0.1021
0.0835
0.0672
0.0532
0.0414
0.0317
0.0239
0.0178
0.0130
0.0094
0.0068
0.0048
0.0034
0.0023
0.0016
0.0011
0.0008
0.0005
0.0004
0.0002
0.0002
0.0001
0.0001
0.0001

1.0000
0.9308
0.9000
0.8903
0.8938
0.9065
0.9264
0.9519
0.9824
1.0172
1.0559
1.0981
1.1436
1.1920
1.2428
1.2956
1.3498
1.4046
1.4594
1.5134
1.5658
1.6158
1.6630
1.7067
1.7467
1.7828
1.8149
1.8432
1.8678
1.8891
1.9073
1.9228
1.9358
1.9468
1.9560
1.9637
1.9701
1.9754
1.9797
1.9833
1.9863

Las poblaciones de cada especie se encuentran para x1 y x2 en la primera y la segunda


columna de Z respectivamente. Cada una de estas poblaciones corresponde a un valor de
tiempo dado. Se desea ahora saber cul es el valor de cada poblacin en el tiempo t= 2.
Ahora dado que se cuenta con nmero grande de datos, se convierte en un procedimiento
muy tedioso calcular para t= 2 la poblacin de cada especie, contando el nmero de datos
de T y luego buscar la respuesta en Z. Para evitar este procedimiento calculamos el numero
de pasos que hay desde t= 0 hasta t= 2 y con este nmero podemos extraer de Z los valores
de las poblaciones para este tiempo:
M=(2-0)/0.1
M=
20
Como Matlab comienza su cuenta desde 1, entonces las poblaciones que estamos buscando
estn ubicadas en la fila 21 de Z. Extraemos los datos as:
Z(21,:)
ans =
1.0e+004 *
0.0532 1.5658
De esta manera la poblacin de la especie x1 para t= 2 es de 532 individuos y para la
especie x2 es de 15658 individuos. Los datos se entregan en nmeros enteros puesto que se
est hablando de un problema de poblaciones. Ahora veamos una grafica del
comportamiento de las dos poblaciones durante el tiempo, para ello se puede proceder as

plot(T,Z(:,1),'r',T,Z(:,2),'k'),hold on,grid on
El grafico obtenido se muestra en la siguiente pgina.

x 10

1.8

1.6

1.4

1.2

0.8

0.6

0.4

0.2

0.5

1.5

2.5

3.5

Como se puede observar en el anterior grafico, mientras que la poblacin de la especie x2


aumenta indefinidamente, la poblacin de la especie x1 tiende a desaparecer. Desde el
punto de vista de la biloga esto posee mucho sentido puesto que ambas especies estn
compitiendo por el mismo alimento, lo cual implica que la especie ms fuerte ser la que
mejor logre propagarse.
Deseamos ver el cambio de las poblaciones x1 y x2. Como se sabe las derivadas son el
cambio de las poblaciones, las cuales estn definidas en F. En dicha funcin solo se
necesitan los valores de las poblaciones en t= 2 pues solo depende de x (1) y x (2) que son
las poblaciones para las especies x1 y x2 en cualquier t. Hallamos el cambio evaluando a F
en las poblaciones para t= 2 as:
F(2,Z(21,:))
ans =
1.0e+003 *
-1.2889 5.1329

Del anterior resultado. El primer dato refleja el cambio de la poblacin de la especie x1 que
en este caso est disminuyendo y el segundo dato es el cambio para la especie x2 que est
aumentando.

3. Problema de Aplicacin.
a. La siguiente ecuacin sirve para modelar la deflexin del mstil de un bote sometido a
la fuerza del viento:

Donde f es la fuerza del viento, E el mdulo de elasticidad, L la longitud del mstil e I


el momento de inercia. Aproxime la deflexin si y = 0 y dy/dz = 0 en z = 0. Use los
valores de los parmetros f = 50, L = 30, E = 1.2e8 e I = 0.05 para sus clculos,
utilizando el mtodo clsico de Runge-Kutta de orden cuatro, con tamao de paso h =
0.1. Grafique la deflexin del mstil obtenida.
Con los parmetros que se entregan en el problema tambin es posible plantear el P.V.I
para el caso en estudio as:
=

50
(30 )2
2 1.2 108 0.05
0 =0
0 = 0

Como se puede ver el anterior P.V.I es un problema de orden superior. Por lo tanto se
debe someter al mismos procedimiento del numeral 1 en el cual se hizo reduccin de
orden cambiando variables. Despus de realizar dicho procedimiento el sistema queda:
2 = 1 (1)
2 =

50
(30 )2 (2)
2 1.2 108 0.05

Y el vector de Condiciones iniciales es:


0 =

1 (0)
0
=
2 (0)
0

Aplicando el mtodo de Runge- Kutta de orden 4 al sistema dado se tiene:

F=inline('[x(2),(50/(2*(1.2e8)*0.05))*(30-z)^2]','z','x')
F=
Inline function:
F(z,x) = [x(2),(50/(2*(1.2e8)*0.05))*(30-z)^2]
[T, Z] = rks4 (F, 0, 30, [0 0], ((30-0)/0.1));
Por la gran cantidad de datos que arroja el mtodo colocamos punto y coma al final de
la instruccin. Recuerde que en la primera columna de la matriz Z son los datos de
deflexin, o sea de solucin del P.V.I planteado anteriormente para cada dato de altura
z. Recuerde que se soluciona el P.V.I en [0 30] puesto que z no puede ser mayor que la
longitud total del mstil. La variable z es la altura del mstil desde su base hasta su
punta y por ello est restringida al valor de la longitud total del mismo.
Para graficar la deflexin del mstil lo que se obtiene es

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

10

15

20

25

30

b. Realice los mismos clculos de a., pero ahora, en lugar de usar una fuerza del viento
constante, emplee una fuerza que vare con la altura de acuerdo con

Graficar la deflexin del mstil obtenida.

Para este caso redefinimos a F, en vez de colocar 50 como valor de f lo reemplazamos


por el nuevo argumento que se dan en el presente literal
F=inline('[x(2),((((200*z)/(5+z))*exp((-2*z)/30))/(2*(1.2e8)*0.05))*(30-z)^2]','z','x')
F=
Inline function:
F(z,x) = [x(2),((((200*z)/(5+z))*exp((-2*z)/30))/(2*(1.2e8)*0.05))*(30-z)^2]

Aplicando el mtodo
[T, Z] = rks4 (F, 0, 30, [0 0], ((30-0)/0.1));
Grficamos as
plot(T,Z(:,1),'r'),hold on,grid on

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

10

15

20

25

Se verifica que para este caso la deflexin del mstil aumento un poco ms en
comparacin con el caso en el cual la fuerza del viento posee un valor constante de 50.

4. Un sistema de resorte tiene una resistencia al movimiento proporcional al cuadrado de la


velocidad, y su movimiento est descrito por

Si el resorte se suelta desde un punto que est a una unidad de distancia por arriba de su
punto de equilibrio, es decir, x (0) = 1 y x (0) = 0, use el mtodo clsico de Runge-Kutta de
orden cuatro para aproximar la posicin del resorte en [0 7], tomando tamao de paso h =
0. 05. Grafique la aproximacin obtenida.

30

Dado que este problema es un problema de orden superior se debe aplicar una reduccin de
orden similar a las usadas en el literal 1 y 3. Despus de realizar esta reduccin de orden el
sistema de ecuaciones diferenciales que queda es:
2 = 1 (1)
2 = 0.12 2 0.61 (2)
Con condiciones iniciales
0 =

1 (0)
1
=
2 (0)
0

Aplicando el Mtodo en cuestin sera


F=inline('[x(2),-0.1*(x(2)^2)-0.6*x(1)]','t','x')
F=
Inline function:
F(t,x) = [x(2),-0.1*(x(2)^2)-0.6*x(1)]
[T, Z] = rks4 (F, 0, 7, [1 0],140);
Graficamos as:
plot(T,Z(:,1),'r'),hold on,grid on

Las grafica resultante se muestra en la siguiente pgina.

0.5

-0.5

-1

-1.5

5. Aproxime la solucin del problema de contorno

Donde y = y (x) con un tamao de paso h = 0.05. Cul es un valor aproximado para y
(1.5)? Si la solucin exacta del P.V.F. dado es
grafique
el error absoluto de la aproximacin obtenida para la discretizacin dada, y calcule el
mximo error absoluto en la aproximacin calculada.
Para resolver este numeral recuerde que se deben plantear dos P.V.I. Dichos P.V.I sirven
para aplicar el mtodo del disparo lineal que en Matlab su rutina correspondiente se
denomina linsht.m. Planteemos los dos P.V.I

= + + ()
= = 0

= +
= 0 = 1
Para identificar p(x), q(x) y r(x). Llevemos el P.V.F dado a la forma estndar
4
2
2
= 2 + 2 ln()

1 = 0.5 2 = ln
(2)
De lo anterior
() =
=
() =

2
2

2
ln
()
2

Nota: Plantee los dos P.V.I y reduzca su orden.


Despus de plantear los dos P.V.I y reducir su orden aplicamos el mtodo del disparo lineal
sabiendo que F1 es el sistema de ecuaciones diferenciales que sale del P.V.I asociado a u, y
F2 es el sistema de ecuaciones diferenciales asociado a v. Usando la instruccin help.
help linsht.m
Entrada - F1 y F2 son los sistemas de ecuaciones de primer orden
Representando los Problemas de Valor Inicial (P.V.I.'s) (9) and (10),
Respectivamente; introducidas como cadenas de caracteres 'F1', 'F2'
- a y b son los extremos del intervalo
- alpha = x(a) y beta = x(b); las condiciones frontera
- M es el nmero de pasos
Salida - L = [T', X]; donde T' es el vector de abscisas (M+1) x 1
y X es el vector de ordenadas (M+1) x 1

Definiendo F1 y F2
F1=inline('[x(2),-(4/t)*x(2)-(2/(t^2))*x(1)+(2/(t^2))*log(t)]','t','x')
F1 =
Inline function:
F1(t,x) = [x(2),-(4/t)*x(2)-(2/(t^2))*x(1)+(2/(t^2))*log(t)]

F2=inline('[x(2),-(4/t)*x(2)-(2/(t^2))*x(1)]','t','x')
F2 =
Inline function:
F2(t,x) = [x(2),-(4/t)*x(2)-(2/(t^2))*x(1)]
Aplicando el mtodo
L = linsht (F1, F2, 1, 2, 0.5, log(2), 20)
L=
1.0000
1.0500
1.1000
1.1500
1.2000
1.2500
1.3000
1.3500
1.4000
1.4500
1.5000
1.5500
1.6000
1.6500
1.7000
1.7500
1.8000
1.8500
1.9000
1.9500
2.0000

0.5000
0.5443
0.5788
0.6057
0.6268
0.6431
0.6559
0.6657
0.6732
0.6789
0.6832
0.6864
0.6888
0.6904
0.6915
0.6923
0.6927
0.6930
0.6931
0.6931
0.6931

Como se puede observar el mtodo del disparo lineal en su primera columna muestra los
valores de x equiespaciados 0.1 y en la segunda columna las aproximaciones
correspondientes de soluciones para cada t del P.V.F. Para y (1.5) la aproximacin obtenida
es de 0.6832.
Nota: Se recomienda al Estudiante resolver la parte restante de este numeral de manera
independiente.

También podría gustarte