Sie sind auf Seite 1von 8

Grados de la EPSE

Prcticas de Matlab
Prctica 2
1. Archivos *.m
MATLAB tiene integrado su propio editor. MATLAB slo puede ejecutar funciones
(archivos .m) que estn en sus libreras o en el directorio actual. Por ello es necesario
cambiar al directorio donde salvamos nuestro archivo antes de poder ejecutarlo.
Para ver en qu directorio estamos se emplea la orden pwd". Tambin podemos
mirarlo en el recuadro de la parte superior de la pantalla.
Es posible realizar el cambio del directorio activo mediante la opcin Set Path
del men File, o bien elegir en Current Directory (parte superior de la pantalla) el
directorio donde hemos guardado nuestro archivo.
Usando estos archivos podemos ejecutar una sucesin de comandos de golpe ejecutando
desde la terminal el archivo *.m en el que hemos escrito los mismos.
Ejercicio 1 Vamos a dibujar varias soluciones de la ecuacin y
0
= 2ty en el intervalo
[2; 2] y en distintos colores.
1. Creamos un archivo nombre.m y lo guardamos.
2. Tecleamos en el archivo los siguientes comandos:
hold on
axis([2; 2; 20; 20])
f = inline(
0
2 + y + t
0
;
0
t
0
;
0
y
0
)
[t1; y1] = ode45(f; [2; 2]; 10);
[t2; y2] = ode45(f; [2; 2]; 10);
Repetimos los mismos pasos para las condiciones iniciales 15; 15; 20
plot(t1; y1;
0
r
0
); plot(t2; y2;
0
b
0
), etc.
3. Ejecutamos en la terminal de Matlab el archivo escribiendo el nombre del mismo.
1
Vamos a considerar la ecuacin logstica

