ECUACIONES DIFERENCIALES EJERCICIOS Y PRÁCTICAS con ...

108
1 ECUACIONES DIFERENCIALES EJERCICIOS Y PRÁCTICAS con MATLAB MATLAB MATLAB MATLAB MARIBEL HIGUERA FERNÁNDEZ D. ANTONIO ALGABA DURÁN D. MANUEL MERINO MORLESÍN DPTO. MATEMÁTICAS INGENIERÍA INDUSTRIAL [2007] AUTOR PROFESORES

Transcript of ECUACIONES DIFERENCIALES EJERCICIOS Y PRÁCTICAS con ...

1

ECUACIONES DIFERENCIALES

EJERCICIOS Y PRÁCTICAS

con MATLABMATLABMATLABMATLAB

MARIBEL HIGUERA FERNÁNDEZ D. ANTONIO ALGABA DURÁN D. MANUEL MERINO MORLESÍN DPTO. MATEMÁTICAS

INGENIERÍA INDUSTRIAL [2007]

AUTOR PROFESORES

2

INCICE: PROBLEMAS EXAMENES - EJERCICIOS DEL BOLETÍN PRÁCTICAS NO RESUELTOS - PRACTICAS – COMPROBACIÓN EJERCICIOS – EJERCICIOS SESION

PROBLEMAS MATLAB.

1. PROBLEMA 1_FEBRERO 2006 (ECUACIÓN LOGÍSTICA) ................................................................... 4

2. PROBLEMA 2_FEBRERO 2006_BOLETIN EJ 7 ECUACIÓN VAN DER POL ....................................... 9

3. PROBLEMA 3_FEBRERO 2006 (IMPLICITODD) ................................................................................ 13

4. PROBLEMA 4_FEBRERO 2006_BOLETIN EJ 11_METODO DISPARO............................................... 20

5. PROBLEMA 1_SEPTIEMBRE 2006 ........................................................................................................ 26

6. PROBLEMA 2_SEPTIEMBRE 2006_BOLETIN EJ 5 ECUACIÓN DUFFING ....................................... 29

7. PROBLEMA 3_SEPTIEMBRE 2006 = EJERCICIO 3_FEBRERO 2006 PROBLEMA 4...................... 41

8. PROBLEMA 1_DICIEMBRE 2006 = BOLETIN EJ 1_RESUELTO PRACTICA 3 .............................. 41

9. PROBLEMA 2_DICIEMBRE 2006........................................................................................................... 42

10. PROBLEMA 1_JUNIO 2007_METODO DISPARO................................................................................... 48

11. PROBLEMA 2_JUNIO 2007_PARECIDO A PROBLEMA2_DICIEMBRE 2006 ..................................... 51

12. PROBLEMA 3_JUNIO 2007 CRANKNICOLSONDD ................................................................................ 57

13. PROBLEMA 1_SEPTIEMBRE 2007 ........................................................................................................ 62

14. PROBLEMA 2_SEPTIEMBRE 2007 DIFERENCIASFINITAS ............................................................... 68

15. PROBLEMA 3_SEPTIEMBRE 2007 IMPLICITOND .............................................................................. 70

16. BOLETIN_EJ 9 SISTEMA DE LORENZ................................................................................................ 76

17. BOLETIN EJ 12 DEFLEXIÓN VIGA_DIFERENCIASFINITAS........................................................... 82

18. 070312_PRACTICA 03_BOLETIN EJ 01_CIRCUITO RC ................................................................. 90

19. 070319_PRACTICA 04_BOLETIN EJ 02_ECUACION LOGISTICA .................................................. 90

20. 070326_PRACTICA 05_BOLETIN EJ 03_DIAGRAMA BIF.-EQU.-ESTABILIDADES.................... 90

21. 070409_PRACTICA 06_........................................................................................................................ 90

22. 070416_PRACTICA 07_BOLETIN EJ 04.1_CIRCUITO RLC........................................................... 90

23. 070430_PRACTICA 08_BOLETIN EJ 04.2_CIRCUITO RLC........................................................... 90

24. 070507_PRACTICA 09_BOLETIN EJ 06_PENDULO .......................................................................... 90

25. 070514_PRACTICA 10_BOLETIN EJ 08_BIFURACIONES SISTEMA ECUACIONES...................... 90

26. 070521_PRACTICA 11_BOLETIN EJ 10_DISPARO/DIFERENCIASFINITAS................................. 90

3

27. COMPROBACIÓN ECUACIÓN CALOR METODO PROGRESIVO_EXPLICITODD .......................... 91

28. COMPROBACIÓN ECUACIÓN CALOR METODO REGRESIVO_IMPLICITODD.............................. 93

29. COMPROBACIÓN ECUACIÓN CALOR METODO CRANK-NICOLSON............................................ 95

30. COMPROBACIÓN METODO DISPARO Y DIFERENCIAS FINITAS................................................... 97

31. EJERCICIOS SESIÓN PROBLEMAS. ................................................................................................. 101

32. BIBLIOGRAFÍA Y MATERIAL UTILIZADO ......................................................................................... 108

33. ANEXOS................................................................................................................................................ 108

4

1. PROBLEMA 1_FEBRERO 2006 (ecuación logística)

Supongamos que originalmente hay P toneladas de peces en un lago y que su evolución viene dada por la

ecuación logística con razón de reproducción r = 1 y capacidad de soporte del medio k = 10. Es decir:

b) Si en el instante t =0 hay diez toneladas de peces y se comienza a pescar en dicho lago, a razón de 5

toneladas al mes los tres primeros meses y 1 tonelada los restantes meses de la temporada de pesca,

¿cuál es la población al cabo de 15 meses? ¿Cuál es el valor mínimo de la población? A partir del tercer

mes, ¿tiende la población a estacionarse? Hallar dicho valor de equilibrio.

c) Si en el instante t = 0 (Enero) hay diez toneladas de peces, y se pesca en dicho lago 3 toneladas al mes,

durante los meses de Marzo, Abril y Mayo, repitiéndose este tipo de captura cada año ¿cuál es la

población al cabo de 18 meses?

d) Supongamos que la captura se mantiene constante en todo instante, es decir H(t) = k.

Hallar los equilibrios. Al variar esta constante k en el intervalo [0,5], ¿cambia el número de equilibrios?

En caso afirmativo, ¿para qué valores de la constante k se produce un cambio en el número de puntos

de equilibrio? ¿Qué tipo de bifurcación de equilibrio tiene lugar? Realizar el retrato de fases de cada uno

de los casos presentes.

SOLUCIÓN:

a) Si en el instante t =0 hay diez toneladas de peces y se comienza a pescar en dicho lago, a razón de 5

toneladas al mes los tres primeros meses y 1 tonelada los restantes meses de la temporada de pesca,

¿cuál es la población al cabo de 15 meses? ¿Cuál es el valor mínimo de la población? A partir del tercer

mes, ¿tiende la población a estacionarse? Hallar dicho valor de equilibrio.

Ejecuto dfield.m Gallery/logic ecuation.

Posteriormente introduzco la función H(t), como resta, que tendrá en cuenta la pesca. Y defino dicha función en un archivo H.m

)1(k

PrP

dt

dP−=

5

H.m function y=H(t) y=5; if t>3 y=1; end

En la misma gráfica del resultado obtenido, dibujo la función de la pesca. >> fplot('H',[0,20],'r') >> fplot('H',[0,20],'r')

Resultado: Al cabo de 15 meses la población se habrá extinguido, es más la población se extingue a los 4 meses.

6

b) Si en el instante t = 0 (Enero) hay diez toneladas de peces, y se pesca en dicho lago 3 toneladas al mes,

durante los meses de Marzo, Abril y Mayo, repitiéndose este tipo de captura cada año ¿cuál es la

población al cabo de 18 meses? Defino la nueva función de pesca

H.m function y=H(t) r=mod(t,12); if r>=2 & r<=5 y=3; else y=0; end end

>> fplot('H(t)',[-1,20],'r') >> fplot('H(t)',[-1,20],'r')

No sé porqué, no sale dibujados los dientes completos, del segundo período de pesca, pero es evidente que su efecto es visible en la respuesta. En el mes 18 la cantidad de peces es de aprox. 8.14 Toneladas.

7

c) Supongamos que la captura se mantiene constante en todo instante, es decir H(t) = k.

Hallar los equilibrios. Al variar esta constante k en el intervalo [0,5], ¿cambia el número de equilibrios?

En caso afirmativo, ¿para qué valores de la constante k se produce un cambio en el número de puntos

de equilibrio? ¿Qué tipo de bifurcación de equilibrio tiene lugar? Realizar el retrato de fases de cada uno

de los casos presentes. Si H(t)= 2.5001, la problación de peces se extingue, como podemos observar al introducir este valor en el dfiel.m.

8

Si H(t)= 2.5, la problación de peces se mantiene constantes, en un valor de 5 toneladas, como podemos observar al introducir este valor en el dfiel.m.

Por lo tanto, el cambio se produce para k=2.5 Se produce una bifurcación silla-nodo. Para valores de C>2.5 no hay equilibrios.

9

2. PROBLEMA 2_FEBRERO 2006_BOLETIN EJ 7 ecuación Van der Pol

El sistema de ecuaciones diferenciales:

