Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller de Matlab 8 Casi Listo
Taller de Matlab 8 Casi Listo
Para Encontrar la solución al P.V.I dado se debe tener en cuenta que, para el caso en
cuestión, 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
ecuación dada en Matlab, es reducir el orden de las derivadas involucradas en la Ecuación
Diferencial por medio de un cambio de Variables. En nuestro caso se puede proceder así:
Sea
x 1= y
'
x 1= y '
También
'
x 2= y
Por tanto
'
x 2=x 1(1)
Si se considera
''
x 3= y
Así
'
x 3=x 2 (2)
Y Finalmente
' ' ''
x 3= y
' 1 3 4
x 3= x3 − 2 x 2+ 3 x 1+5 ln ( t ) +9(3)
t t t
Como vemos con (1), (2) y (3) se tiene un sistema de ecuaciones diferenciales que al
solucionarlas para cada variable se obtiene la solución para x 1 que es en realidad la
solución para y, del P.V.I Original. También se debe tener en cuenta las condiciones
iniciales:
x1 (1)
( )()
0
0
x = x2 (1) = 1
x3 (1) 3
Usamos rks4.m para ello invocamos el contenido de esta rutina con la instrucción 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 Función F, como la función 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 cuáles son la variable independiente y dependiente para
F. Aplicamos el método así
[T, Z] = rks4 (F, 1, 3, [0 1 3], 20)
T=
Columns 1 through 13
Columns 14 through 21
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
ans =
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')
20
15
10
0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
10.15
10.1
10.05
10
9.95
9.9
9.85
Aplicamos el método de Runge- Kutta para sistemas teniendo en cuenta que se debe definir
la función F, la cual sería:
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))]
M=(4-0)/0.1
Ans=
40
Ejecutamos la rutina
T=
Columns 1 through 13
Columns 14 through 26
Columns 27 through 39
2.6000 2.7000 2.8000 2.9000 3.0000 3.1000 3.2000 3.3000 3.4000
3.5000 3.6000 3.7000 3.8000
Columns 40 through 41
3.9000 4.0000
Z=
1.0e+004 *
1.0000 1.0000
0.7804 0.9308
0.6527 0.9000
0.5676 0.8903
0.5049 0.8938
0.4553 0.9065
0.4134 0.9264
0.3763 0.9519
0.3424 0.9824
0.3106 1.0172
0.2801 1.0559
0.2509 1.0981
0.2227 1.1436
0.1956 1.1920
0.1698 1.2428
0.1454 1.2956
0.1228 1.3498
0.1021 1.4046
0.0835 1.4594
0.0672 1.5134
0.0532 1.5658
0.0414 1.6158
0.0317 1.6630
0.0239 1.7067
0.0178 1.7467
0.0130 1.7828
0.0094 1.8149
0.0068 1.8432
0.0048 1.8678
0.0034 1.8891
0.0023 1.9073
0.0016 1.9228
0.0011 1.9358
0.0008 1.9468
0.0005 1.9560
0.0004 1.9637
0.0002 1.9701
0.0002 1.9754
0.0001 1.9797
0.0001 1.9833
0.0001 1.9863
M=(2-0)/0.1
M=
20
Como Matlab comienza su cuenta desde 1, entonces las poblaciones que estamos buscando
están ubicadas en la fila 21 de Z. Extraemos los datos así:
Z(21,:)
ans =
1.0e+004 *
0.0532 1.5658
plot(T,Z(:,1),'r',T,Z(:,2),'k'),hold on,grid on
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Deseamos ver el cambio de las poblaciones x1 y x2. Como se sabe las derivadas son el
cambio de las poblaciones, las cuales están definidas en F. En dicha función 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 población 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 Aplicación.
a. La siguiente ecuación sirve para modelar la deflexión del mástil de un bote sometido a
la fuerza del viento:
Con los parámetros que se entregan en el problema también es posible plantear el P.V.I
para el caso en estudio así:
{
50
y''= 8
(30−z )2
2× 1.2× 10 × 0.05
y ( 0 ) =0
y ' ( 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 reducción de
orden cambiando variables. Después de realizar dicho procedimiento el sistema queda:
x 2=x '1(1)
50
x '2= 8
(30−z )2 (2)
2 ×1.2 ×10 × 0.05
x 0= x1 (0) = 0
( ) ()
x2 ( 0) 0
F=
Inline function:
F(z,x) = [x(2),(50/(2*(1.2e8)*0.05))*(30-z)^2]
Por la gran cantidad de datos que arroja el método colocamos punto y coma al final de
la instrucción. Recuerde que en la primera columna de la matriz Z son los datos de
deflexión, o sea de solución 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 mástil. La variable z es la altura del mástil desde su base hasta su
punta y por ello está restringida al valor de la longitud total del mismo.
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 5 10 15 20 25 30
b. Realice los mismos cálculos de a., pero ahora, en lugar de usar una fuerza del viento
constante, emplee una fuerza que varíe con la altura de acuerdo con
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 método
Grficamos así
plot(T,Z(:,1),'r'),hold on,grid on
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 5 10 15 20 25 30
Se verifica que para este caso la deflexión del mástil aumento un poco más en
comparación con el caso en el cual la fuerza del viento posee un valor constante de 50.
Dado que este problema es un problema de orden superior se debe aplicar una reducción de
orden similar a las usadas en el literal 1 y 3. Después de realizar esta reducción de orden el
sistema de ecuaciones diferenciales que queda es:
x 2=x '1(1)
x 0= x1 (0) = 1
( ) ()
x2 ( 0) 0
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)]
Graficamos así:
plot(T,Z(:,1),'r'),hold on,grid on
0.5
-0.5
-1
-1.5
0 1 2 3 4 5 6 7
Donde y = y (x) con un tamaño de paso h = 0.05. ¿Cuál es un valor aproximado para y
Para resolver este numeral recuerde que se deben plantear dos P.V.I. Dichos P.V.I sirven
para aplicar el método del disparo lineal que en Matlab su rutina correspondiente se
denomina linsht.m. Planteemos los dos P.V.I
{
'' '
u = p ( x ) u + q ( x ) u+r ( x)
u ( a )=α u' ( a )=0
{
v ' ' =p ( x ) v ' +q ( x ) v
v ( a )=0 v ' ( a )=1
Para identificar p(x), q(x) y r(x). Llevemos el P.V.F dado a la forma estándar
{
−4 ' 2 2
y '' = y − 2 y + 2 ln (x)
x x x
y ( 1 )=0.5 y ( 2 )=ln ( 2)
De lo anterior
−4
p(x)=
x
−2
q ( x )= 2
x
2
r ( x )= ln ( x )
x2
Después de plantear los dos P.V.I y reducir su orden aplicamos el método 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 instrucción 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 número 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 método
L=
1.0000 0.5000
1.0500 0.5443
1.1000 0.5788
1.1500 0.6057
1.2000 0.6268
1.2500 0.6431
1.3000 0.6559
1.3500 0.6657
1.4000 0.6732
1.4500 0.6789
1.5000 0.6832
1.5500 0.6864
1.6000 0.6888
1.6500 0.6904
1.7000 0.6915
1.7500 0.6923
1.8000 0.6927
1.8500 0.6930
1.9000 0.6931
1.9500 0.6931
2.0000 0.6931
Como se puede observar el método 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 aproximación obtenida
es de 0.6832.
Nota: Se recomienda al Estudiante resolver la parte restante de este numeral de manera
independiente.