y
0
= y y
2
;
y (t
0
) = y
0
:
Segn el anlisis cualitativo de las soluciones sabemos que, segn sea la condicin inicial,
las soluciones se comportan del siguiente modo:
1. y
0
= 0 e y
0
= 1 son puntos jos.
2. Si y
0
> 1, entonces y (t) 1 cuando t +:
3. Si 0 < y
0
< 1, entonces y (t) 1 cuando t +:
4. Si y
0
< 0, entonces y (t) cuando t +:
Los distintos tipos de soluciones se pueden ver en la Grca 1.
-2 0 2 4 6 8 10
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Figura 1: Soluciones de la ecuacin logstica
2
Ejercicio 2 Usando la segunda opcin del ejercicio anterior obtener un grco con dis-
tintos tipos de soluciones de la ecuacin logstica 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 grca el ttulo "Soluciones de la ecuacin logstica".
2. Programar en Matlab (parte I)
Al igual que en los lenguajes de alto nivel, MATLAB permite crear programas utilizan-
do programacin estructurada. Para ello cuenta con condicionales, bucles y funciones.
2.1. Funciones
Una funcin se dene mediante un chero .m, cuyo nombre coincide con el de la
funcin. La primera lnea ejecutable la palabra function. Su sintaxis es:
function argumentos_salida = nombre_funci on(argumentos_entrada)
seguida de las instrucciones necesarias.
Cuando hay ms de un argumento de salida, stos deben ir entre corchetes y separados
por comas.
Es conveniente utilizar las primeras lneas del chero para insertar un comentario
(inicindolas con %), explicando cmo debe usarse la funcin y sus argumentos (tanto
de entrada como de salida). As, dicha denicin ser visible mediante la instruccin help
nombre-funcin.
La funcin puede nalizarse en cualquier punto utilizando la instruccin return.
Una funcin utiliza las siguientes instrucciones para vericar el nmero de argumentos:
nargin: nmero de argumentos de entrada que el usuario ha pasado a la funcin.
nargout: nmero de argumentos de salida que el usuario desea recibir de la funcin.
Las funciones se guardan en un archivo con extensin ".m". El nombredel chero es
el que utilizamos para ejecutar el programa desde la lnea de comandos de Matlab. Por
tanto, si tenemos el chero Nombre.m, entonces escribiremos:
Nombre(Argumentos de entrada):
3
Ejemplo 1.
Como ejemplo de lo anterior, comenzaremos creando una funcin que calcule el valor
de la hipotenusa de un tringulo rectngulo a partir de sus dos catetos. A continuacin
se indican las instrucciones a programar. Las variable de entrada sern los valores de los
dos catetos, mientras que la variable de salida ser el valor de la hipotenusa.
En el archivo de nombre hipotenusa.m introducimos las siguientes lneas:
% La funcin hipotenusa calcula el valor de la hipotenusa de un tringulo dado el
valor de sus dos catetos
function hip = hipotenusa (cateto1, cateto2)
hip = sqrt(cateto1*cateto1+cateto2*cateto2);
Tras guardar el archivo, damos valores a dos variables y ejecutamos la nueva funcin
desde MATLAB mediante:
x=3, y=4, hipotenusa(x,y)
x =
3
y =
4
ans =
5
Observemos que la solucin de la funcin viene asignada a la variable ans.
Probemos ahora escribir:
x=5; y=12;z=hipotenusa(x,y)
z =
13
En este caso, las variables x e y toman los valores indicados, pero no muestran por
pantalla el resultado de la operacin. Como resumen, se pueden separar varias instruc-
ciones en una misma lnea por una coma o un punto y coma, diferencindose en que el
segundo caso no muestra los resultados de las operaciones. De ah que todas las instruc-
ciones de una funcin acaben con punto y coma. Cuando una instruccin es demasiado
larga para que entre en una sola lnea, se puede acabar con tres puntos (...) indicando
que contina en la lnea siguiente.
Es importante resaltar que no es necesario (pero si conveniente) que el nombre de la
funcin coincida con el nombre del chero. En cualquier caso, hay que recordar que para
ejecutar la funcin hemos de utilizar el nombre del chero.
Ejemplo 2.
Vamos a repetir el mismo programa anterior pero con dos variables de salida. Adems
de la hipotenusa hemos de calcular tambin la suma de los dos catetos.
%La funcin hipotenusa calcula el valor de la hipotenusa de un tringulo dado el
valor de sus dos catetos, as como la suma de los dos catetos
function [hip,suma] = hipotenusa (cateto1, cateto2)
4
hip = sqrt(cateto1*cateto1+cateto2*cateto2);
suma=cateto1+cateto2;
Si ejecutamos el comando
[h; s] = hipotenusa(x; y)
la variable h contendr el valor de la hipotenusa y la variable s el valor de la suma de los
dos catetos x e y: Si ejecutamos
hipotenusa(x; y)
slo obtendremos el valor de la primera variable, es decir, el de la hipotenusa.
Ejercicio 3 Construir una funcin que calcule, dado el valor del radio r, el rea del
crculo y la longitud de la circunferencia correspondientes.
La funcin tendr una variable de entrada y dos de salida.
Escribir unos comentarios explicativos al principio del archivo.
2.2. Estructuras de control condicionadas
Permiten seleccionar entre dos conjuntos alternativos de instrucciones dependiendo de
que se verique una condicin lgica (cuyo resultado es cierto o falso). Su sintaxis es de
la forma:
if condicin
Instrucciones que deben ejecutarse si la condicin es cierta.
else
Instrucciones a ejecutar si no se verica la condicin anterior
end
Cuando no hay instrucciones que ejecutar si la condicin no se cumple, la sintaxis
anterior se reduce a
if condicin
Instrucciones que deben ejecutarse
end
Al contrario, cuando se encadenan varios bloques alternativos, la sintaxis queda como:
if condicin_1
Instrucciones a ejecutar cuando se verica la condicin 1
elseif condicin_2
Instrucciones a ejecutar cuando no se verica la condicin 1 y s la condicin_2
. . .
else
Instrucciones a ejecutar cuando no se verican las condiciones anteriores
5
end
Podemos imponer ms de una condicin, o condiciones complejas, utilizando los op-
eradores relacionales (condiciones cuyo resultado es cierto o falso) combinados con oper-
adores lgicos (sirven como nexo entre varios relacionales).
Smbolo
lgico
Smbolo relacional
< Menor ~A
Negacin lgica
o complementario
<= Menor o igual A&B Operador de interseccin
> Mayor A[B Operador de unin '
>= Mayor o igual xor(A; B)
Unin exclusiva
(slo uno ha de ser cierto)
x == y Igualdad any([A
1
; A
2
; :::; A
n
])
Unin de varios elementos
(Algn elemento ha de ser cierto)
x ~ = y Desigualdad all([A
1
; A
2
; :::; A
n
])
Interseccin de varios elementos
(Todos han de ser ciertos)
Las operaciones <; _; >; _ aplicadas a nmeros complejos comparan las partes reales
de los mismos.
Si aplicamos los smbolos lgicos a un vector la operacin se aplica en cada elemento
del vector, obteniendo un vector de ceros y unos.
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
condicin el valor devuelto ser cero.
%Devuelve el valor de la hipotenusa si alguno de los dos catetos es menor
%que uno en valor absoluto.
%En caso contrario devuelve el valor cero
function H=HipCond(x,y)
if abs(x)<1 [ abs(y)<1
H=sqrt(x^2+y^2);
else
H=0;
end
Ejemplo 2.
Vamos a escribir un programa que devuelva el valor de la hipotenusa dados dos catetos
si el valor absoluto de los dos es inferior a uno, el valor del permetro del tringulo si alguno
de los dos catetos es igual a uno, o cero si no se cumple ninguna de las dos condiciones.
%Devuelve el valor de la hipotenusa si los dos catetos son menores
%que uno en valor absoluto.
6
%En caso contrario devuelve el valor cero
function H=HipCond2(x,y)
if abs(x)<1 & abs(y)<1
H=sqrt(x^2+y^2);
elseif abs(x)==1 [ abs(y)==1
Hip=sqrt(x^2+y^2);
H=Hip+x+y;
else
H=0;
end
Ejercicio 4 Escribir un programa que dibuje la solucin del problema de Cauchy
(
dy
dt
= y
2
1;
y (t
0
) = y
0;
para una condicin inicial dada en el intervalo [t
0
; T]. Seguir las siguientes indicaciones:
1. Las variables de entrada son la condicin inicial y
0
, el tiempo inicial t
0
y el tiempo
nal T:
2. Las variables de salida son los vectores t e y con los valores de la solucin.
3. Hallar la solucin del problema usando el comando ode45:
4. Si la condicin inicial es 1 o 1, dibujar la solucin en color negro.
5. Si la condicin inicial es mayor que 1 o menor que 1, dibujar la solucin en color
rojo.
6. Si la condicin inicial est entre 1 y 1, dibujar la solucin en color verde.
7. Usar el comando hold on, de forma que al usar el programa repetidas veces no se
borren las grcas.
8. Establecer los ejes [t
0
; T] [4; 5]:
9. Ejecutar el programa en el intervalo [0; 5] con las condiciones iniciales 1; 1; 0.9; 0.5; 3:
10. Ejecutar el programa en el intervalo [0; 1.5] con las condicin inicial 1.1.
Ejercicio 5 Escribir un programa en el que, dados una funcin f (x) y dos puntos a; b,
se calcule el punto medio del intervalo [a; b] si f (a) f (b) < 0. El programa devolver el
valor cero en caso de que no se cumpla la condicin.
El programa tendr tres argumentos de entrada: la funcin f (x) y los valores a; b.
7
Nota: Para introducir la funcin f se escribir entre comillas la funcin que deseemos
estudiar. As, si f (x) = x
3
y nuestra funcin se llama PuntoMedio, entonces pondremos
PuntoMedio(
0
x^3
0
; a; b)
Por otro lado, dentro del programa utilizaremos la funcin inline para crear la funcin.
Quedara de la siguiente manera:
function h=PuntoMedio(f,x,y)
g=inline(f);
.
.
.
(Resto de comandos)
8

Das könnte Ihnen auch gefallen