0'''' 3 =++⋅− yyyy α

a) Variando el parámetro α , en el intervalo [-1,1] [0,5], encuentra y clasifica los distintos tipos de puntos de

equilibrio que existen.

b) ¿Cuántas órbitas periódicas tiene este sistema para cada valor del parámetro [ ]1,1−∈α ó [0,5]?. ¿Para

qué valor del parámetro α se produce una bifurcación tipo Hopf? ¿Se produce alguna bifurcación? Para

2=α , averiguar la estabilidad y el periodo de las órbitas periódicas existentes. Dibuja la trayectoria y la

órbita correspondiente a la condición inicial y’(0) = 1, y(0) = 1. Obtener también el diagrama de y frente al

tiempo [ ]40,0∈t . ¿Qué ocurre con esta curva solución cuando ±∞→t .?

SOLUCIÓN: a) Estudio los equilibrios.

−−=

=3'

'

xyxx

xy

α

=

=−−⋅

=

0

0

0

3

y

xyx

x

α

El único punto de equilibrio es (0,0), para cualquier valor de alfa. Ejecuto el programa pplane.m y doy un valor de α=-1

10

El punto de equilibrio, que encuentro en este caso, es un sumidero espiral

Tengo el Jacobiano: J = [ alfa-3*x^2, -1] [ 1, 0] En el punto (0,0)

[ alfa, -1] [ 1, 0]

Los autovalores tienen la forma: 012 =+⋅− λαλ

42

1

2

1 2 −±= ααλ

Igualando 042 =−α tengo que 4±=α α=±2. Por tanto:

Para 2>α las raíces son reales y distintas y positivas luego tendremos un foco

inestable.

Para 2=α las raíces son reales dobles tenemos un nodo impropio.

Para 2<α las raíces son complejas:

Para 02 <<− α la parte real es negativa Foco estable. (sumidero espiral)

Para 20 << α la parte real es positiva Foco inestable.

Para 0=α la parte real es cero Centro.

Luego en 0=α tendremos una bifurcación Hopf.

11

Tiene una orbita periódica en α =1 para α = 2 tendremos

el periodo es aproximadamente 7

12

resultado para α=2

La solución se hace periódica porque está en un ciclo límite dando vueltas.

13

3. PROBLEMA 3_FEBRERO 2006 (implicitoDD)

La temperatura u(x, t) en una barra de sección transversal constante y material conductor homogéneo, esta gobernada por la ecuación del calor unidimensional; con condiciones de contorno e iniciales, dadas por:

≤≤+−=

≤=−=

<<>−−+∂∂

=∂∂

xxsenxxu

ttutetu

xtxtetxx

utx

t

u

t

t

0),(1)0,(

0,0),1();1(),0(

10,0),1)(2(),(1

),(2

2

2

π

π

a) Calcular )1,(xu

y lo dibujarla ])1,0[( ∈x

b) Calcular

),2

1( tu

, ]1,0[∈t y dibujarla

c) Estimar ∞→

t

tulím ),2

1(

d) Calcular ]1.0[,

),(

tx

txumáx

Realizar los cálculos con error de truncamiento menor que 10

-2 y mediante un método incondicionalmente

estable.

SOLUCIÓN: DISCRETIZACIÓN PÁGINA 63 APUNTES

a) Calcular )1,(xu

y lo dibujarla ])1,0[( ∈x

Aplico un método regresivo que es incondicionalmente estable. Las condiciones de contorno establecidas son Dirichlet-Dirichlet. Defino las condiciones de contorno en los extremos e inicial, en programas .m, esto es: - Condiciones en los estremos = Condiciones de contorno Dirichlet-Dirichlet: a.m function y=a(t) y=exp(-t)*(1-t); b.m function y=b(t) y=0; - Condición inicial: f.m function y=f(x) y=1-x+sin(pi*x); Finalmente defino la parte forzada de la ecuación del calor: FF.m function y=FF(x,t)

14

y=exp(-t)*(2-t)*(x-1); al método ImplicitoDD.m original le quito la solución exacta que ahora no me la dan y hago ImplicitoDD_ex.m donde tendré que introducir los valores de: c= constante de la ecuación del calor, en este caso =1/pi, dado en el enunciado de la ecuación del calor. m= numero de divisiones que realizo en los cálculos, en la longitud de la barra. Me dará la magnitud del mallado, y por tanto definirá el valor de h. A mayor h, obtendré mayor precisión, ya que el error depende de (k+h^2). En este caso tomamos un valor de m=100. N= número de divisiones que realizo en el tiempo. Es el análogo de m, pero utilizando el tiempo. Definirá el valor de k, que nos dará la precisión, puesto que como expuse anteriormente el error depende de (k+h^2). En este caso tomamos un valor de N=1000. T= tiempo total=1, que nos lo dan en el enunciado del problema. L= Longitud total de la barra=1, que nos lo da, igualmente el enunciado del problema. ImplicitoDD_ex.m function S=ImplicitoDD_ex(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m-1 W(i,1)=f((i)*h); end % Calculo de A A=zeros(m-1); A(1,1)=1+2*la;A(1,2)=-la; for i=2:m-2 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m-1,m-2)=-la;A(m-1,m-1)=1+2*la; % Calculo de Cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(h,(j+1)*k)+la*a((j+1)*k); % Calculo de cjb c(m-1,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-2 c(i,1)=k*FF((i)*h,(j+1)*k); end W=A\(W+c); % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause end for i=1:m-1 S(i,:)=[X(i+1,1) W(i,1)]; end

15

Con este programa, obtengo finalmente una matriz con las distintas posiciones en que he dividido la barra, y los valores que obtengo en la misma, con las condiciones fijadas, transcurrido un minuto. >> S=ImplicitoDD_ex(1/pi,100,1000,1,1) Se omite la lista de valores,por motivos de no alargar excesivamente el documento, y se procede a dibujar directamente los resultados de la columna posición, frente el valor obtenido según la ecuación, transcurrido 1 minuto. >> plot(S(:,1),S(:,2)) >> grid

b) Calcular

),2

1( tu

, ]1,0[∈t y dibujarla

Modifico el programa, y creo otro que me va guardando los valores, es decir, me recoge toda la malla de temperaturas en el tiempo, puesto que el anterior sobrescribía los valores que iban transcurriendo en el tiempo, puesto que solo nos interesaba el resultado final. Ahora, pretendemos ver, la evolución en el tiempo. Utilizo los mismos nombres para los valores de entrada: ImplicitoDD_ex_1.m function Wt=ImplicitoDD_ex_1(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end Espacio=[X] t=0:k:T; % Calculo de Wo for i=1:m-1 W(i,1)=f((i)*h); end %Inicio la Matriz (para que vaya guardando valores) Wt=[W ]; % Calculo de A A=zeros(m-1); A(1,1)=1+2*la;A(1,2)=-la; for i=2:m-2 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m-1,m-2)=-la;A(m-1,m-1)=1+2*la; % Calculo de Cj for j=0:N-1

16

% Calculo de cja c(1,1)=k*FF(h,(j+1)*k)+la*a((j+1)*k); % Calculo de cjb c(m-1,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-2 c(i,1)=k*FF((i)*h,(j+1)*k); end W=A\(W+c); Wt=[Wt W]; end %Incluyo en la matriz Wt los extremos Wat=[]; Wbt=[]; for i=0:N Wat=[Wat a(i*k)]; Wbt=[Wbt b(i*k)]; end Wt=[t;Wat;Wt;Wbt]; Y finalmente ejecuto el programa: >> Wt=ImplicitoDD_ex_1(1/pi,100,200,1,1) Nota resultado programa: con 201 columnas de posiciones en el tiempo y 102 (primera fila del tiempo)+ 101 filas de posiciones en la longitud de la barra.

k=0.005 (T=1 y N=200) y h=0.01 (L=1 y m=100) error de truncamiento k+h^2=0.0051 < 0.01, ya que error depende de k y de h^2. Dibujo el resultado: >> plot(Wt(1,:),Wt(51,:),'r') Nota: posición 51 correspondiente a la mitad de la barra, puesto que la primera posición la asignamos al tiempo.

17

Si pretendieramos dibujar los resultados de todas las posiciones de la malla calculadas, obendríamos algo así: >> plot(Wt(1,:),Wt(2:102,:))

Para saber en otras posiciones, utilizando diferentes colores de líneas: >> plot(Wt(1,:),Wt(51,:),'r') >> hold on >> plot(Wt(1,:),Wt(34,:)) al 33% >> plot(Wt(1,:),Wt(26,:),'g') al 25% >> plot(Wt(1,:),Wt(5,:),'m') al 04% >> plot(Wt(1,:),Wt(2,:),'c') al 00% = extremo a

18

c) Estimar ∞→

t

tulím ),2

1(

Ejecuto el programa anteriormente creado con los siguientes valores (Aumentando T a 10): Wt=ImplicitoDD_ex_1(1/pi,100,1000,10,1) Nota resultado: programa con 1001 columnas de posiciones en el tiempo y 102 (tiempo)+ 101 filas de posiciones en la longitud de la barra. k=0.01 y T=10 (vamos al límite en los calculos del error de truncamiento). >> plot(Wt(1,:),Wt(51,:),'r') >> grid

Se ve claramente que tiende a cero, y eso que hemos probado con un valor de tiempo bastante pequeño T=10. Tomamos este valor de tiempo, por motivos del tamaño de cálculo, puesto que si lo aumentamos más, y nos queremos ceñír al valor del error de truncamiento la matriz de cálculo aumenta enormemente.

19

d) Calcular ]1.0[,

),(

tx

txumáx

Con los resultados obtenidos en la matriz del apartado anterior, busco la matriz de de máximos de cada columna (eliminando la columna correspondiente al tiempo y puniéndolo en vertical). >> A=max(Wt(2:102,:))'; Busco el máximo de esa matriz A >> max(A) ans = 1.5511 Luego obtengo un valor máximo de 1.5511

20

4. PROBLEMA 4_FEBRERO 2006_BOLETIN EJ 11_metodo disparo.

Representemos con u el potencial electrostático entre dos esferas metálicas concéntricas de radio R1 y R2 con R1 < R2, tales que el potencial de la esfera interior se mantenga constante en V1 volts y el potencial de la esfera exterior sea 0 volts. El potencial de la región situada entre ambas esferas está regido por la ecuación de Laplace, que en esta aplicación particular se reduce a

022

=+dr

du

rdr

ud

21 RrR ≤≤, 11)( VRu =

, 0)( 2 =Ru

Suponga que R1= 2 plg, R2 = 4 plg, y que V1 = 110 volts. a) Aproxime u(3) y u'(3) por medio del algoritmo del disparo lineal, tomando n = 10,20 Y 40.

b) Compare los resultados obtenidos en el apartado (a) con el potencial real.

−=

12

211)(RR

rR

r

RVru

SOLUCIÓN: EXPLICACIÓN TEÓRICA DEL MÉTODO Para utilizar el método del disparo, y que nos compare los resultados obtenidos, con el valor de la solución del potencial real, tengo que meter en el programa que creamos en prácticas, disparo.m, dicha solución. Además aproximaremos los valores de la derivada de dicha solución, por lo tanto, definimos, ya sustituyendo valores, la solución del potencial real en Matlab como: >> clear >> syms X >> diff(110*2/X*((4-X)/(4-2))) ans = -220/X^2*(2-1/2*X)-110/X Si derivamos, la solución manualmente, nos da el mismo resultado. Posteriormente introduciremos estas fórmulas de solución en el programa de disparo. Utilizando el método de disparo lineal, resolvemos los dos problemas de valor inicial y realizamos los cambios de variable necesarios, esto es:

'2

'' ur

u −= 42 ≤≤ r , 110)2( =u , 0)4( =u

'2

'' ur

u −= 42 ≤≤ r , 110)2( =u , 0)2(' =u ,

22

21

2'

'

ur

u

uu

−=

=

'2

'' vr

v −= 42 ≤≤ r , 0)2( =v , 1)2(' =v ,

22

21

2'

'

vr

v

vv

−=

=

21

Defino los ficheros ftysis1.m y ftysis2.m, e introduzco los sistemas: ftysis1.m function Z=ftysis1(r,Z) u1=Z(1); u2=Z(2); Z=[u2, -2/r*u2]'; ftysis2.m function Z=ftysis2(r,Z) v1=Z(1); v2=Z(2); Z=[v2, -2/r*v2]'; Posteriormemte introduzco la solución y su derivada en el programa de disparo.m Disparo.m function D=disparo(F1,F2,a,b,alfa,beta,h) % % Datos de entrada: % F1 y F2 son los dos sistemas de ecuaciones de primer orden almacenados % como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tamaño de paso % % Datos de salida % D=[T,Y,errorY,Yprima,errorYprima], donde T es el vector con las abscisas, % Y es el vector solucion, Yprima el vector con la derivada de la solucion % y los vectores con el error cometido al calcular Y e Yprima % % solucion del sistema F1 R=a:h:b; Za=[alfa, 0]; [R,Z]=ode45(F1,R,Za); U=Z(:,1); Uprima=Z(:,2); % solucion del sistema F2 Za=[0, 1]; [R,Z]=ode45(F2,R,Za); V=Z(:,1); Vprima=Z(:,2); % solucion del problema de contorno y error cometido % AQUI HAY METER LA ECUACION SOLUCION Y DERIVADA CORRESPONDINETE M=(b-a)/h; Y=U+(beta-U(M+1))*V/V(M+1); Ysol=(220./R).*(4.-R)/(2.); errorY=abs(Ysol-Y); % derivada de la solucion del problema de contorno y error cometido Yprima=Uprima+(beta-U(M+1))*Vprima/V(M+1); Yprimasol=(-220./R.^2).*(2.-(1/2).*R)-110./R; errorYprima=abs(Yprimasol-Yprima); % datos de salida format long D=[R,Y,errorY,Yprima,errorYprima];

22

Para n=10 implica que el valor que tengo que dar a h(definido como tamaño de paso)=0.2, puesto que abs(a-b)/n=abs(2-4)/10=0.2 >> D=disparo('ftysis1','ftysis2',2,4,110,0,0.2) D = 1.0e+002 * 0.02000000000000 1.10000000000000 0 -1.10000002928300 0.00000002928300 0.02200000000000 0.89999982593961 0.00000017406039 -0.90909061715605 0.00000029193486 0.02400000000000 0.73333324217538 0.00000009115795 -0.76388874360526 0.00000014528363 0.02600000000000 0.59230764433153 0.00000004797616 -0.65088750209970 0.00000007186479 0.02800000000000 0.47142854633543 0.00000002509314 -0.56122445616981 0.00000003362611 0.03000000000000 0.36666665363108 0.00000001303559 -0.48888887573957 0.00000001314932 0.03200000000000 0.27499999305415 0.00000000694585 -0.42968749798647 0.00000000201353 0.03400000000000 0.19411764283214 0.00000000422668 -0.38062284141524 0.00000000404500 0.03600000000000 0.12222221878220 0.00000000344002 -0.33950618011108 0.00000000727157 0.03800000000000 0.05789473307582 0.00000000376628 -0.30470915016280 0.00000000888857 0.04000000000000 0 0 -0.27500001464150 0.00000001464150

Obtengo: 1ª Columna = Posición 2ª Columna = Valor obtenido por el método del disparo para la función potencial. 3ª Columna = Error obtenido entre el valor obtenido por el método del disparo y la solución real. 4ª Columna = Valor obtenido por el método del disparo para la derivada de la función potencial. 5ª Columna = Error obtenido entre el valor obtenido por el método del disparo para la derivada de la función potencial y la solución real de la derivada de la función potencial. Vemos que en la posición 3=(0.03*1.0e+002), obtenemos un valor del potencial de 1.0e+002 *0.36666665363108, cometiendo un error de 1.0e+002 *0.00000001303559 y el valor de la derivada de la función potencial, en este punto, sería -1.0e+002 *0.48888887573957, cometiendose, en este caso un error, con respecto a la derivada de la función potencial real de 1.0e+002 *0.00000001314932. Se puede observar, como el error comoetido en el caso de la derivada es algo superior al obtenido directamente en la función.

23

Rescatando solo la solución para el punto que se nos pide, de toda la lista de solución, para el caso en que n=20 h=0.1 >> D=disparo('ftysis1','ftysis2',2,4,110,0,0.1) D = 1.0e+002 * 0.03000000000000 0.36666665363108 0.00000001303559 -0.48888887573957 0.00000001314932

Para el caso en que n=40 h=0.05 >> D=disparo('ftysis1','ftysis2',2,4,110,0,0.05) D = 1.0e+002 * 0.03000000000000 0.36666665363108 0.00000001303559 -0.48888887573957 0.00000001314932 En todos los casos me sale con la misma precisión. Al estar en el punto medio no gano precisión. Si me hubieran dicho u(2.4) y u’(2.4). >> D=disparo('ftysis1','ftysis2',2,4,110,0,0.2) D = 1.0e+002 * 0.02400000000000 0.73333324217538 0.00000009115795 -0.76388874360526 0.00000014528363

>> D=disparo('ftysis1','ftysis2',2,4,110,0,0.1) D = 1.0e+002 * 0.02400000000000 0.73333324217538 0.00000009115795 -0.76388874360526 0.00000014528363

Tampoco gano precisión en este caso. Pruebo ahora, con valores más grandes de n. Por ejemplo, para n=100 h=0.02 >> D=disparo('ftysis1','ftysis2',2,4,110,0,0.02) D = 1.0e+002 * 0.03000000000000 0.36666665363108 0.00000001303559 -0.48888887573957 0.00000001314932

Luego, parece que por este método no puedo obtener mayor precisión, aunque aumente el número de cálculos.

24

Y haciéndolo por el método de las diferencias finitas. Inicialmente generamos los ficheros donde figuren las funciones p(t), q(t) y r(t), es decir: p.m function y=p(x) y=-2./x; q.m function y=q(x) y=0.; r.m function y=r(x) y=0.; Seguidamente, construyo el programa diferenciasfinitas.m, que llama la los anteriores y nos da la solución del problema de contorno, así como su derivada y los errores cometidos, entre éstas, en el caso en que h=0.02. diferenciasfinitas.m function D=diferenciasfinitas(p,q,r,a,b,alfa,beta,h) % % Datos de entrada % p, q y r son los coeficientes de la ecuacion de segundo orden % introducidos como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tamano de paso % % Datos de salida % D=[T',Y,errorY,Yprima, errorYprima] donde T' es el vector de las abscisas % de orden (M+2)x1, Y el vector solucion, errorY el error cometido, Yprima % la derivada de la solucion y errorYprima el error cometido en la derivada % M=((b-a)/h)-1; X=a+h:h:a+h*M; % construccion de la matriz tridiagonal de orden MxM for i=1:M A(i,i)=2+h.^2.*feval(q,X(i)); end for i=1:M-1 A(i,i+1)=-1+(h/2).*feval(p,X(i)); A(i+1,i)=-1-(h/2).*feval(p,X(i+1)); end % construccion del vector de los terminos independientes de orden 1xM B(1)=-(h.^2).*feval(r,X(1))+(1+(h/2).*feval(p,X(1))).*alfa; B(M)=-(h.^2).*feval(r,X(M))+(1-(h/2).*feval(p,X(M))).*beta; for i=2:M-1 B(i)=-(h.^2).*feval(r,X(i)); end % resolucion del sistema tridiagonal para hallar la solucion Y Y=A\B'; Y=[alfa; Y; beta]; % vector con las abscisas X=[a X b]; % solucion exacta del problema y error cometido CAMIBIAR SOLUCION YE=(220./X).*(4.-X)/(2.); errorY=abs(Y-YE'); % construccion del vector con la derivada de la solucion Yprima y error Yprima(1)=(Y(2)-Y(1))/h;

25

Yprima(M+2)=(Y(M+2)-Y(M+1))/h; for i=2:M+1 Yprima(i)=(Y(i+1)-Y(i-1))/(2.*h); end errorYprima=abs(((-220./X.^2).*(2.-(1/2).*X)-110./X)-Yprima); % CAMBIAR POR LA DERIVADA DE LA SOLUCION % matriz con los datos de salida format long D=[X' Y errorY Yprima' errorYprima']; >> D=diferenciasfinitas('p','q','r',2,4,110,0,0.2) D = 1.0e+002 * 0.02000000000000 1.10000000000000 0 -1.00000000000000 0.10000000000000 0.02200000000000 0.90000000000000 0.00000000000000 -0.91666666666667 0.00757575757576 0.02400000000000 0.73333333333333 0 -0.76923076923077 0.00534188034188 0.02600000000000 0.59230769230769 0 -0.65476190476190 0.00387433079741 0.02800000000000 0.47142857142857 0.00000000000000 -0.56410256410256 0.00287807430665 0.03000000000000 0.36666666666667 0.00000000000000 -0.49107142857143 0.00218253968254 0.03200000000000 0.27500000000000 0 -0.43137254901961 0.00168504901961 0.03400000000000 0.19411764705882 0.00000000000000 -0.38194444444444 0.00132160707420 0.03600000000000 0.12222222222222 0.00000000000000 -0.34055727554180 0.00105110270229 0.03800000000000 0.05789473684211 0.00000000000000 -0.30555555555556 0.00084641428132 0.04000000000000 0 0 -0.28947368421053 0.01447368421053

La colocación de las columnas, es similar a la establecida para el programa de disparo.m. Observamos como en este método de diferencias finitas, obtenemos mayor precisión, que con el anterior. En el caso del valor de la función obtenemos un error nulo para 16 cifras decimales y de 1.0e+002 *0.00218253968254, para el valor de la derivada, con respecto al real. Decir, que el valor del error que obtenemos en la derivad, siempre será superior al que obtenemos en la función directamete, en cualquier método que utilicemos.

26

5. PROBLEMA 1_SEPTIEMBRE 2006

Las ecuaciones del movimiento de un satélite puesto en órbita desde la estación espacial internacional son:

,''

,''

3

3

r

yy

r

xx

µ

µ

=

−=

donde 22 yxr += es la distancia a la Tierra, situada en el origen de coordenadas y

( )2

3

309,398598s

kmmMg sT ≈+⋅=µ es el llamado parámetro gravitacional, en el que se considera nula la

masa del satélite respecto a la masa de la Tierra. a) Considerando las condiciones iniciales siguientes, que nos indican la situación de la estación espacial

y las componentes de la velocidad inicial: X(0)=42167.911 km, y(0)=0 km, x’(0)=-1.07168 km/s, y’(0)=28827 km/s Resuelve el problema del valor inicial, encontrando la posición y distancia del satélite respecto a la Tierra a las 12 horas y a las 24 horas después de su lanzamiento.

b) Dado que las variables x e y dependen del tiempo, podemos considerar la trayectoria del satélite en el espacio situada en un plano que contenga el ecuador terrestre. Representar la trayectoria, situando en el origen de coordenadas una esfera de radio RT=6378.1 km.

SOLUCIÓN: Utilizo el programa odesolve.m y defino el número de ecuaciones=4, definiendo las siguientes ecuaciones (pasando las derivadas segundas a sistemas decuaciones). Finalmente doy valores a las condiciones iniciales en la pantalla.

x’=z z’= -nu*x/(x^2+y^2)^(3/2) y’=p p’= -nu*y/(x^2+y^2)^(3/2)

27

Resuelvo el problema, pulsando el botón, Solve in a new window.

En t=12 la posición es; x=42155 ;y=345920 y en t=24 la posición es; x=42142 ;y=691850

28

Finalmente, cambio el resultado de salida a 3 dimensiones, obteniendo:

29

6. PROBLEMA 2_SEPTIEMBRE 2006_BOLETIN EJ 5 ecuación Duffing

Consideremos el sistema de ecuaciones diferenciales1:

3'

'

cubuavv

vu

++=

=

Como un modelo de un sistema con masa unidad y resorte no lineal y no forzado.

a) ¿Existe algún valor de los parámetros para los que el sistema anterior es un sistema Hamiltoniano?.

En caso afirmativo encontrar la función hamiltoniana H(u,v).

b) Consideremos el caso en el que b=16, y c=14. Calcular los puntos de equilibrio y clasificarlos. Usando

el ordenador obtener el plano de fases correspondientes a diversas soluciones con diferentes

constantes de amortiguación, a=0 (caso no amortiguado) y a=1,4. Para dichas órbitas dibuja los

diagramas t frente a u, así como t frente a v. ¿Qué diferencias observas entre el caso no amortiguado y

el caso amortiguado?

c) Hacer lo mismo para el caso en el que b=16, y c=-4. ¿Existen órbitas heteroclinas conectando dos

equilibrios?. Dibuja las variedades estables e inestables de los equilibrios tipo silla. Dibuja las curvas

de nivel H(u,v)=15 y H(u,v)=16.

d) Considerar por último el caso en el que b=-1, y c=1. Encontrar y clasificar todos los puntos de equilibrio

para cada uno de los casos a=0, y a=1. ¿En que caso existen órbitas hamiltonianas?

SOLUCIÓN:

a) ¿Existe algún valor de los parámetros para los que el sistema anterior es un sistema Hamiltoniano?.

En caso afirmativo encontrar la función hamiltoniana H(u,v).

u'= v =v

H

∂∂

v’= a*v+b*u+c*u^3 =u

H

∂∂

( )uvdvvH φ+=⋅= ∫ 2

2

( )

+

∂∂

−=++ uv

ucubuav φ

2

23

( )ucubuav '3 φ−=++

( )42

42 uc

ubavuu −−−=φ

422

422 uc

ubavu

vH −−−=

0=→−=∂∂

aauvv

H

⇒++=∂∂

− 3cubuavu

Hpara todo b y c

Para que el sistema sea Hamiltoniano el valor de a=0, pudiendo tener b y

c cualquier valor. Función Hamiltoniana H=v^2/2-(b/2)*u^2-(c/4)*u^4

30

b) Consideremos el caso en el que b=16, y c=14. Calcular los puntos de equilibrio y clasificarlos. Usando

el ordenador obtener el plano de fases correspondientes a diversas soluciones con diferentes

constantes de amortiguación, a=0 (caso no amortiguado) y a=1,4. Para dichas órbitas dibuja los

diagramas t frente a u, así como t frente a v. ¿Qué diferencias observas entre el caso no amortiguado y

el caso amortiguado?

Utilizo el programa pplane.m e introduzco las ecuación del problema.

1 En el boletín viene como ecuación de Duffing 0''' 3 =+++ lxkxcxmx , donde k=b y c=l

