Documentos de Académico
Documentos de Profesional
Documentos de Cultura
y 0 = f (t; y ) ; y (t0 ) = y0
Solución numérica en el intervalo [t0 ; T ]:
[t; y ] = ode45(g ; [t0 ; T ]; y0 )
g = inline(0 funci on0 ;0 t 0 ;0 y 0 )
t = [t0 t1 t2 ::: T ]; tj +1 = tj + hj
y = [y (t0 ) y (t1 ) ::: y (T )]
0 funci on0 es la función f
Ejemplo:
y 0 = yt; y (1) = 2; t 2 [1; 3]
[t; y ] = ode45(inline(0 y t 0 ;0 t 0 ;0 y 0 ); [1; 3]; 2)
Si escribimos
ode45(g ; [t0 ; t1 ]; y0 );
entonces Matlab sólo dibuja la grá…ca de la solución.
Ecuaciones diferenciales: resolución numérica
hold on 15
axis([-2,2,-20,20]) 10
f=inline(’2*y*t’,’t’,’y’) 5
[t1,y1]=ode45(f,[-2,2],10); 0
[t2,y2]=ode45(f,[-2,2],-10); -5
-10
[t3,y3]=ode45(f,[-2,2],0);
-15
[t4,y4]=ode45(f,[-2,2],15);
-20
[t5,y5]=ode45(f,[-2,2],-15); -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
plot(t1,y1,’r’)
plot(t2,y2,’b’)
plot(t3,y3,’g’)
plot(t4,y4,’y’)
plot(t5,y5,’c’)
Ecuaciones diferenciales: resolución numérica
Solución
[t,y]=ode45(inline(’2*t*y’,’t’,’y’),[-2,2],10)
[m,n]=size(t)
h1=t(2)-t(1)
h2=t(3)-t(2)
h3=t(m)-t(m-1)
h4=t(40)-t(39)
Ecuaciones diferenciales: resolución numérica
a=3
[t; y ] = ode45(@(t; y ) a t^2 y ; [0; 10]; 2)
Solución
a=4
f=@(t,y) a*t^2*y
[t,y]=ode45(f,[0,1.5],2);
plot(t,y)
Ecuaciones diferenciales: resolución numérica
Ecuación logística con a = b = 1 :
y 0 = y y 2;
y (t0 ) = y0 :
2
1.5
0.5
-0.5
-1
-1.5
-2
-2 0 2 4 6 8 10
y 0 = y y 2;
y (t0 ) = y0 :
Ejercicio 5. Obtener un grá…co con distintos tipos de soluciones de la
ecuación logística en el intervalo [ 2; 10]. Realizar los siguientes pasos:
1 Fijar los ejes [ 2; 10] [ 2; 2]:
2 Hallar las soluciones para y ( 2) = 1, y ( 2) = 0 y dibujarlas en color
negro.
3 Hallar las soluciones para y ( 2) = 2, y ( 2) = 5 y dibujarlas en color
rojo.
4 Hallar las soluciones para y ( 2) = 0.01, y ( 2) = 0.5 y dibujarlas en
color azul.
5 Hallar las soluciones para y ( 2) = 0.01, y ( 2) = 0.5 y
dibujarlas en color verde.
6 Ponerle a la grá…ca el título "Soluciones de la ecuación logística".
Ecuaciones diferenciales: resolución numérica
axis([-2,10,-2,2]) 1.5
f=inline(’y-y^2’,’t’,’y’) 1
[t1,y1]=ode45(f,[-2,10],1); 0.5
[t2,y2]=ode45(f,[-2,10],0); 0
-0.5
[t3,y3]=ode45(f,[-2,10],2); -1
[t4,y4]=ode45(f,[-2,10],5); -1.5
[t6,y6]=ode45(f,[-2,10],0.5); -2
-2 0 2 4 6 8 10
[t5,y5]=ode45(f,[-2,10],0.01);
[t7,y7]=ode45(f,[-2,10],-0.01);
[t8,y8]=ode45(f,[-2,10],-0.5);
plot(t1,y1,’k’), plot(t2,y2,’k’)
plot(t3,y3,’r’), plot(t4,y4,’r’)
plot(t5,y5,’b’), plot(t6,y6,’b’)
plot(t7,y7,’g’), plot(t8,y8,’g’)
title(’Soluciones de la ecuación logística’)
Programación: funciones
Las funciones permite crear programas. Su sintaxis es:
function argumentos_salida = nombre_funci on(argumentos_entrada)
seguida de las instrucciones necesarias.
Cuando hay más de un argumento de salida, éstos deben ir entre
corchetes y separados por comas.
Es conveniente utilizar las primeras líneas del …chero para insertar un
comentario (iniciándolas con ’%’). Así, dicha de…nición será visible
mediante la instrucción
help nombre de la función
La función puede …nalizarse en cualquier punto utilizando la
instrucción return.
Las funciones se guardan en un archivo con extensión ".m". Si
tenemos el …chero Nombre.m, para ejecutarlos escribiremos:
Nombre(Argumentos de entrada)
Programación: funciones
>> z=hipotenusa(5,12)
z=
13
Programación: funciones
Ejemplo 2. Vamos a repetir el mismo programa anterior pero con dos
variables de salida. Además de la hipotenusa hemos de calcular también la
suma de los dos catetos.
Ejercicio 6. Construir una función que calcule, dado el valor del radio r , el
área del círculo y la longitud de la circunferencia correspondientes.
La función tendrá una variable de entrada y dos de salida.
Escribir unos comentarios explicativos al principio del archivo.
Programación: funciones
Ejercicio 6. Construir una función que calcule, dado el valor del radio r , el
área del círculo y la longitud de la circunferencia correspondientes.
La función tendrá una variable de entrada y dos de salida.
Escribir unos comentarios explicativos al principio del archivo.
Solución
function [area,long]=circulo(r)
area=pi*r^2;
long=2*pi*r;
Programación: estructuras condicionales
if condición
Instrucciones que deben ejecutarse si la condición es cierta.
else
Instrucciones a ejecutar si no se veri…ca la condición anterior
end
if condición
Instrucciones que deben ejecutarse
end
Programación: estructuras condicionales
if condición_1
Instrucciones a ejecutar cuando se veri…ca la condición 1
elseif condición_2
Instrucciones a ejecutar cuando no se veri…ca la condición 1 y sí la
condición_2
...
else
Instrucciones a ejecutar cuando no se veri…can las condiciones anteriores
end
Programación: estructuras condicionales
Podemos imponer más de una condición, o condiciones complejas,
utilizando los operadores relacionales combinados con operadores lógicos
Símbolo
Símbolo relacional
lógico
Negación lógica
< Menor ~A
o complementario
<= Menor o igual A&B Intersección \
> Mayor AjB Unión [
Unión exclusiva
>= Mayor o igual xor(A; B) (sólo uno ha
de ser cierto)
Unión de
x == y Igualdad any([A1 ; A2 ; :::; An ])
varios elementos
Intersección de
x ~=y Desigualdad all([A1 ; A2 ; :::; An ])
varios elementos
Si aplicamos los símbolos lógicos a un vector la operación se aplica en
cada elemento del vector, obteniendo un vector de ceros y unos.
Programación: estructuras condicionales
Ejemplo 1.
Vamos a escribir un programa que devuelva el valor de la hipotenusa dados
dos catetos si el valor absoluto de alguno de los dos es inferior a uno. En
caso de no cumplirse la condición el valor devuelto será cero.
function [t,y]=MatlabPractica2Ej4(y0,t0,T)
[t,y]=ode45(inline(’y^2-1’,’t’,’y’),[t0,T],y0);
axis([t0 T-4 5])
hold on
if y0==1 j y0==-1
plot(t,y,’k’)
elseif y0>1 j y0<-1
plot(t,y,’r’)
else
plot(t,y,’g’)
end
Programación: estructuras condicionales
-1
-2
-3
-4
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5