31

Ejecuto dentro del programa, las siguientes opciones, obteniendo: Solutions/plot stable and unstable orbits Solutions/show nullclines Soluciones en (0,1), (1,0)

32

Solutions/plot stable and unstable orbist

Soluciones en (0,1), (1,0)

Resultlado: La simetría total que existe entre las gráficas de u y v respecto al tiempo y respecto a la posición de equilibrio (0,0), se pierde conforme el sistema se amortigua, es decir, el valor del parámetro a, aumenta.

33

c) Hacer lo mismo para el caso en el que b=16, y c=-4. ¿Existen órbitas heteroclinas conectando dos equilibrios?. Dibuja las variedades estables e inestables de los equilibrios tipo silla. Dibuja las curvas de nivel H(u,v)=15 y H(u,v)=16.

Solutions/plot stable and unstable orbist Solutions/show nullclines Soluciones en (0,1), (1,0)

Orbita heteroclina interseccion de una rama de variedad estable de uno de los equilibrios silla con la inestable de otro. The following equilibrium points have been calculated: (-2.0000, 0.0000) Spiral equilibrium point. (2.0000, 0.0000) Spiral equilibrium point. (0.0000, 0.0000) Saddle point.

34

Soluciones en (0,1), (1,0)

Introduzco la función Hamiltoniana = v^2/2-16/2*u^2+4/4*u^4, obtenida en el apartado a), para conseguir las curvas de nivel.

35

Con a=1.4

The following equilibrium points have been calculated: (0.0000, 0.0000) Saddle point. (-2.0000, 0.0000) Spiral source. (2.0000, 0.0000) Spiral source.

36

v^2/2-1.4*v*u-16/2*u^2+4/4*u^4

37

Si calculamos las curvas de nivel H(u,v)=15 y 16 para el caso del apartado b), es decir con b=16 y c=4, obtenemos;

38

Y con a=1.4

Nota: Con a=1.4 se cortan las curvas de nivel, con a=0 no.

39

d) Considerar por último el caso en el que b=-1, y c=1. Encontrar y clasificar todos los puntos de equilibrio

para cada uno de los casos a=0, y a=1. ¿En que caso existen órbitas homoclinas?

En el caso de a=0 existen órbitas homoclinas.

40

Soluciones en (0,1), (0,2) y (2,0)

v^2/2-1*v*u+1/2*u^2-1/4*u^4

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral source. (-1.0000, 0.0000) Saddle point. (1.0000, 0.0000) Saddle point.

41

7. PROBLEMA 3_SEPTIEMBRE 2006 = EJERCICIO 3_FEBRERO 2006 problema 4

8. PROBLEMA 1_DICIEMBRE 2006 = BOLETIN EJ 1_Resuelto practica 3

Un circuito RC está modelado por la ecuación:

)(tVVdt

dVRC c

c =+

donce Vc es el voltaje a través del condensador. Supongamos que el tiempo es medido en segundo, la

resistencia es de R=2.3Ω y la capacitancia C=1.2 F.

Se pide:

a) Si el voltaje suministrado por la fuente de tensión viene dado por

≥→→

<→→

50

53)(

tsi

tsitV

Dibujar, en el intervalo de tiempo [0,6], la solución correspondiente a la condición inicial Vc(0)=0. ¿Cuál es el

valor de Vc en t=6?

b) Supongamos ahora que la función V(t) viene dada por una onda cuadrada de amplitud 3 voltios,

periodo 32 segundos y ciclo activo del 25%, es decir

V(t)= 3sqw(t,32,25)

c) Consideremos finalmente que la función V(t) viene dada por

V(t)= Acos(ωt)

Donde A=5 y ω= 1,50,100. Dibujar la solución correspondiente a la condición inicial Vc(0)=0. ¿Cómo varian la

amplitud A y la frecuencia ω de la señal de salida?.

42

9. PROBLEMA 2_DICIEMBRE 2006

Consideremos el sistema de ecuaciones diferenciales:

2

2

'

'

xyxy

xxyx

+−−=

−−=

µ

µ

Se pide:

a) Encuentra y clasifica los distintos tipos de puntos de equilibrio que existen. Dibujar el plano de fases en

cada uno de los casos.

b) ¿Cuántas órbitas periódicas tiene este sistema al variar el parámetroµ, en el entorno del origen? En

caso afirmativo averiguar la estabilidad y el periodo de las órbitas periódicas existentes. ¿Se produce

alguna bifurcación? ¿Para α aprox. -0.1, que bifurcación tiene lugar? Dibujar el plano de fases

correspondiente al valor donde tiene lugar esta segunda bifurcación.

SOLUCIÓN: Utilizo el programa pplane.m, e inserto el sistema de ecuaciones diferenciales dadas en el enunciado y procedo a dar diversos valores al parámetro nu. Para nu=-1

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral source.

43

(1.0000, 0.0000) Saddle point. Para nu=-0.5

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral source. (0.8333, 0.2778) Saddle point.

44

Para nu=-0.1

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral source. (0.9182, 0.7512) Saddle point.

45

Para nu=0

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral equilibrium point. (1.0000, 1.0000) Saddle point.

46

Para nu=0.1

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral sink. (1.1222, 1.3716) Saddle point. Para nu=0 tiene lugar una bifuración tipo Hopf, en la que el equilibrio inestable espiral pasa a ser sumidero espiral.

47

Para nu=1

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral sink.

48

10. PROBLEMA 1_JUNIO 2007_metodo disparo

Aunque q(t)<0, el problema de contorno;

y'’+4*y=cos(t), y(0)=0, y(pi/4)=0, 0<=t<=pi/4 tiene solución única dada por y(t)=-1/3*cos(2*t)-sqrt(2)/6*sin(2*t)+1/3*cos(t). Usar el método de disparo para aproximar la solución y su derivada. Calcular el error cometido para cada una de ellas tomando h=pi/20.

SOLUCIÓN: EXPLICACIÓN TEÓRICA Al igual que en el problema del apartado 4 de esta recopilación, para utilizar el método del disparo, y que nos compare los resultados obtenidos, con el valor de la solución real del problema de contorno dado en el enunciado, tengo que meter, en el programa que creamos en prácticas, disparo.m, dicha solución. Además aproximaremos los valores de la derivada de dicha solución, por lo tanto, definimos, ya sustituyendo valores, la solución del potencial real en Matlab como: >> syms T >> diff(-1/3*cos(2*T)-sqrt(2)/6*sin(2*T)+1/3*cos(T)) ans = 2/3*sin(2*T)-1/3*2^(1/2)*cos(2*T)-1/3*sin(T) Si derivamos, la solución única manualmente, nos da el mismo resultado. Posteriormente introduciremos estas fórmulas de solución en el programa de disparo. Utilizando el método de disparo lineal, resolvemos los dos problemas de valor inicial y realizamos los cambios de variable necesarios, esto es:

)cos(4'' tyy +−= 4

≤≤ t , 0)0( =y , 0)4( =π

y

)cos(4'' tuu +−= 4

≤≤ t , 0)0( =u , 0)0(' =u , )cos(4'

'

12

21

tuu

uu

−=

=

vv 4'' −= 4

≤≤ t , 0)4( =π

v , 1)4(' =π

v ,

12

21

4'

'

vv

vv

−=

=

49

Defino los ficheros ftysis1.m y ftysis2.m, e introduzco los sistemas: ftysis1.m function Z=ftysis1(t,Z) u1=Z(1); u2=Z(2); Z=[u2, -4*u1+cos(t)]'; ftysis2.m function Z=ftysis2(t,Z) v1=Z(1); v2=Z(2); Z=[v2, -4*v1]'; Posteriormemte introduzco la solución y su derivada en el programa de disparo.m disparo.m function D=disparo(F1,F2,a,b,alfa,beta,h) % % Datos de entrada: % F1 y F2 son los dos sistemas de ecuaciones de primer orden almacenados % como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tamaño de paso % % Datos de salida % D=[T,Y,errorY,Yprima,errorYprima], donde T es el vector con las abscisas, % Y es el vector solucion, Yprima el vector con la derivada de la solucion % y los vectores con el error cometido al calcular Y e Yprima % % solucion del sistema F1 T=a:h:b; Za=[alfa, 0]; [T,Z]=ode45(F1,T,Za); U=Z(:,1); Uprima=Z(:,2); % solucion del sistema F2 Za=[0, 1]; [T,Z]=ode45(F2,T,Za); V=Z(:,1); Vprima=Z(:,2); % solucion del problema de contorno y error cometido % AQUI HAY METER LA ECUACION SOLUCION Y DERIVADA CORRESPONDINETE M=(b-a)/h; Y=U+(beta-U(M+1))*V/V(M+1); errorY=abs((-1/3*cos(2*T)-sqrt(2)/6*sin(2*T)+1/3*cos(T))-Y); % derivada de la solucion del problema de contorno y error cometido Yprima=Uprima+(beta-U(M+1))*Vprima/V(M+1); errorYprima=abs((2/3*sin(2*T)-1/3*2^(1/2)*cos(2*T)-1/3*sin(T))-Yprima); % datos de salida format long D=[T,Y,errorY,Yprima,errorYprima];

50

>> D=disparo('ftysis1','ftysis2',0,pi/4,0,0,pi/20) D = 0 0 0 -0.47140454095415 0.00000002016312 0.15707963267949 -0.06062540662318 0.00000001064837 -0.29446582920272 0.00000000420336 0.31415926535898 -0.09119581124257 0.00000000595682 -0.09252308601187 0.00000001246326 0.47123889803847 -0.08961337709552 0.00000000012159 0.11092988653885 0.00000001538703 0.62831853071796 -0.05749949835150 0.00000000563648 0.29243726451175 0.00000001256208 0.78539816339745 0 0.00000000000000 0.43096439069914 0.00000001557201

Obtengo: 1ª Columna = Tiempo 2ª Columna = Valor obtenido por el método del disparo para la función. 3ª Columna = Error obtenido entre el valor obtenido por el método del disparo y la solución real. 4ª Columna = Valor obtenido por el método del disparo para la derivada de la función. 5ª Columna = Error obtenido entre el valor obtenido por el método del disparo para la derivada de la función y la solución real de la derivada de la función potencial. Observo como en las los extremos no se comete error alguno, puesto que tomo el valor directamente de las condiciones de los extremos. Por otro lado, el error cometido en la derivada de la solución es ligeramente superior al cometido en el cálculo de la función, como era de esperar.

51

11. PROBLEMA 2_JUNIO 2007_parecido a problema2_Diciembre 2006

Considerando el sistema de ecuaciones diferenciales:

( )( )1'

'

−+−=

+−=

xxyy

xxyx

λλ

Se pide: a) encuentra y clasifica los puntos de equilibrio existentes en función del parámetro λ. b) Para λ=1 integrar numéticamente el sistema en el intervalo [0,5] y dibujar la trayectoria correspondiente

a la condición inicial x(0)=2, y(0)=-3. c) ¿Qué bifurcación experimenta el sistema al variar el parámetro λ en un entorno del origen?. ¿Cuántas

órbitas periódicas surgen de ella? En caso afirmativo averiguar la estabilidad y el periodo de las órbitas periódicas existentes para λ=-0.09.

d) Dibujar el plano de fases para λ=-0.09 y λ=-0.11. ¿Se experimenta alguna bifurcación cuando λ pertenece [-0.09,-011]?. En dicho caso, representar el plano de fases correspondiente al valor donde tiene lugar esta bifurcación.

SOLUCIÓN:

a) encuentra y clasifica los puntos de equilibrio existentes en función del parámetro λ. Nota: ver problema 2 diciembre 2006

52

Para λ=1 integrar numéricamente el sistema en el intervalo [0,5] y dibujar la trayectoria correspondiente a la condición inicial x(0)=2, y(0)=-3.

Con pplane.m e introduciendo las siguientes ecuaciones: x’ = y-x*(landa+x) y’ = -landa*y+x*(x-1)

Y utilizando el programa ode45sistema.m y represenandolo sobre la misma gráfica, para lo cual inicialmente tengo que definir la siguiente función ftysis.m, a la que posteriormente llamaré en el programa ode45sistema.m. Utilizando el mismo valor del parámetro landa=1

53

ftysis.m function Z=ftysis(t,E) x=E(1); y=E(2); Z=[y-x-x^2,-y+x^2-x]'; ode45sistema.m function S=ode45sistema(ftysis,a,b,Za,M) % Entradas: % a,b marcan el intervalo de tiempo % ftysis es la funcion % a y b extremos del tiempo de calculo % Za=vector condiciones iniciales % M= numero de pasos %Salidas %S=[T' X'] donde: %T es el tiempo dividido en el numero de pasos %X=[x1(t),...,xn(t)], x e y h=(b-a)/M; T=a:h:b; opts=odeset('RelTol',10^(-4)); [T X]=ode45(ftysis,T,Za,opts); format long S=[T X]; >> S=ode45sistema('ftysis',0,5,[2 -3],10) S = 0 2.00000000000000 -3.00000000000000 0.50000000000000 0.03414996107742 -1.79646809181368 1.00000000000000 -0.55004617192919 -0.90691390328695 1.50000000000000 -0.68448603262418 -0.12386314139233 2.00000000000000 -0.50361427780841 0.30896311106946 2.50000000000000 -0.21058942116802 0.37191730963748 3.00000000000000 -0.00641928155527 0.26491570819308 3.50000000000000 0.07276860581297 0.14398272893951 4.00000000000000 0.07873818758694 0.05844626038688 4.50000000000000 0.05759922097117 0.01044546207211 5.00000000000000 0.03315900472394 -0.01023158831836

>> plot(S(:,2),S(:,3))

Obtengo la misma curva, a trazos, porque he utilizado solo 10 tramos, pero si hubiera utilizado más serían idénticas.

54

b) ¿Qué bifurcación experimenta el sistema al variar el parámetro λ en un entorno del origen?. ¿Cuántas órbitas periódicas surgen de ella? En caso afirmativo averiguar la estabilidad y el periodo de las órbitas periódicas existentes para λ=-0.09.

Para landa=0 tiene lugar una bifuración tipo Hopf, en la que el equilibrio inestable espiral pasa a ser sumidero espiral.

The following equilibrium points have been calculated: (0.0000, 0.0000) Spiral source. (0.9249, 0.7721) Saddle point.

55

The following equilibrium points have been calculated: (0.9118, 0.7311) Saddle point. (0.0000, 0.0000) Spiral source.

56

El periodo es de aproximadamente 9 segundos Los puntos dentro de la órbita tienden a el y los incluidos en las ramificaciones del punto silla y la órbita también.

c) Dibujar el plano de fases para λ=-0.09 y λ=-0.11. ¿Se experimenta alguna bifurcación cuando λ pertenece [-0.09,-011]?. En dicho caso, representar el plano de fases correspondiente al valor donde tiene lugar esta bifurcación.

57

12. PROBLEMA 3_JUNIO 2007 CrankNicolsonDD

La temperatura u(x,t) en una barra de sección transversal constante y material conductor homogéneo, está gobernada por la ecuación del calor unidimensional; con condiciones de contorno iniciales, dadas por:

( ) ( ) ( )

( ) ( )( )

≤≤=

≥==

<<>++∂∂

=∂∂

10,00,

,0,0,2;0,0

10,0,1,,2

2

xxu

ttutu

xtsenxttxx

utx

t

u

π

a) Calcular y dibujar u(x,1), ( )π2,0∈x

b) Calcular y dibujar u(π/2,t), ( )1,0∈t

c) Calcular u(π,10) Usar el método de Crack-Nicolson para realizar los cálculos. SOLUCIÓN: DISCRETIZACIÓN TEÓRICA PAG 65 APUNTES

a) Calcular y dibujar u(x,1), ( )π2,0∈x

Las condiciones de contorno establecidas son Dirichlet-Dirichlet. Defino las condiciones de contorno en los extremos e inicial, en programas .m, esto es: - Condiciones en los estremos = Condiciones de contorno Dirichlet-Dirichlet: a.m function y=a(t) y=0; b.m function y=b(t) y=0; - Condición Inicial f.m function y=f(x) y=0; Finalmente defino la parte forzada de la ecuación del calor: FF.m function y=FF(x,t) y=(1+t)*sin(t); Modifico el archivo ImplicitoDD_ex_1, para crear el archivo CrankNicolsonDD.m, de tal modo que tengo que modificar la matriz A (tal y como me indica las discretización de los apuntes de clase), introducir una nueva matriz B (con la forma que me indican la discretización de los mismos apuntes) y modificar la matriz C (tal y como aparece en la discretización, con lo cual obtengo el siguiente archivo, en el cual utilizo las mismas entradas que en el original, y que ya quedaron explicadas en el ejercicio correspondiente. CrankNicolsonDD.m function Wt=CrankNicolsonDD(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end Espacio=[X]

58

t=0:k:T; % Calculo de Wo for i=1:m-1 W(i,1)=f((i)*h); end %Inicio la Matriz (para que vaya guardando valores) Wt=[W ]; % Calculo de A A=zeros(m-1); A(1,1)=2+2*la;A(1,2)=-la; for i=2:m-2 A(i,i)=2+2*la; A(i,i-1)=-la; A(i,i+1)=-la; end A(m-1,m-2)=-la; A(m-1,m-1)=2+2*la; % Calculo de B B=zeros(m-1); B(1,1)=2-2*la;B(1,2)=la; for i=2:m-2 B(i,i)=2-2*la;B(i,i-1)=la;B(i,i+1)=la; end B(m-1,m-2)=la;B(m-1,m-1)=2-2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(h,(j+1/2)*k)+la*a((j+1)*k)+la*a(j*k); % Calculo de cjb c(m-1,1)=k*FF((m-1)*h,(j+1/2)*k)+la*b((j+1)*k)+la*b(j*k); % Calculo del resto de cj for i=2:m-2 c(i,1)=k*FF((i)*h,(j+1/2)*k); end W=A\(B*W+c); Wt=[Wt W]; % ???WW=[a((j+1)*k); W ; b((j+1)*k)]; % ???plot(X ,WW) % pause end %Incluyo en la matriz S los extremos Wat=[]; Wbt=[]; for i=0:N Wat=[Wat a(i*k)]; Wbt=[Wbt b(i*k)]; end Wt=[t;Wat;Wt;Wbt]; format long

59

>> Wt=CrankNicolsonDD(1,20,10,1,2*pi) Espacio = 0 0.31415926535898 0.62831853071796 0.94247779607694 1.25663706143592 1.57079632679490 1.88495559215388 2.19911485751286 2.51327412287183 2.82743338823081 3.14159265358979 3.45575191894877 3.76991118430775 4.08407044966673 4.39822971502571 4.71238898038469 5.02654824574367 5.34070751110265 5.65486677646163 5.96902604182061 6.28318530717959 Wt = Columns 1 through 6 0 0.10000000000000 0.20000000000000 0.30000000000000 0.40000000000000 0.50000000000000 0 0 0 0 0 0 0 0.00191549646788 0.00737388630019 0.01579941816551 0.02711829529191 0.04126544631212 0 0.00243264780524 0.00995925201882 0.02249645012465 0.03999395761120 0.06245128501934 0 0.00257226983511 0.01081777288480 0.02514552399316 0.04576868632116 0.07281944744878 0 0.00260996539758 0.01109289548143 0.02613760314658 0.04822131340217 0.07765817635088 0 0.00262014255052 0.01117887393107 0.02649364898017 0.04921388350979 0.07981540327702 0 0.00262289018862 0.01120524510135 0.02661721627457 0.04959929041865 0.08073717486494 0 0.00262363193207 0.01121321635552 0.02665895512540 0.04974373471538 0.08111603196745 0 0.00262383192379 0.01121559403280 0.02667271375757 0.04979610059922 0.08126580271719 0 0.00262388493161 0.01121628194435 0.02667705346441 0.04981403443708 0.08132111024589 0 0.00262389558876 0.01121642870670 0.02667803398435 0.04981831022960 0.08133495326165 0 0.00262388493161 0.01121628194435 0.02667705346441 0.04981403443708 0.08132111024589 0 0.00262383192379 0.01121559403280 0.02667271375757 0.04979610059922 0.08126580271719 0 0.00262363193207 0.01121321635552 0.02665895512540 0.04974373471538 0.08111603196745 0 0.00262289018862 0.01120524510135 0.02661721627457 0.04959929041865 0.08073717486494 0 0.00262014255052 0.01117887393107 0.02649364898017 0.04921388350979 0.07981540327702 0 0.00260996539758 0.01109289548143 0.02613760314658 0.04822131340217 0.07765817635088 0 0.00257226983511 0.01081777288480 0.02514552399316 0.04576868632116 0.07281944744878 0 0.00243264780524 0.00995925201882 0.02249645012465 0.03999395761120 0.06245128501934 0 0.00191549646788 0.00737388630019 0.01579941816551 0.02711829529191 0.04126544631212 0 0 0 0 0 0 Columns 7 through 11 0.60000000000000 0.70000000000000 0.80000000000000 0.90000000000000 1.00000000000000 0 0 0 0 0 0.05816770458581 0.07771597786302 0.09975884980534 0.12409869431624 0.15049104416656 0.08981863659255 0.12198179127591 0.15874741339483 0.19983805487869 0.24489009223779 0.10634813087047 0.14630288319752 0.19252179179743 0.24472672856360 0.30252124412935 0.11462992625478 0.15918551207176 0.21123576614077 0.27054967377002 0.33675218524005 0.11861243201534 0.16576294992095 0.22126667898371 0.28496209396257 0.35652443078151 0.12045255751785 0.16900047801189 0.22646613545894 0.29276113285278 0.36762070821273 0.12127051987699 0.17053624137729 0.22906868193699 0.29684361407889 0.37365268189861 0.12161924999476 0.17123419150920 0.23031611238654 0.29888901777278 0.37678901557944 0.12175685479030 0.17152555416623 0.23086183172126 0.29981907506965 0.37826138760011 0.12179278384890 0.17160438561634 0.23101386363030 0.30008441500890 0.37868965527817 0.12175685479030 0.17152555416623 0.23086183172126 0.29981907506965 0.37826138760011 0.12161924999476 0.17123419150920 0.23031611238654 0.29888901777278 0.37678901557944 0.12127051987699 0.17053624137729 0.22906868193699 0.29684361407889 0.37365268189861 0.12045255751785 0.16900047801189 0.22646613545894 0.29276113285278 0.36762070821273 0.11861243201534 0.16576294992095 0.22126667898371 0.28496209396257 0.35652443078151 0.11462992625478 0.15918551207176 0.21123576614076 0.27054967377002 0.33675218524005 0.10634813087047 0.14630288319752 0.19252179179743 0.24472672856360 0.30252124412935 0.08981863659255 0.12198179127591 0.15874741339483 0.19983805487869 0.24489009223779 0.05816770458581 0.07771597786302 0.09975884980534 0.12409869431624 0.15049104416656 0 0 0 0 0

Como resultado obtengo la matriz Espacio (fracciones en las que se ha dividido la barra, y una matriz de 11 columnas (divisiones en el tiempo) y 22 filas (1ª divisiones en el tiempo + 21 valores que alcanza la barra en el tiempo indicado en la primera fila y en la posición correspondiente). Por lo tanto, para obtener el resultado del enunciado, debemos representar la barra, frente a la columna de los valores en el tiempo igual a 1, esto es la matriz Espacio, frente a los valores de

60

la columna 11 (Exceptuando la primera fila de dicha columna que solo nos indica el valor del tiempo). Luego ejecutamos en Matlab: >> plot(Espacio,Wt(2:22,11)) >> grid

b) Calcular y dibujar u(π/2,t), ( )1,0∈t

Utilizando, directamente los resultados del ejercicio anterior ahora represenaremos en la posición pi/2= 1.57079632679490 correspondiente a la fila 6 de la matriz Espacio y, por tanto, fila 7 de la matriz Wt, todas las temperaturas de la barra, frente al tiempo, que lo tenemos en la primera fila de Wt, esto es:

>> plot(Wt(7,:),Wt(1,:)) >> grid

61

c) Calcular u(π,10)

Ahora aumentamos el tiempo de 1 a 10==> luego debo aumentar el número de divisions en el tiempo para tener una precision similar tendré que pasar de N=10 a N=100, por lo tanto aplico: >> Wt=CrankNicolsonDD(1,20,100,10,2*pi) Obtengo una matriz Espacio de 1 columna y 21 filas (en la que la posición pi corresponde a la fila 11) y una matriz Wt (de 101 Columnas correspondientes a las divisiones en el tiempo y 22 filas, la primera correspondiente al tiempo y las restantes 21 correspondientes a los valores de la barra en la posición y tiempo que se correspondientes). Por lo tanto en Wt, la posición pi de la barra corresponde a la fila 12 y el tiempo=10 está ubicado en la columna 101, con lo cual el resultado deseado será: u(pi,10)= 4.22284556854227 ADICIONALMENTE: Si quisiéramos representar los valores por los que pasa la posición pi, en el transcurso del tiempo desde t=0 a t=10, tendríamos que plotear lo siguiente: >> plot(Wt(12,:),Wt(1,:)) >> grid

62

13. PROBLEMA 1_SEPTIEMBRE 2007

Consideremos la ecuación diferencial:

)('' 3 tsenyyy λ+−=

a) Escribirlo como un sistema de ecuaciones. Para λ=0 (caso no forzado) hallar los puntos de equilibrio y

clasificarlos. ¿El sistema de ecuaciones obtenido es un sistema hamiltoniano?, en caso afirmativo encontrar la función hamiltoniana H(x,y). Esbozar el retrato de fases dibujando las órbitas en el rectángulo [-2,2 ] x [-1,1] mediante las curvas de nivel de la función H(x,y) para valores en el intervalo (-1/4, 1/4). En el caso de soluciones periódicas, ¿dependen su amplitud y periodo de las condiciones iniciales?. ¿Existen órbitas homoclinas o heteroclinas?

b) Consideremos el caso en el que λ=0,05 (caso forzado). Integrar numéricamente el sistema, usando los comandos de Matlab, en el intervalo [0, 4*pi] para (y(0)=0,1, u(0)=0). ¿Cuál es el valor mínimo de u(t) y el máximo de y(t) en dicho intervalo?. Dibujar la órbita anterior y las ondas temporales en el intervalo [0, 20*pi]. En el mismo intervalo dibujar la órbita y las ondas temporales correspondientes a las condiciones iniciales (y(0)=1,1, u(0)=0). ¿Cómo se comportan estas dos soluciones?

SOLUCIÓN:

a) Escribirlo como un sistema de ecuaciones. Para λ=0 (caso no forzado) hallar los puntos de equilibrio y clasificarlos. ¿El sistema de ecuaciones obtenido es un sistema hamiltoniano?, en caso afirmativo encontrar la función hamiltoniana H(x,y). Esbozar el retrato de fases dibujando las órbitas en el rectángulo [-2,2 ] x [-1,1] mediante las curvas de nivel de la función H(x,y) para valores en el intervalo (-1/4, 1/4). En el caso de soluciones periódicas, ¿dependen su amplitud y periodo de las condiciones iniciales?. ¿Existen órbitas homoclinas o heteroclinas?

Para la resolución de este problema utilizo el programa pplane.m, en el cual introduzco la ecuación diferencial del enunciado como un sistema de ecuaciones, esto es: y'= u u’= y-y^3+landa*sin(t) Y para el caso en que λ=0 y'= u u’= y-y^3

63

The following equilibrium points have been calculated: (-1.0000, 0.0000) Spiral equilibrium point. (0.0000, 0.0000) Saddle point. (1.0000, 0.0000) Spiral equilibrium point. El sistema con λ=0 es Hamiltoniano, siendo la función Hamiltoniana:

y'= u = u

H

∂∂

uu

H=

∂∂

, ( )yuH φ+=

2

2

( ) 3' yyy −=−φ ( )24

24 yyy −=φ

u’= y-y^3 =y

H

∂∂

H=u^2/2+y^4/4-y^2/2

Ahora puedo dibujar las curvas de nivel, introduciendo en pplane esta ecuación.

Los valores negativos de las curvas de nivel no tienen sentido. La amplitud y periodo de las soluciones periódicas, sí que depende de las condiciones iniciales que demos. No existen órbitas heteroclinas, puesto que solo tenemos un equilibrio silla. Por lo tanto no se pueden intersecar una rama de variedad estable e inestable de dos equilibrios silla. Sí existe una órbita homoclina.

64

b) Consideremos el caso en el que λ=0,05 (caso forzado). Integrar numéricamente el sistema, usando los comandos de Matlab, en el intervalo [0, 4*pi] para (y(0)=0,1, u(0)=0). ¿Cuál es el valor mínimo de u(t) y el máximo de y(t) en dicho intervalo?. Dibujar la órbita anterior y las ondas temporales en el intervalo [0, 20*pi]. En el mismo intervalo dibujar la órbita y las ondas temporales correspondientes a las condiciones iniciales (y(0)=1,1, u(0)=0). ¿Cómo se comportan estas dos soluciones?

Para el caso λ=0,05 Integro utilizando el programa ode45sistema.m utilizado en prácticas y modificado, para que, directamente me plotee las figuras deseadas. Para utilizar el programa ode45sistema_mejor.m tengo inicialmente que definir ftysis.m (para poder llamarlo posteriormente), donde introduciré la ecuación diferencial dada en el enunciado, definida con el valor λ=0,05, esto es: ftysis.m function Z=ftysis(t,E) y=E(1); u=E(2); Z=[u,y-y^3+0.05*sin(t)]'; ode45sistema_mejor.m function S=ode45sistema_mejor(ftysis,a,b,Za,M) % Entradas: % ftysis es el sistema, almacenado como una cadena de caracteres % a y b extremos del tiempo de calculo % Za=vector condiciones iniciales % M= numero de pasos %S alidas % S=[T X E'] donde: % T es el tiempo dividido en el numero de pasos % X=[x1(t),...,xn(t)], [tetha omega] o [x y] % E= es la energia total del sistema en el instante T % posteriormente se dibujan las graficas de los parametros vs. tiempo h=(b-a)/M; T=a:h:b; opts=odeset('RelTol',10^(-4)); [T X]=ode45(ftysis,T,Za,opts); %HAY QUE METER LA MATRIZ HAMILTONIANA DEL SISTEMA EN ESTUDIO for k=1:length(T) E(k)=(X(k,2).^2/2+X(k,1).^4/4.-X(k,1).^2/2.); end format long S=[T X E']; % Tiempo vs. theta figure(1) plot(T,X(:,1)) % Tiempo vs. omega figure(2) plot(T,X(:,2),'r') % Tiempo vs. energia figure(3) plot(T,E','g') figure(4) plot(T,X(:,1)) hold on plot(T,X(:,2),'r') plot(T,E','g') grid hold off

65

>> S=ode45sistema_mejor('ftysis',0,4*pi,[0.1 0],100) Este programa nos dará como solución la matriz de 101 filas y 4 columnas con los valores de S=[T y u E] respectivamente. Luego: Mínimo de u(t) será: >> min(S(:,3)) ans = -0.76663042906889 Y el máximo de u(t) será; >> max(S(:,2)) ans = 1.43056894221256 λ=0,05, intervalo [0, 20*pi], con condiciones iniciales y(0)=0.1, u(0)=0 >> S=ode45sistema_mejor('ftysis',0,20*pi,[0.1 0],100)

66

Y con odesolve: teniendo en cuenta que el forzamiento lo tengo que meter como la derivada de F, es decir:

F=landa*sin(t) F’=landa*cos(t)

Y para t=0 condición inicial F=landa*0=0

Obenemos gráficas similares, por ambos procedimientos, a excepción de que con ode45sistema_mejor.m, he dibujado la gráfica de la energía y en odesolve.m tenemos dibujado el término del forzamiento (curvas en verde claro y rojo respectivamente). No obstante las curbar de u e y (en verde y azul), son iguales.

67

λ=0,05, intervalo [0, 20*pi], con condiciones iniciales y(0)=1.1, u(0)=0 >> S=ode45sistema_mejor('ftysis',0,20*pi,[1.1 0],100)

Como λ=0,05, es decir forzamiento positivo, la energía se gana. En este segundo caso se desplaza la posición y con respecto a las gráficas estudiadas anteriormete, como era de esperar, pues hemos variado la posición inicacial. Y volviendo a comprobar con odesolve, al igual que hicimos anteriormente:

68

14. PROBLEMA 2_SEPTIEMBRE 2007 diferenciasfinitas

Aunque q(x)<0 el problema de contorno

=

+

+22

ln2

2'

4''

x

xy

xy

xy y(1)=1/2, y(2)=ln2, 1<=x>=2

tiene solución única dada por 2

3ln

24)(

2−+−= x

xxxy

Usar el método de diferencias finitas para aproximar la solución y su derivada en x=1,55. Calcular el error cometido para la solución.

SOLUCIÓN: TEORÍA Para utilizar el método de las diferencias finitas, necesitamos generar los ficheros donde figuran las funciones p(t), q(t) y r(t), esto es: p.m function y=p(x) y=-4/x; q.m function y=q(x) y=-2/x^2; r.m function y=r(x) y=2*(log(x)/x^2);

Seguidamente, construimos el programa diferenciasfinitas.m que llama a los anteriores y nos dará la solución al problema de contorno, así como la derivada y los errores cometidos (puesto que tambien le introduciremos la solución única que se nos facilita en el enunciado del problema). diferenciasfinitas.m function D=diferenciasfinitas(p,q,r,a,b,alfa,beta,h) % % Datos de entrada % p, q y r son los coeficientes de la ecuacion de segundo orden % introducidos como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tama~no de paso % % Datos de salida % D=[T',Y,errorY,Yprima, errorYprima] donde T' es el vector de las abscisas % de orden (M+2)x1, Y el vector solucion, errorY el error cometido, Yprima % la derivada de la solucion y errorYprima el error cometido en la derivada % M=((b-a)/h)-1; X=a+h:h:a+h*M; % construccion de la matriz tridiagonal de orden MxM for i=1:M A(i,i)=2+h.^2.*feval(q,X(i)); end for i=1:M-1 A(i,i+1)=-1+(h/2).*feval(p,X(i)); A(i+1,i)=-1-(h/2).*feval(p,X(i+1)); end % construccion del vector de los terminos independientes de orden 1xM B(1)=-(h.^2).*feval(r,X(1))+(1+(h/2).*feval(p,X(1))).*alfa; B(M)=-(h.^2).*feval(r,X(M))+(1-(h/2).*feval(p,X(M))).*beta; for i=2:M-1 B(i)=-(h.^2).*feval(r,X(i)); end % resolucion del sistema tridiagonal para hallar la solucion Y Y=A\B'; Y=[alfa; Y; beta];

69

% vector con las abscisas X=[a X b]; % solucion exacta del problema y error cometido CAMIBIAR SOLUCION YE=(4./X-(2./X.^2)+log(X)-3./2.); errorY=abs(Y-YE'); % construccion del vector con la derivada de la solucion Yprima y error Yprima(1)=(Y(2)-Y(1))/h; Yprima(M+2)=(Y(M+2)-Y(M+1))/h; for i=2:M+1 Yprima(i)=(Y(i+1)-Y(i-1))/(2.*h); end errorYprima=abs((-4./X.^2+4./X.^3+1./X)-Yprima); % CAMBIAR POR LA DERIVADA DE LA SOLUCION % matriz con los datos de salida format long D=[X' Y errorY Yprima' errorYprima'];

La solución la obtendremos, escriendo en la ventana de comandos >> D=diferenciasfinitas('p','q','r',1,2,1/2,log(2),0.05) D = 1.00000000000000 0.50000000000000 0 0.88656594209958 0.11343405790042 1.05000000000000 0.54432829710498 0.00007328032784 0.78895407413500 0.00934064146034 1.10000000000000 0.57889540741350 0.00011415322901 0.61541273339829 0.00684774466802 1.15000000000000 0.60586957044481 0.00013409309801 0.48011216053887 0.00505668260676 1.20000000000000 0.62690662346739 0.00014062222899 0.37412684212602 0.00375647175565 1.25000000000000 0.64328225465741 0.00013870334320 0.29080387527175 0.00280387527175 1.30000000000000 0.65598701099456 0.00013162226672 0.22513166311503 0.00210025665167 1.35000000000000 0.66579542096891 0.00012155554190 0.17329859623969 0.00157680586221 1.40000000000000 0.67331687061853 0.00010994011977 0.13238028312625 0.00118494784929 1.45000000000000 0.67903344928154 0.00009771686808 0.10011507814774 0.00089001766965 1.50000000000000 0.68332837843330 0.00008549254736 0.07474110346383 0.00066702938976 1.55000000000000 0.68650755962792 0.00007364846784 0.05487664710324 0.00049780785649 1.60000000000000 0.68881604314363 0.00006241389789 0.03943152033429 0.00036902033429 1.65000000000000 0.69045071166135 0.00005191594354 0.02754075484071 0.00027081021540 1.70000000000000 0.69157011862770 0.00004221358629 0.01851458473094 0.00019583854734 1.75000000000000 0.69230217013444 0.00003332097453 0.01180041256470 0.00013860498452 1.80000000000000 0.69275015988417 0.00002522337711 0.00695367281667 0.00009496225426 1.85000000000000 0.69299753741611 0.00001788809944 0.00361535610401 0.00006176599089 1.90000000000000 0.69311169549457 0.00001127192605 0.00149455863120 0.00003662015620 1.95000000000000 0.69314699327923 0.00000532616051 0.00035485065375 0.00001769055327 2.00000000000000 0.69314718055995 0.00000000000000 0.00000374561426 0.00000374561426

Donde hemos utilizado la llamada p, q y r, introducimos los valores de los extremos 1 y 2 respectivamente, posteriormente los valores de la solución en los extremos, esto es ½ y log(2), y finalmente damos un tamaño de paso de 0.05, para que el programa utilice un mallado que nos de el valor en el punto requerido en el enunciado, esto es 1.55. Nota: Para mayor precisión también podríamos haber utilizado valores de paso menores, como 0.01 o 0.005, etc, etc. En x=1.55 la solución=0.68650755962792, cometiendo un error=0.00007364846784. El valor de la derivada en dicho punto es=0.05487664710324, cometiéndose un error=0.00049780785649.

70

15. PROBLEMA 3_SEPTIEMBRE 2007 ImplicitoND

La temperatura u(x, t) en una barra de sección transversal constante y material conductor homogéneo, esta gobernada por la ecuación del calor unidimensional; con condiciones de contorno e iniciales, dadas por:

≤≤=

≥==∂∂

<<>+=∂∂

−∂∂

π

π

π

20,0)0,(

0,0),2(;),0(

20,0),()1(),(),(2

2

xxu

ttuttx

u

xtxsenttxx

utx

t

u

a) Calcular )1,(xu

y lo dibujarla ])2,0[( π∈x

b) Calcular ),2( tuπ

, y dibujarla para ]2,0[ π∈t

c) Calcular ]2,0[,

),(

π∈

tx

txumáx

Realizar los cálculos con error de truncamiento menor que 10

-2 y mediante un método incondicionalmente

estable.

SOLUCIÓN: DISCRETIZACIÓN TEÓRICA PAG 69 APUNTES

a) Calcular )1,(xu

y dibujarla ])2,0[( π∈x

Aplico un método regresivo que es incondicionalmente estable. Las condiciones de contorno establecidas son Neuman-Dirichlet. Defino las condiciones de contorno en los extremos e inicial: a.m function y=a(t) y=t; b.m function y=b(t) y=0; f.m function y=f(x) y=0; Defino la parte forzada de la ecuación del calor: FF.m function y=FF(x,t) y=(1+t)*sin(x);

71

Utilizo el programa base ImplicitoDD.m, utilizando en ejercicios anteriore, y se modifica convenientemente, según la discretización estudiada en teria, para que las condiciones de contorno admitidas por el programa sean las dadas (Neuman-Dirichlet). Creo un nuevo archivo ImplicitoND_ex.m, en el que las entradas son las ya explicadas en los ejercicios de Implicito. ImplicitoND_ex.m function S=ImplicitoND_ex(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/h^2; for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m W(i,1)=f((i-1)*h); end Su(1,:)=W'; % Calculo de A A=zeros(m); A(1,1)=1+2*la;A(1,2)=-2*la; for i=2:m-1 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m,m-1)=-la;A(m,m)=1+2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(0,(j+1)*k)-2*la*h*a((j+1)*k); % Calculo de cjb c(m,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-1 c(i,1)=k*FF((i-1)*h,(j+1)*k); end W=A\(W+c); % Su(j+2,:)=W'; % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause end for i=1:m S(i,:)=[X(i,1) W(i,1)]; end format long

72

Calculo los valores de m y N para que el Error de Truncamiento que es aproximadamente (k+h2)<10-2, esto es, tomando m=100 y N=200 tendremos: >> (2*pi/100)^2+1/200 ans = 0.0089 y aplico el método: >> S=ImplicitoND_ex(1,100,200,1,2*pi) De donde obtengo una matriz con dos columnas (posición y temperatura) de 100 filas. >> plot(S(:,1),S(:,2)) >> grid

ADICIONAL: Utilizando la solución exacta del problema (que en este caso no la daba el enunciado) y calculando el error cometido, tendré que crear un archivo sol.m con la solución exacta y modificar convenientemene el programa ImplicitoND, esto es: sol.m function u=sol(x,t) u=t*sin(x); ImplicitoND.m function S=ImplicitoND(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/h^2; for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m W(i,1)=f((i-1)*h); end Su(1,:)=W'; % Calculo de A A=zeros(m); A(1,1)=1+2*la;A(1,2)=-2*la; for i=2:m-1

73

A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m,m-1)=-la;A(m,m)=1+2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(0,(j+1)*k)-2*la*h*a((j+1)*k); % Calculo de cjb c(m,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-1 c(i,1)=k*FF((i-1)*h,(j+1)*k); end W=A\(W+c); % Su(j+2,:)=W'; % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause end for i=1:m U(i,1)=sol((i-1)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i,1) W(i,1) U(i,1) E(i,1)]; end error=norm(E,inf) format long >> S=ImplicitoND(1,100,200,1,2*pi) error = 4.190594589181515e-004 El error cometido es muy pequeño, y por supuesto cumplo, con creces, con la condición de ser menor a 10-2 que me indicaba el enunciado. Así, tambien compruebo, que el razonamiento de los valores introducidos de m y N (que nos dan la rejilla de cálculo), son válidos, tal y como nos indica la teoría.

74

b) Calcular ),2( tuπ

, y dibujarla para ]2,0[ π∈t

Modifico el programa para que me de la matriz completa de todas las temperatures en todas las posiciones, conforme pasa el tiempo. ImplicitoND.m function Wt=ImplicitoND(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/h^2; for i=1:m+1 X(i,1)=(i-1)*h; end Espacio =[X] t=0:k:T; % Calculo de Wo for i=1:m W(i,1)=f((i-1)*h); end %Inicio la Matriz (para que vaya guardando valores) Wt=[W ]; Su(1,:)=W'; % Calculo de A A=zeros(m); A(1,1)=1+2*la;A(1,2)=-2*la; for i=2:m-1 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m,m-1)=-la;A(m,m)=1+2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(0,(j+1)*k)-2*la*h*a((j+1)*k); % Calculo de cjb c(m,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-1 c(i,1)=k*FF((i-1)*h,(j+1)*k); end W=A\(W+c); Wt=[Wt W]; end %Incluyo en la matriz Wt los extremos Wbt=[]; for i=0:N Wbt=[Wbt b(i*k)]; end Wt=[t;Wt;Wbt]; format long

75

Obtengo la solución introduciendo en la ventana de comandos lo siguiente: >> Wt=ImplicitoND(1,100,1000,2*pi,2*pi) Resultado = matriz de 1001 columnas y 102 filas (1ª fila correspondiente al tiempo y 101 filas restantes correspondientes a las posiciones del espacio) Como hemos dividido la longitud de la barra en 100 partes y la primera fila forresponde al tiempo, la posición de la barra pi/2 en la longitude total de 2*pi, se encontrará en la fila 26. >> plot(Wt(1,:),Wt(26,:)) >> grid

c) Calcular ]2,0[,

),(

π∈

tx

txumáx

Elimino la primera fila del tiempo >> A=[Wt(2:102,:)] >> C=max(A)' Creo una columna de 1001 fila con los máximos de todas las columnas de A >> D=max(C)' D = 6.28288763482676

76

16. BOLETIN_EJ 9 SISTEMA DE LORENZ

Consideremos el sistema de Lorenz:

+−=

−−=

−=

xyzdt

dz

xzyxdt

dy

xydt

dx

β

ρ

σ )(

donde βρσ ,,

son constantes reales.

a) Calcular los tres equilibrios del sistema de Lorenz y averiguar su estabilidad.

b) Siendo

28,3

8,10 === βρσ

obtener, en el intervalo [0,40], las soluciones correspondientes a las condiciones iníciales en t = 0 dadas por (5,5,30) Y (5.001,5,30). Para observar la dependencia sensible de las soluciones de este sistema con respecto a las condiciones iniciales, representar la serie temporal t frente a x, y ó z de cada una de estas dos soluciones.

c) Investigar el comportamiento del este sistema para los valores de βρσ ,,

del apartado anterior y

20,6,8.0 === ρρρ.

SOLUCIÓN:

a) Calculo los equilibrios.

+−=

−−=

−=

xyz

xzyx

xy

βρ

σ

0

0

)(0

De la primera ecuación deduzco:

yxxy =→−= )(0 σ

Introduciendo este resultado en la segunda ecuación.

−=

==−−→−−=

=

)1(

00])1[(0

ρρρ

z

xzxxzxx

xy

77

Sustituyendo estos resultados en la tercera se obtiene:

=

=→+−=

=

=

)0,0,0(

000

0

0

1P

zz

y

x

β

−−−−−=

−−−=

−±=→+−=

−=

=

))1(,)1(,)1((

))1(,)1(,)1((

)1(0

)1(

;0

3

2

2

ρρβρβ

ρρβρβ

ρββ

ρ

P

P

xxz

z

xy

x

Verifico los resultados obtenidos con Matlab cambiando βρσ === bps ,, . >> r=solve('s*(y-x)=0','p*x-y-x*z=0','-b*z+x*y=0','x,y,z') r = x: [3x1 sym]

y: [3x1 sym] z: [3x1 sym]

%Creo la matriz E con los punto de equilibrio por columnas >> E=[r.x r.y r.z] E = [ 0, 0, 0]

[ (b*p-b)^(1/2), (b*p-b)^(1/2), p-1] [ -(b*p-b)^(1/2), -(b*p-b)^(1/2), p-1] Introcuzlo las ecuaciones en el programa odesolve.m y obtengo los siguientes resultados:

78

79

Condiciones iniciales (5, 5, 30)

Condiciones iniciales (5.001, 5, 30)

80

Con p=0.8 Condiciones iniciales (5, 5, 30), s y b iguales

Con p=6 Condiciones iniciales (5, 5, 30), s y b iguales

81

82

17. BOLETIN EJ 12 Deflexión viga_Diferenciasfinitas

Consideramos la deflexión de una viga con los extremos soportados sujetos a una carga uniforme. El problema con valor frontera que rige esta situación física es:

,0)1(22

2

lxxEl

qx

El

S

dx

d<<−+= ω

ω

con las condiciones de frontera ω(0)=0 y ω(l)=0.

Suponga que la viga es de acero y del tipo W10, con las siguientes características: longitud l=120 plg, intensidad de la carga uniforme q=100 lb/pie, módulo de elasticidad E=3.0 x 107 lb/plg2, esfuerzos en los extremos S=1000 lb y momento central de inercia I=625 plg4.

a) Aproxime la deflexión de la viga ω(x) cada 6 plg mediante el método de las diferencias finitas. b) La relación real está dada por :

( ) ( ) cxlxbececx axax +−++= − )()(

21ω

donde

c1=7.7042537x104, c2=7.9207462x104, a=2.3094010x10-4, b=-4.1666666x10-3, c=-1.5625x105.

¿No rebasa 0.2 plg el error máximo en el intervalo?

c) La ley estatal de la construcción estipula que máx0<x<l ω(x)<1/300. ¿Cumple esta viga con el código

estatal?

SOLUCIÓN: TEORÍA Para utilizar el método de las diferencias finitas, necesitamos generar los ficheros donde figuran las funciones p(t), q(t) y r(t), esto es: p.m function y=p(x) y=0; q.m function y=q(x) S=1000; E=3e7; l=120; y=S/(E*l); r.m function y=r(x) q=100; E=3e7; l=120; y=q./(2.*E.*l).*x.*(x-l); Seguidamente, utilizamos programa diferenciasfinitas.m, que llama a los anteriores y nos dará la solución al problema de contorno y los errores cometidos (puesto que tambien le introduciremos la solución única que se nos facilita en el enunciado del problema). En este caso no introduciremos la derivada, puesto que no nos lo pide el problema, por lo tanto omitiremos estas lineas del programa, aque sí utilizamos en ejercicios anteriores.

83

diferenciasfinitas.m function Diferencias=diferenciasfinitas(p,q,r,a,b,alfa,beta,h) % % Datos de entrada % p, q y r son los coeficientes de la ecuacion de segundo orden % introducidos como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tamaño de paso % % Datos de salida % D=[T',Y,errorY,Yprima, errorYprima] donde T' es el vector de las abscisas % de orden (M+2)x1, Y el vector solucion, errorY el error cometido, Yprima % la derivada de la solucion y errorYprima el error cometido en la derivada % M=((b-a)/h)-1; X=a+h:h:a+h*M; % construccion de la matriz tridiagonal de orden MxM for i=1:M A(i,i)=2+h.^2.*feval(q,X(i)); end for i=1:M-1 A(i,i+1)=-1+(h/2).*feval(p,X(i)); A(i+1,i)=-1-(h/2).*feval(p,X(i+1)); end % construccion del vector de los terminos independientes de orden 1xM B(1)=-(h.^2).*feval(r,X(1))+(1+(h/2).*feval(p,X(1))).*alfa; B(M)=-(h.^2).*feval(r,X(M))+(1-(h/2).*feval(p,X(M))).*beta; for i=2:M-1 B(i)=-(h.^2).*feval(r,X(i)); end % resolucion del sistema tridiagonal para hallar la solucion Y Y=A\B'; Y=[alfa; Y; beta]; % vector con las abscisas X=[a X b]; % solucion exacta del problema y error cometido CAMIBIAR SOLUCION YE=(7.7042537e+004.*exp( 2.3094010e-004.*X) + 7.9207462e+004.*exp(- 2.3094010e-004.*X)+(-4.1666666e-3).*(X-120).*X+(-1.5625e5)); errorY=abs(Y-YE'); % matriz con los datos de salida format long Diferencias=[X' Y YE' errorY]; Para aproximar el error cada 6 pulgadas tengo que tomar un paso de h=120/6=20 >> Diferencias=diferenciasfinitas('p','q','r',0,120,0,0,20) D = 1.0e+002 * 0 0 -0.00000999999989 0.00000999999989 0.20000000000000 0.00038872907854 -0.00000392765010 0.00039265672864 0.40000000000000 0.00066639023809 0.00000042441272 0.00066596582537 0.60000000000000 0.00076634766322 0.00000198961119 0.00076435805203 < 0.2 plg 0.80000000000000 0.00066639023809 0.00000041242427 0.00066597781382 1.00000000000000 0.00038872907854 -0.00000395162700 0.00039268070554 1.20000000000000 0 -0.00001003596641 0.00001003596641

El programa nos proporciona la siguente matriz_ 1ª Columna: Posiciones de división de la viga, en nuestro caso cada 6 pulgadas 2ª Columna: Valorse de la deflexión en la viga calculados por el método de diferencias finitas.

84

3ª Columna: Valor exacto de la deflexión en la viga. 4ª Columna: Error cometido=Difencia entre el valor obtenido por el método de las diferencias finitas y el valor calculado con la solución exacta en la misma posición de la viga. >> Maximo=max(D(:,2)) Maximo = 0.07663476632167

d) La ley estatal de la construcción estipula que máxx0<x<l ω(x)<1/300. ¿Cumple esta viga con el código estatal?

Sustituyendo X=120 >> syms X >> y= 7.7042537e+004.*exp( 2.3094010e-004.*120) + 7.9207462e+004.*exp(- 2.3094010e-004.*120)+(-4.1666666e-3).*(120-120).*120+(-1.5625e5); >> X=120; >> y y = -0.00100359664066 >> 1/300 ans = 0.0033 El valor absoluto de y es mayor al límete 0.0033 NO CUMPLE el código estatal.

85

ADICIONALMENTE: También se resuelve el problema por el método de disparo, para lo cual inicialmente preparamos la ecuación inicial en dos sistemas de ecuaciones que nos sirvan para los ficheros requeridos por el método, esto es:

)(2

'' 2 lxxEl

q

El

S⋅−+= ωω lx ≤≤0 , 0)0( =ω , 0)( =lω

)(2

'' 2 lxxEl

qu

El

Su ⋅−+= lx ≤≤0 , 0)0( =u , 0)0(' =u ,

)(2

'

'

2

12

21

lxxEl

qu

El

Su

uu

⋅−+==

=

vEl

Sv ='' lx ≤≤0 , 0)0( =v , 1)0(' =v ,

12

21

'

'

vEl

Sv

vv

=

=

Defino los ficheros ftysis1.m y ftysis2.m, e introduzco los sistemas: ftysis1.m function Z=ftysis1(x,Z) u1=Z(1); u2=Z(2); S=1000; E=3e7; l=120; q=100; Z=[u2, S/(E*l)*u1+q*(x^2-x*l)/(2*E*l)]'; ftysis2.m function Z=ftysis2(x,Z) v1=Z(1); v2=Z(2); S=1000; E=3e7; l=120; Z=[v2, S/(E*l)*v1]'; disparo.m function Disparo=disparo(F1,F2,a,b,alfa,beta,h) % % Datos de entrada: % F1 y F2 son los dos sistemas de ecuaciones de primer orden almacenados % como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tamaño de paso % % Datos de salida % D=[T,Y,errorY,Yprima,errorYprima], donde T es el vector con las abscisas, % Y es el vector solucion, Yprima el vector con la derivada de la solucion % y los vectores con el error cometido al calcular Y e Yprima % % solucion del sistema F1 X=a:h:b; Za=[alfa, 0]; [X,Z]=ode45(F1,X,Za); U=Z(:,1); Uprima=Z(:,2); % solucion del sistema F2 Za=[0, 1]; [X,Z]=ode45(F2,X,Za); V=Z(:,1);

86

Vprima=Z(:,2); % solucion del problema de contorno y error cometido % AQUI HAY METER LA ECUACION SOLUCION Y DERIVADA CORRESPONDINETE M=(b-a)/h; Y=U+(beta-U(M+1))*V/V(M+1); YE=7.7042537e+004.*exp( 2.3094010e-004.*X) + 7.9207462e+004.*exp(- 2.3094010e-004.*X)+(-4.1666666e-3).*(X-120).*X+(-1.5625e5); errorY=abs(YE-Y); % datos de salida format long Disparo=[X,Y,YE,errorY]; >> Disparo=disparo('ftysis1','ftysis2',0,120,0,0,20) Disparo = 1.0e+002 * 0 0 -0.00000999999989 0.00000999999989 0.20000000000000 0.00037947698192 -0.00000392765010 0.00038340463202 0.40000000000000 0.00065158770628 0.00000042441272 0.00065116329356 0.60000000000000 0.00074969512361 0.00000198961119 0.00074770551242 0.80000000000000 0.00065158770657 0.00000041242427 0.00065117528230 1.00000000000000 0.00037947698258 -0.00000395162700 0.00038342860959 1.20000000000000 0.00000000000000 -0.00001003596641 0.00001003596641

El programa nos proporciona la siguente matriz, en la que los valores se ordenan en igual secuencia que en el apartado de diferencias finitas, esto es: 1ª Columna: Posiciones de división de la viga, en nuestro caso cada 6 pulgadas 2ª Columna: Valorse de la deflexión en la viga calculados por el método de diferencias finitas. 3ª Columna: Valor exacto de la deflexión en la viga. 4ª Columna: Error cometido=Difencia entre el valor obtenido por el método de las diferencias finitas y el valor calculado con la solución exacta en la misma posición de la viga. Y comparando los resultados por ambos métodos, observamos, que en el método del disparo se obtiene un poquito más de precisión (es error es algo menor). >> Diferencias_Disparo=[Diferencias(:,2) Disparo(:,2) Diferencias(:,3) Diferencias(:,4) Disparo(:,4)] Diferencias_Disparo = 0 0 -0.00099999998929 0.00099999998929 0.00099999998929 0.03887290785391 0.03794769819193 -0.00039276501047 0.03926567286438 0.03834046320240 0.06663902380869 0.06515877062826 0.00004244127194 0.06659658253675 0.06511632935631 0.07663476632167 0.07496951236108 0.00019896111917 0.07643580520250 0.07477055124191 0.06663902380869 0.06515877065671 0.00004124242696 0.06659778138173 0.06511752822975 0.03887290785391 0.03794769825824 -0.00039516270044 0.03926807055435 0.03834286095869 0 0.00000000000000 -0.00100359664066 0.00100359664066 0.00100359664066

Podemos obtener la siguiente matríz en la que comparamos 1ª Columna: Valores obtenidos en la viga por el método del Diferencias finitas 2ª Columna: Valores obtenidos en la viga por el método del Disparo 3ª Columna: Valor exacto de la deflexión en la viga. 4ª Columna: Error cometido por el método de Difencias finitas con respecto a la solución exacta. 5ª Columna: Error cometido por el método de Disparo con respecto a la solución exacta.

87

BOLETIN EJ 13 (DIFERENCIASFINITAS) La deflexión de una placa rectangular larga y uniforme cargada, y que se encuentra bajo una fuerza de tensión

axial, se rige por una ecuación diferencial de segundo orden. Sea S la fuerza axial y q la intensidad de la carga

uniforme. La deflexión W a lo largo de la longitud elemental está dada por

2

22)()('' x

D

qx

D

qlxW

D

SxW +

−=− , 0<=x<=l, W(0)=W(l)=0

Donde l es la longitud de la placa y D es la rigidez de la deflexión de la placa. Sean q=200lb/plg2, S=100lb/plg,

D=8.8*107 lb/plg, y l=50plg. Aproxime la deflexión en intervalos de 1 plg.

SOLUCIÓN:

Para utilizar el método de las diferencias finitas, necesitamos generar los ficheros donde figuran las funciones p(t), q(t) y r(t), de la ecuación

2

22)()('' x

D

qx

D

qlxW

D

SxW +−= , esto es:

p.m function y=p(x) y=0; q.m function y=q(x) S=100; D=8.8e7; l=120; y=S/D; r.m function y=r(x) q=200; l=50; D=8.8e7; y=-(q*l)/(2.*D)*x+(q/(2.*D))*x^2; Seguidamente, construimos el programa diferenciasfinitas.m que llama a los anteriores y nos dará la solución al problema de contorno, así como la derivada. No puedo obtener los errores cometidos (puesto que no disponemos de la solución única en el enunciado del problema). Diferenciasfinitas.m function D=diferenciasfinitas(p,q,r,a,b,alfa,beta,h) % % Datos de entrada % p, q y r son los coeficientes de la ecuacion de segundo orden % introducidos como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tama~no de paso % % Datos de salida % D=[T',Y,errorY,Yprima, errorYprima] donde T' es el vector de las abscisas % de orden (M+2)x1, Y el vector solucion, errorY el error cometido, Yprima % la derivada de la solucion y errorYprima el error cometido en la derivada

88

% M=((b-a)/h)-1; T=a+h:h:a+h*M; % construccion de la matriz tridiagonal de orden MxM for i=1:M A(i,i)=2+h.^2.*feval(q,T(i)); end for i=1:M-1 A(i,i+1)=-1+(h/2).*feval(p,T(i)); A(i+1,i)=-1-(h/2).*feval(p,T(i+1)); end % construccion del vector de los terminos independientes de orden 1xM B(1)=-(h.^2).*feval(r,T(1))+(1+(h/2).*feval(p,T(1))).*alfa; B(M)=-(h.^2).*feval(r,T(M))+(1-(h/2).*feval(p,T(M))).*beta; for i=2:M-1 B(i)=-(h.^2).*feval(r,T(i)); end % resolucion del sistema tridiagonal para hallar la solucion Y Y=A\B'; Y=[alfa; Y; beta]; % vector con las abscisas T=[a T b]; % matriz con los datos de salida format long D=[T' Y];

89

La solución la obtendremos, escriendo en la ventana de comandos, con h=1, para que nos de ka solución cada pulgada. >> D=diferenciasfinitas('p','q','r',0,50,0,0,1) D = 0 0 1.00000000000000 0.01182902451241 2.00000000000000 0.02360238064871 3.00000000000000 0.03526667269680 4.00000000000000 0.04677077754793 5.00000000000000 0.05806584463858 6.00000000000000 0.06910529589497 7.00000000000000 0.07984482568010 8.00000000000000 0.09024240074344 9.00000000000000 0.10025826017315 10.00000000000000 0.10985491535087 11.00000000000000 0.11899714990919 12.00000000000000 0.12765201969154 13.00000000000000 0.13578885271481 14.00000000000000 0.14337924913452 15.00000000000000 0.15039708121246 16.00000000000000 0.15681849328708 17.00000000000000 0.16262190174636 18.00000000000000 0.16778799500325 19.00000000000000 0.17229973347377 20.00000000000000 0.17614234955763 21.00000000000000 0.17930334762142 22.00000000000000 0.18177250398448 23.00000000000000 0.18354186690720 24.00000000000000 0.18460575658204 25.00000000000000 0.18496076512706 26.00000000000000 0.18460575658204 27.00000000000000 0.18354186690720 28.00000000000000 0.18177250398448 29.00000000000000 0.17930334762142 30.00000000000000 0.17614234955763 31.00000000000000 0.17229973347377 32.00000000000000 0.16778799500325 33.00000000000000 0.16262190174636 34.00000000000000 0.15681849328708 35.00000000000000 0.15039708121246 36.00000000000000 0.14337924913452 37.00000000000000 0.13578885271482 38.00000000000000 0.12765201969154 39.00000000000000 0.11899714990919 40.00000000000000 0.10985491535087 41.00000000000000 0.10025826017315 42.00000000000000 0.09024240074344 43.00000000000000 0.07984482568010 44.00000000000000 0.06910529589497 45.00000000000000 0.05806584463858 46.00000000000000 0.04677077754793 47.00000000000000 0.03526667269680 48.00000000000000 0.02360238064871 49.00000000000000 0.01182902451241 50.00000000000000 0

Donde la primera columna nos da las posiciones divisiones de la viga, en pulgadas, y la segunda los valores de deflexión obtenidos en cada posición requeridos en el enunciado.

90

18. 070312_Practica 03_BOLETIN EJ 01_Circuito RC

19. 070319_Practica 04_BOLETIN EJ 02_Ecuacion Logistica

20. 070326_Practica 05_BOLETIN EJ 03_Diagrama Bif.-equ.-estabilidades

21. 070409_Practica 06_

22. 070416_Practica 07_BOLETIN EJ 04.1_Circuito RLC

23. 070430_Practica 08_BOLETIN EJ 04.2_Circuito RLC

24. 070507_Practica 09_BOLETIN EJ 06_Pendulo

25. 070514_Practica 10_BOLETIN EJ 08_Bifuraciones sistema ecuaciones

26. 070521_Practica 11_BOLETIN EJ 10_Disparo/Diferenciasfinitas

91

27. COMPROBACIÓN ECUACIÓN CALOR METODO PROGRESIVO_EXPLICITODD

( ) ( )

( ) ( )( )

≤≤=

>==

<<∂∂

=∂∂

10),sin(0,

,0,0,1;0,0

10,,,2

2

xxxu

ttutu

xtxx

utx

t

u

π

Solución Exacta: ( ) ( )xexu t ππ sin0,2−=

Ejercicio 2 apuntes pag 67 METODO PROGRESIVO: h=0.1; k=0.0005 la=0.05 Con condiciones de contorno e iniciales: function y=a(t) y=0; function y=b(t) y=0; function y=f(x) y=sin(pi*x); Ecuación forzada del calor; function y=FF(x,t) y=0; y solución exacta; function u=sol(x,t) u=exp(-pi^2*t)*sin(pi*x);

Creo el programa ExplicitoDD.m, según la discretización teórica vista en teoría.

Aplico; function S=ExplicitoDD(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m-1 W(i,1)=f((i)*h); end % Calculo de A A=zeros(m-1); A(1,1)=1-2*la;A(1,2)=la; for i=2:m-2 A(i,i)=1-2*la;A(i,i-1)=la;A(i,i+1)=la; end A(m-1,m-2)=la;A(m-1,m-1)=1-2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(h,j*k)+la*a(j*k); % Calculo de cjb c(m-1,1)=k*FF((m-1)*h,j*k)+la*b(j*k); % Calculo del resto de cj for i=2:m-2 c(i,1)=k*FF((i)*h,j*k); end W=A*W+c; % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause end

92

for i=1:m-1 U(i,1)=sol((i)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i+1,1) U(i,1) W(i,1) E(i,1)]; End format long

>> S=ExplicitoDD(1,10,1000,0.5,1) S = 0.10000000000000 0.00222241417851 0.00228652078658 0.00006410660807 0.20000000000000 0.00422728297276 0.00434922098744 0.00012193801468 0.30000000000000 0.00581835585643 0.00598618913525 0.00016783327882 0.40000000000000 0.00683988752999 0.00703718738226 0.00019729985227 0.50000000000000 0.00719188335583 0.00739933669733 0.00020745334151 0.60000000000000 0.00683988752999 0.00703718738226 0.00019729985227 0.70000000000000 0.00581835585643 0.00598618913525 0.00016783327882 0.80000000000000 0.00422728297276 0.00434922098744 0.00012193801468 0.90000000000000 0.00222241417851 0.00228652078658 0.00006410660807 El resultado coincide con la solución de la fotocopia Ejercicio 2 apuntes pag 67 METODO PROGRESIVO: h=0.1; k=0.01 la=1 >>1/2 NO COMPLE CONDICION DE ESTABILIDAD. >> S=ExplicitoDD(1,10,50,0.5,1) S = 1.0e+006 * 0.00000010000000 0.00000000222241 0.34540324073161 0.34540323850919 0.00000020000000 0.00000000422728 -0.65593076045493 0.65593076468222 0.00000030000000 0.00000000581836 0.90052692618896 0.90052692037060 0.00000040000000 0.00000000683989 -1.05524767113756 1.05524767797744 0.00000050000000 0.00000000719188 1.10560546497161 1.10560545777973 0.00000060000000 0.00000000683989 -1.04773690954975 1.04773691638963 0.00000070000000 0.00000000581836 0.88837425865892 0.88837425284057 0.00000080000000 0.00000000422728 -0.64377809292543 0.64377809715271 0.00000090000000 0.00000000222241 0.33789247914466 0.33789247692225 la > ½ (NO SE CUMPLE CONDICIÓN DE ESTABILIDAD)

93

28. COMPROBACIÓN ECUACIÓN CALOR METODO REGRESIVO_IMPLICITODD

( ) ( )

( ) ( )( )

≤≤=

>==

<<∂∂

=∂∂

10),sin(0,

,0,0,1;0,0

10,,,2

2

xxxu

ttutu

xtxx

utx

t

u

π

Solución Exacta: ( ) ( )xexu t ππ sin0,2−=

Ejercicio 2 apuntes pag 67 METODO REGRESIVO: h=0.1; k=0.01 Con condiciones de contorno e iniciales: function y=a(t) y=0; function y=b(t) y=0; function y=f(x) y=sin(pi*x); Ecuación forzada del calor; function y=FF(x,t) y=0; y solución exacta; function u=sol(x,t) u=exp(-pi^2*t)*sin(pi*x); Aplico; function S=ImplicitoDD(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m-1 W(i,1)=f((i)*h); end % Calculo de A A=zeros(m-1); A(1,1)=1+2*la;A(1,2)=-la; for i=2:m-2 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m-1,m-2)=-la;A(m-1,m-1)=1+2*la; for j=0:N-1 % Calculo de Cj % Calculo de cja c(1,1)=k*FF(h,(j+1)*k)+la*a((j+1)*k); % Calculo de cjb c(m-1,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-2 c(i,1)=k*FF((i)*h,(j+1)*k); end W=A\(W+c); %WW=[a((j+1)*k); W ; b((j+1)*k)]; %plot(X ,WW) % pause end for i=1:m-1 U(i,1)=sol((i)*h,T);

94

E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[ X(i+1,1) W(i,1) U(i,1) E(i,1)]; end

>> S=ImplicitoDD(1,10,50,0.5,1) S = 0.10000000000000 0.00289801664505 0.00222241417851 0.00067560246654 0.20000000000000 0.00551235522922 0.00422728297276 0.00128507225646 0.30000000000000 0.00758710607671 0.00581835585643 0.00176875022029 0.40000000000000 0.00891917811894 0.00683988752999 0.00207929058895 0.50000000000000 0.00937817886332 0.00719188335583 0.00218629550749 0.60000000000000 0.00891917811894 0.00683988752999 0.00207929058895 0.70000000000000 0.00758710607671 0.00581835585643 0.00176875022029 0.80000000000000 0.00551235522922 0.00422728297276 0.00128507225646 0.90000000000000 0.00289801664505 0.00222241417851 0.00067560246654 El resultado coincide con la solución de la fotocopia

95

29. COMPROBACIÓN ECUACIÓN CALOR METODO CRANK-NICOLSON

( ) ( )

( ) ( )( )

≤≤=

>==

<<∂∂

=∂∂

10),sin(0,

,0,0,1;0,0

10,,,2

2

xxxu

ttutu

xtxx

utx

t

u

π

Solución Exacta: ( ) ( )xexu t ππ sin0,2−=

Ejercicio 2 apuntes pag 67 CRANK NICOLSON: h=0.1; k=0.01 Con condiciones de contorno e iniciales: function y=a(t) y=0; function y=b(t) y=0; function y=f(x) y=sin(pi*x); Ecuación forzada del calor; function y=FF(x,t) y=0; y solución exacta; function u=sol(x,t) u=exp(-pi^2*t)*sin(pi*x); Creo el programa CrankNicolsonDD.m, según la discretización vista en teoría Aplico; CrankNicolsonDD.m function S=CrankNicolsonDD(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m-1 W(i,1)=f((i)*h); end % Calculo de A A=zeros(m-1); A(1,1)=2+2*la;A(1,2)=-la; for i=2:m-2 A(i,i)=2+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m-1,m-2)=-la;A(m-1,m-1)=2+2*la; % Calculo de B B=zeros(m-1); B(1,1)=2-2*la;B(1,2)=la; for i=2:m-2

96

B(i,i)=2-2*la;B(i,i-1)=la;B(i,i+1)=la; end B(m-1,m-2)=la;B(m-1,m-1)=2-2*la; for j=0:N-1 % Calculo de cj % Calculo de cja c(1,1)=k*FF(h,(j+1/2)*k)+la*a((j+1)*k)+la*a(j*k); % Calculo de cjb c(m-1,1)=k*FF((m-1)*h,(j+1/2)*k)+la*b((j+1)*k)+la*b(j*k); % Calculo del resto de cj for i=2:m-2 c(i,1)=k*FF((i)*h,(j+1/2)*k); end W=A\(B*W+c); % ???WW=[a((j+1)*k); W ; b((j+1)*k)]; % ???plot(X ,WW) % pause end for i=1:m-1 U(i,1)=sol((i)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i+1,1) W(i,1) U(i,1) E(i,1)]; end >> S=CrankNicolsonDD(1,10,50,0.5,1) S = 0.10000000000000 0.00230512336779 0.00222241417851 0.00008270918928 0.20000000000000 0.00438460519960 0.00422728297276 0.00015732222684 0.30000000000000 0.00603489132513 0.00581835585643 0.00021653546871 0.40000000000000 0.00709444024020 0.00683988752999 0.00025455271021 0.50000000000000 0.00745953591469 0.00719188335583 0.00026765255886 0.60000000000000 0.00709444024020 0.00683988752999 0.00025455271021 0.70000000000000 0.00603489132513 0.00581835585643 0.00021653546871 0.80000000000000 0.00438460519960 0.00422728297276 0.00015732222684 0.90000000000000 0.00230512336779 0.00222241417851 0.00008270918928 El resultado coincide con la solución de la fotocopia

97

30. COMPROBACIÓN METODO DISPARO Y DIFERENCIAS FINITAS.

Ejercicio página 67 apuntes

( )22

lnsin2'

2''

x

xy

xy

xy ++−=

y(1)=1; y(2)=2; h = 0.1 Solución Exacta: y = (1.139204.*X+(0.039207./X)-(3./10.)*sin(log(X))-(1./10.)*cos(log(X))) >> syms X >> diff(1.139204.*X+(0.039207./X)-(3./10.)*sin(log(X))-(1./10.)*cos(log(X))) diff = 5130518709898979./4503599627370496.*X+5650324178890081./144115188075855872./X-3./10.*sin(log(X))-1./10.*cos(log(X)) ftysis1.m function Z=ftysis1(x,Z) u1=Z(1); u2=Z(2); Z=[u2, (-2/x)*u2+(2/x^2)*u1+(sin(log(x)))/x^2]'; ftysis2.m function Z=ftysis2(x,Z) v1=Z(1); v2=Z(2); Z=[v2, (-2/x)*v2+(2/x^2)*v1]'; sol.m function y=sol(X) y=1.139207.*X+(0.039207./X)-(3./10.)*sin(log(X))-(1./10.)*cos(log(X)); disparo.m function D=disparo(F1,F2,sol,a,b,alfa,beta,h) % % Datos de entrada: % F1 y F2 son los dos sistemas de ecuaciones de primer orden almacenados % como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tamaño de paso % % Datos de salida % D=[T,Y,errorY,Yprima,errorYprima], donde T es el vector con las abscisas, % Y es el vector solucion, Yprima el vector con la derivada de la solucion % y los vectores con el error cometido al calcular Y e Yprima % % solucion del sistema F1 X=a:h:b; Za=[alfa, 0]; [X,Z]=ode45(F1,X,Za); U=Z(:,1); Uprima=Z(:,2); % solucion del sistema F2 Za=[0, 1]; [X,Z]=ode45(F2,X,Za); V=Z(:,1); Vprima=Z(:,2); % solucion del problema de contorno y error cometido % AQUI HAY METER LA ECUACION SOLUCION Y DERIVADA CORRESPONDINETE M=(b-a)/h; Y=U+(beta-U(M+1))*V/V(M+1); Ysol=feval(sol,X); errorY=abs(Ysol-Y); % derivada de la solucion del problema de contorno y error cometido Yprima=Uprima+(beta-U(M+1))*Vprima/V(M+1); Yprimasol=5130518709898979./4503599627370496.*X+5650324178890081./144115188075855872./X-3./10.*sin(log(X))-1./10.*cos(log(X)); errorYprima=abs(Yprimasol-Yprima); % datos de salida format long D=[X,U,V,Y,Ysol,errorY,Yprima,Yprimasol,errorYprima];

98

>> D=disparo('ftysis1','ftysis2','sol',1,2,1,2,0.1) D = Columns 1 through 6 1.0000000000000 1.00000000000000 0 1.00000000000000 1.07841400000000 0.07841400000000 1.1000000000000 1.00895628475573 0.09118463483803 1.09262922569844 1.16067450149281 0.06804527579438 1.2000000000000 1.03244865130560 0.16851851801354 1.18708479181925 1.24698441716377 0.05989962534452 1.3000000000000 1.06673691170398 0.23609464690853 1.28338233099811 1.33674099381117 0.05335866281306 1.4000000000000 1.10928080826876 0.29659859989749 1.38144592881779 1.42945451141560 0.04800858259780 1.5000000000000 1.15829277392866 0.35185180724519 1.48115940097066 1.52472273644174 0.04356333547108 1.6000000000000 1.21247650380157 0.40312495349402 1.58239244946667 1.62221205421567 0.03981960474900 1.7000000000000 1.27086737715545 0.45132636594185 1.68501395382835 1.72164332107798 0.03662936724963 1.8000000000000 1.33273139687318 0.49711929472526 1.78889852922954 1.82278110760785 0.03388257837831 1.9000000000000 1.39749909875674 0.54099718342601 1.89392950569297 1.92542541583000 0.03149591013703 2.0000000000000 1.46472109339866 0.58333328654438 2.00000000000000 2.02940522696951 0.02940522696951 Columns 7 through 9 0.91762105634719 1.07841100000000 0.16078994365281 0.93528332487952 1.16067120149281 0.22538787661329 0.95383895601197 1.24698081716377 0.29314186115179 0.97197757571540 1.33673709381117 0.36475951809577 0.98909678151720 1.42945031141560 0.44035352989840 1.00495348325926 1.52471823644174 0.51976475318248 1.01948796295795 1.62220725421567 0.60271929125772 1.03273270784878 1.72163822107798 0.68890551322920 1.04476420146013 1.82277570760785 0.77801150614772 1.05567719121926 1.92541971583000 0.86974252461074 1.06557100178534 2.02939922696951 0.96382822518417

Las columnas que no coinciden son las de la solución y(xi) y el error, supongo que la solución que se da en las fotocopias no es del todo exacta.

99

Y comprobando este mismo problema por el método de las diferencias finitas: p.m function y=p(x) y=-2/x; q.m function y=q(x) y=2/x^2; r.m function y=r(x) y=sin(log(x))/x^2; diferenciasfinitas.m function D=diferenciasfinitas(p,q,r,a,b,alfa,beta,h) % % Datos de entrada % p, q y r son los coeficientes de la ecuacion de segundo orden % introducidos como cadenas de caracteres % a y b son los extremos del intervalo % alfa y beta son los valores de la solucion en los extremos a y b % h es el tama~no de paso % % Datos de salida % D=[T',Y,errorY,Yprima, errorYprima] donde T' es el vector de las abscisas % de orden (M+2)x1, Y el vector solucion, errorY el error cometido, Yprima % la derivada de la solucion y errorYprima el error cometido en la derivada % M=((b-a)/h)-1; X=a+h:h:a+h*M; % construccion de la matriz tridiagonal de orden MxM for i=1:M A(i,i)=2+h.^2.*feval(q,X(i)); end for i=1:M-1 A(i,i+1)=-1+(h/2).*feval(p,X(i)); A(i+1,i)=-1-(h/2).*feval(p,X(i+1)); end % construccion del vector de los terminos independientes de orden 1xM B(1)=-(h.^2).*feval(r,X(1))+(1+(h/2).*feval(p,X(1))).*alfa; B(M)=-(h.^2).*feval(r,X(M))+(1-(h/2).*feval(p,X(M))).*beta; for i=2:M-1 B(i)=-(h.^2).*feval(r,X(i)); end % resolucion del sistema tridiagonal para hallar la solucion Y Y=A\B'; Y=[alfa; Y; beta]; % vector con las abscisas X=[a X b]; % solucion exacta del problema y error cometido CAMIBIAR SOLUCION YE=(1.139204.*X+(0.039207./X)-(3./10.)*sin(log(X))-(1./10.)*cos(log(X))); errorY=abs(Y-YE'); % construccion del vector con la derivada de la solucion Yprima y error Yprima(1)=(Y(2)-Y(1))/h; Yprima(M+2)=(Y(M+2)-Y(M+1))/h; for i=2:M+1 Yprima(i)=(Y(i+1)-Y(i-1))/(2.*h); end errorYprima=abs((5130518709898979./4503599627370496.*X+5650324178890081./144115188075855872./X-3./10.*sin(log(X))-1./10.*cos(log(X)))-Yprima); % CAMBIAR POR LA DERIVADA DE LA SOLUCION % matriz con los datos de salida format long D=[X' Y errorY Yprima' errorYprima'];

100

>> D=diferenciasfinitas('p','q','r',1,2,1,2,0.1) D = 1.00000000000000 1.00000000000000 0.07841100000000 0.92600520720135 0.15240579279865 1.10000000000000 1.09260052072013 0.06807068077268 0.93521564397537 0.22545555751745 1.20000000000000 1.18704312879507 0.05993768836869 0.95368174747130 0.29329906969246 1.30000000000000 1.28333687021440 0.05340022359677 0.97179458716767 0.36494250664350 1.40000000000000 1.38140204622861 0.04804826518699 0.98891695948911 0.44053335192648 1.50000000000000 1.48112026211222 0.04359797432952 1.00478924732424 0.51992898911750 1.60000000000000 1.58235989569346 0.03984735852221 1.01934378136171 0.60286347285395 1.70000000000000 1.68498901838456 0.03664920269342 1.03260925250145 0.68902896857653 1.80000000000000 1.78888174619375 0.03389396141411 1.04466040386286 0.77811530374499 1.90000000000000 1.89392109915713 0.03149861667287 1.05559126903127 0.86982844679873 2.00000000000000 2.00000000000000 0.02939922696951 1.06078900842867 0.96861021854084

101

31. EJERCICIOS SESIÓN PROBLEMAS.

Página 69-70 apuntes IMPLICITO NEUMANN DIRICHLET Con condiciones de contorno e iniciales: function y=f(x) y=sin(x); function y=a(t) y=1; function y=b(t) y=sin(t); Ecuación forzada de calor; function y=FF(x,t) y=sin(x)+cos(t); y solución exacta; function u=sol(x,t) u=sin(x)+sin(t); Aplico; function S=ImplicitoND(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/h^2; for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m W(i,1)=f((i-1)*h); end Su(1,:)=W'; % Calculo de A A=zeros(m); A(1,1)=1+2*la;A(1,2)=-2*la; for i=2:m-1 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m,m-1)=-la;A(m,m)=1+2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(0,(j+1)*k)-2*la*h*a((j+1)*k); % Calculo de cjb c(m,1)=k*FF((m-1)*h,(j+1)*k)+la*b((j+1)*k); % Calculo del resto de cj for i=2:m-1 c(i,1)=k*FF((i-1)*h,(j+1)*k); end W=A\(W+c); % Su(j+2,:)=W'; % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause end for i=1:m

102

U(i,1)=sol((i-1)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i,1) W(i,1) U(i,1) E(i,1)]; end % error=norm(E,inf); >> S=ImplicitoND(1,20,1000,1,pi) S = 0 0.83767860739635 0.84147098480790 0.00379237741155 0.15707963267949 0.99474501722756 0.99790544984813 0.00316043262056 0.31415926535898 1.14792545342637 1.15048797918284 0.00256252575648 0.47123889803847 1.29345609000779 1.29546148454744 0.00200539453965 0.62831853071796 1.42776145755828 1.42925623710037 0.00149477954209 0.78539816339745 1.54754244663794 1.54857776599444 0.00103531935651 0.94247779607694 1.64985749620573 1.65048797918284 0.00063048297711 1.09955742875643 1.73219497199561 1.73247750899626 0.00028253700065 1.25663706143592 1.79253495724439 1.79252750110305 0.00000745614134 1.41371669411541 1.82939893904809 1.82915932540303 0.00023961364506 1.57079632679490 1.84188617148556 1.84147098480790 0.00041518667766 1.72787595947439 1.82969582420457 1.82915932540303 0.00053649880154 1.88495559215388 1.79313437441725 1.79252750110305 0.00060687331420 2.04203522483337 1.73310806268179 1.73247750899626 0.00063055368553 2.19911485751286 1.65110059961858 1.65048797918284 0.00061262043573 2.35619449019234 1.54913667286870 1.54857776599444 0.00055890687425 2.51327412287183 1.42973215229964 1.42925623710037 0.00047591519927 2.67035375555132 1.29583221815303 1.29546148454744 0.00037073360558 2.82743338823081 1.15073893349076 1.15048797918284 0.00025095430792 2.98451302091030 0.99803004162445 0.99790544984813 0.00012459177632

103

IMPLICITO NEUMANN NEUMANN Con condiciones de contorno e iniciales: function y=f(x) y=sin(x); function y=a(t) y=1; function y=b(t) y=-1; Ecuación forzada de calor; function y=FF(x,t) y=sin(x)+cos(t); y solución exacta; function y=FF(x,t) y=sin(x)+sin(t); Aplico; function S=ImplicitoNN(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/h^2; for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m+1 W(i,1)=f((i-1)*h); end % Su(1,:)W'; % Calculo de A A=zeros(m+1); A(1,1)=1+2*la;A(1,2)=-2*la; for i=2:m A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m+1,m)=-2*la;A(m+1,m+1)=1+2*la; % Calculo de Cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(0,(j+1)*k)-2*la*h*a((j+1)*k); % Calculo de cjb c(m+1,1)=k*FF((m)*h,(j+1)*k)+2*la*h*b((j+1)*k); % Calculo del resto de cj for i=2:m c(i,1)=k*FF((i-1)*h,(j+1)*k); end W=A\(W+c); % Su(j+2,:)=W'; % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause end for i=1:m+1 U(i,1)=sol((i-1)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i,1) W(i,1) U(i,1) E(i,1)];

104

end error=norm(E,inf) format long >> S=ImplicitoNN(1,20,1000,1,pi) error = 0.00389236574616 S = 0 0.83757861906173 0.84147098480790 0.00389236574616 0.15707963267949 0.99464065883293 0.99790544984813 0.00326479101520 0.31415926535898 1.14780778775930 1.15048797918284 0.00268019142355 0.47123889803847 1.29331559111068 1.29546148454744 0.00214589343676 0.62831853071796 1.42758762692310 1.42925623710037 0.00166861017727 0.78539816339745 1.54732344327593 1.54857776599444 0.00125432271851 0.94247779607694 1.64957978766332 1.65048797918284 0.00090819151953 1.09955742875643 1.73184301456381 1.73247750899626 0.00063449443245 1.25663706143592 1.79209091466424 1.79252750110305 0.00043658643881 1.41371669411541 1.82884244966599 1.82915932540303 0.00031687573705 1.57079632679490 1.84119417378228 1.84147098480790 0.00027681102562 1.72787595947439 1.82884244966599 1.82915932540303 0.00031687573705 1.88495559215388 1.79209091466424 1.79252750110305 0.00043658643881 2.04203522483337 1.73184301456381 1.73247750899626 0.00063449443245 2.19911485751286 1.64957978766332 1.65048797918284 0.00090819151953 2.35619449019234 1.54732344327593 1.54857776599444 0.00125432271851 2.51327412287183 1.42758762692310 1.42925623710037 0.00166861017727 2.67035375555132 1.29331559111067 1.29546148454744 0.00214589343677 2.82743338823081 1.14780778775930 1.15048797918284 0.00268019142355 2.98451302091030 0.99464065883293 0.99790544984813 0.00326479101520 3.14159265358979 0.83757861906173 0.84147098480790 0.00389236574616

105

IMPLICITO DIRICHLET NEUMANN function S=ImplicitoDN(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/h^2; for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m W(i,1)=f((i)*h); end Su(1,:)=W'; % Calculo de A A=zeros(m); A(1,1)=1+2*la;A(1,2)=-la; for i=2:m-1 A(i,i)=1+2*la;A(i,i-1)=-la;A(i,i+1)=-la; end A(m,m-1)=-2*la;A(m,m)=1+2*la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(h,(j+1)*k)+la*a((j+1)*k); % Calculo de cjb c(m,1)=k*FF((m)*h,(j+1)*k)+2*la*h*b((j+1)*k); % Calculo del resto de cj for i=2:m-1 c(i,1)=k*FF((i)*h,(j+1)*k); end W=A\(W+c); %Su(j+2,:)=W'; end for i=1:m U(i,1)=sol((i-1)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i+1,1) W(i,1) U(i,1) E(i,1)]; end

106

CRANK-NICOLSON NEUMANN NEUMANN Con condiciones de contorno e iniciales: function y=f(x) y=sin(x); function y=a(t) y=1; function y=b(t) y=-1; Ecuación forzada de calor; function y=FF(x,t) y=sin(x)+cos(t); y solución exacta; function y=FF(x,t) y=sin(x)+sin(t); Aplico; function S=CrankNicolsonNN(c,m,N,T,L) h=L/m;k=T/N;la=c^2*k/(h^2); for i=1:m+1 X(i,1)=(i-1)*h; end % Calculo de Wo for i=1:m+1 W(i,1)=f((i)*h); end % Calculo de A A=zeros(m+1); A(1,1)=1+la;A(1,2)=-la; for i=2:m A(i,i)=1+la;A(i,i-1)=-la/2;A(i,i+1)=-la/2; end A(m+1,m)=-la;A(m+1,m+1)=1+la; % Calculo de B B=zeros(m+1); B(1,1)=1-la;B(1,2)=la; for i=2:m B(i,i)=1-la;B(i,i-1)=la/2;B(i,i+1)=la/2; end B(m+1,m)=la;B(m+1,m+1)=1-la; % Calculo de cj for j=0:N-1 % Calculo de cja c(1,1)=k*FF(0,(j+1/2)*k)-la*h*(a((j+1)*k)+a(j*k)); % Calculo de cjb c(m+1,1)=k*FF((m+1)*h,(j+1/2)*k)+la*h*(b((j+1)*k)+b(j*k)); % Calculo del resto de cj for i=2:m c(i,1)=k*FF((i)*h,(j+1/2)*k); end W=A\(B*W+c); % WW=[a((j+1)*k); W ; b((j+1)*k)]; % plot(X ,WW) % pause

107

end for i=1:m+1 U(i,1)=sol((i)*h,T); E(i,1)=abs(W(i,1)-U(i,1)); S(i,:)=[X(i,1) W(i,1) U(i,1) E(i,1)]; end >> S=CrankNicolsonNN(1,20,50,1,pi) S = 0 0.9665 0.9979 0.0314 0.1571 1.1233 1.1505 0.0271 0.3142 1.2722 1.2955 0.0233 0.4712 1.4094 1.4293 0.0198 0.6283 1.5318 1.5486 0.0168 0.7854 1.6363 1.6505 0.0142 0.9425 1.7205 1.7325 0.0119 1.0996 1.7824 1.7925 0.0101 1.2566 1.8204 1.8292 0.0087 1.4137 1.8338 1.8415 0.0077 1.5708 1.8221 1.8292 0.0070 1.7279 1.7858 1.7925 0.0067 1.8850 1.7257 1.7325 0.0068 2.0420 1.6433 1.6505 0.0072 2.1991 1.5407 1.5486 0.0079 2.3562 1.4204 1.4293 0.0089 2.5133 1.2853 1.2955 0.0102 2.6704 1.1387 1.1505 0.0118 2.8274 0.9842 0.9979 0.0137 2.9845 0.8256 0.8415 0.0159 3.1416 0.6667 0.6850 0.0183 >> S=CrankNicolsonNN(1,30,50,0.5,pi) nota: disminuyendo el tiempo S = 0 0.5740 0.5840 0.0099 0.1047 0.6787 0.6873 0.0087 0.2094 0.7810 0.7884 0.0075 0.3142 0.8797 0.8862 0.0064 0.4189 0.9740 0.9794 0.0055 0.5236 1.0626 1.0672 0.0046 0.6283 1.1447 1.1486 0.0038 0.7330 1.2194 1.2226 0.0032 0.8378 1.2859 1.2884 0.0026 0.9425 1.3434 1.3455 0.0021 1.0472 1.3913 1.3930 0.0017 1.1519 1.4291 1.4305 0.0013 1.2566 1.4565 1.4576 0.0011 1.3614 1.4731 1.4739 0.0009 1.4661 1.4787 1.4794 0.0007 1.5708 1.4733 1.4739 0.0006 1.6755 1.4570 1.4576 0.0006 1.7802 1.4299 1.4305 0.0006 1.8850 1.3923 1.3930 0.0007 1.9897 1.3447 1.3455 0.0008 2.0944 1.2875 1.2884 0.0010 2.1991 1.2214 1.2226 0.0012 2.3038 1.1471 1.1486 0.0015 2.4086 1.0654 1.0672 0.0018 2.5133 0.9773 0.9794 0.0022 2.6180 0.8836 0.8862 0.0026 2.7227 0.7854 0.7884 0.0031 2.8274 0.6837 0.6873 0.0036 2.9322 0.5797 0.5840 0.0043 3.0369 0.4745 0.4794 0.0049 3.1416 0.3692 0.3749 0.0057

108

32. BIBLIOGRAFÍA Y MATERIAL UTILIZADO

Apuntes teóricos asignatura Ecuaciones Diferenciales y Métodos Numéricos (2º Cuatrimestre – Curso 2006-07). Profesor: Antonio Algaba Durán. Apuntes prácticas asignatura Ecuaciones Diferenciales y Métodos Numéricos (2º Cuatrimestre – Curso 2006-07). Profesor: Manuel Merino Morlesín. Página web del profesor: http://www.uhu.es/manuel.merino/ Página de descarga programas (dfield6.m, pplane6.m, odesolve.m): http://math.rice.edu/ Ayuda del programa MATLAB. ECUACIONES DIFERENCIALES. Paul Blanchard, Robert L. Devaney, Glen R. Hall. Editorial: Thomson. MÉTODOS NUMÉRICOS CON MATLAB. Jhon H. Mathews, Kurtis D. Fink. Editorial: Prentice Hall. APRENDA MATLAB 6.1 COMO SI ESTUVIERA EN PRIMERO. Javier García de Jalón, José Ignacio Rodríguez, Alfonso Brazales. Edita: Escuala Politécnica Superior de Ingenieros Industriales, Universidad Politécnica de Madrid Ordinary differential equations using MATLAB. John C. Polking, David Arnold. Polking, John C. Editorial: Pearson Dynamical systems with applications using MATLAB. Stephen Lynch Lynch, Stephen. Editorial: Birkhäuser. Ecuaciones diferenciales : una perspectiva de modelación. Robert L. Borrelli, Courtney S. Coleman Borrelli, Robert L. Editorial: Oxford University Press. Ecuaciones diferenciales y problemas con valores en la frontera. R. Kent Nagle, Edward B. Staff, Arthur David Snider; traducción, Óscar Palmas Velazco ; revisión técnica: M. en C. Juan Carlos del Valle Sotelo Nagle, R. Kent Dynamics and bifurcations. Jack K. Hale, Hüseyin Koçak Hale, Jack K. Editorial: Springer-Verlag. Problemas de ecuaciones diferenciales ordinarias. A. Kiseliov, M. Krasnov, G. Makarenko Kiseliov, Aleksandr Ecuaciones Diferenciales con Aplicaciones. Dennos G. Zill. Grupo editorial Iberoamérica.

33. ANEXOS

Hipervínculos creados en el archivo EJERCICIOS MATLAB.doc hacia documentos de resolución de prácticas y páginas de apuntes utilizadas.