Lab 3 - Universidad de Concepción

Anuncio
UNIVERSIDAD CATOLICA DE LA SANTISIMA CONCEPCIÓN
DEPARTAMENTO DE MATEMÁTICA Y FÍSICA APLICADA
Franco A. Milanese
Laboratorio 3
Introducción a MATLAB
r:
grácas de funciones en dos dimensiones
1. Funciones en archivos .m
Supongamos que deseamos tener un chero que nos permita conocer el valor de las imágenes de
la función
y = sin(x + x2 ),
nos interesaría que dado un valor para
x
nos retorne el valor para
y.
En este caso podemos hacer:
function y=f(x)
y=sin(x+x.^2);
observe que en tal caso la operación potenciación debe anteponerse con el operador
la potenciación sea componente a componente. Obviamente la entrada
x
.
para que
de esta función puede
ser cualquier matriz, y la salida será una matriz de las mismas dimensiones.
Si nos interesara dibujar tal función en el intervalo
[−10, 10],
podemos hacer directamente
x=[10:0.1:10];
y=f(x);
plot(x,y);
También podemos denir funciones denidas por tramos usando este tipo de cheros. Por ejemplo, si interesa ingresar a MATLAB la función
(
x2 + 1 x > 0
g(x) :=
1
x≤0
x2 +1
podemos crear el chero función
function y=g(x)
in=find(x>0);
y(in)=x.^2+1;
in=find(x<=0);
y(in)=1./(x.^2+1);
2. Funciones como objetos inline
Los objetos inline son otra forma de representar funciones en MATLAB. Por ejemplo, para crear
un objeto inline que nos permita manejar la función
ejecutar la instrucción
g=inline('33*x.^2+cos(exp(x))','x');
1
g(x) = 33x2 +cos(ex ), debemos simplemente
una vez creado este tipo de dato, podemos dibujarlo rápidamente haciendo uso de la función
ezplot(),
según
ezplot(g)
La primera cadena de las entradas de
inline()
es la forma vectorizada de la operación que
dene a la función, mientras que la segunda entrada y siguientes, especican las variables que
independientes de al función a denir.
3. Arreglo de funciones
La instrucción
arreglo=@nombre
retorna un arreglo de funciones llamado
arreglo
que tiene una función llamada
nombre.
Un arreglo de función es un objeto de MATLAB que permite llamar a funciones indirectamente.
Se pueden utilizar para denir otras funciones e inclusive se pueden agrupar dentro de arreglos
tipo celda.
Cuando queramos denir una nueva función a través de un arreglo de funciones utilizaremos
funciones anónimas, estas se generan como se ejemplica a continuación. Supongamos que nos
interesa ingresar a MATLAB la función de la parábolas
y = 2x2 + 3x + 1,
esto lo hacemos según
a = 2;
b = 3;
c = 1;
parabola = @(x) a*x.^2 + b*x + c;
para poder dibujar este tipo de funciones hacemos uso de
plot().
x=linspace(0,10,100);
plot(x,parabola(x));
4. La ventana gráca
Como vimos en los ejemplos anteriores, sin importar el método que usemos para dibujar MATLAB siempre creará otra ventana, llamada por defecto
Figure 1
similar a la gura (
crear una nueva ventana gráca donde dibujar hacemos uso de la función
las intrucciones
figure(1);
ezplot(inline('x^2'));
figure(2);
ezplot(inline('x^2-1'));
2
??).
Para
figure(). Por ejemplo
Figura 1:
Ventana gráca por defecto de MATLAB.
figure(3);
ezplot(inline('x^2-2'));
crearán tres ventanas grácas llamadas
Figure 1, 2
y
3, las cuales se abrirán en ese orden con
tres grácas muy similares. Si nos interesa adjuntar estos tres grácos en una misma ventana
gráca hacemos uso del comando
hold on,
como se ilustra a continuación,
figure(4); hold on;
ezplot(inline('x^2'));
ezplot(inline('x^2-1'));
ezplot(inline('x^2-2'));
si nalmente no deseamos agregar más grácos a esta gura ejecutamos
hold off;
Además como anotaciones podemos agregar texto en ciertos lugares de los grácos de una gura.
Mientras la gura en la que deseamos añadir un comentario esté seleccionada con el comando
figure()
ejecutamos el comango
gtext().
Si conocemos la coordenada exacta donde queremos
hacer un comentario, podemos utilizar la función
text().
4.1. Uso del comando line(), label() y opciones de estilo en grácos
A modo de ejemplo, a continuación presentamos un código que sobrepone aproximaciones en
serie de Taylor de la función
y = sen(x)
y formatea un gráco con varios detalles. Para acceder
al rutero ingrese a
http://www.udec.cl/~fmilanese/codigo4.m
léalo y ejecútelo.
3
4.2. Opciones de estilo para dibujar curvas en 2D
Las opciones de estilo del comando
plot()
son una cadena que consiste de hasta tres carácteres
que especican color, el estilo de línea y forma de marcar los puntos de una gráca. Estos
caracteres son resumidos en la siguiente tabla
Estilo de color
Estilo de linea
y
amarillo
m
magenta
-
solida
r
rojo
rayada
g
verde
:
punteada
b
azul
-.
raya punto
w
blanco
k
negro
none
sin línea
Estilo de marcador
+
signo de suma
o
circulo
*
asterisco
x
con una equis
.
con un punto
∧
triángulo
s
cuadrado
d
diamante
los cuales puede ser usados como
plot(x,y,'r*') %dibuja con linea roja continua y con marcadores asterisco
plot(x,y,'b--') %dibuja con linea azul rayada
plot(x,y,'+') %dibuja puntos no conectados con un marcador +
5. Subgrácas en una gura
Si qse quiere hacer un cuantos grácos dentro de una misma gura, pero no sobreponerlos, se uti-
subplot(), este comando requiere tres entradas de numeros enteros subplot(m,n,p)
dividir la ventana gráca en m × n subventanas y elegir la subventana p−ésima,
liza el comando
y representa
contadas por las, como ventana de dibujo.
Por ejemplo
subplot(2,2,3)
dividirá la ventana gráca actual en cuatro subventanas y dibujará lo siguiente en la ventana
inferior izquierda.
6. Resumen de las principales funciones para gracar 2D
En la siguiente tabla se encuentran las principales funciones para hacer grácas 2D.
Nombre
fplot()
bar()
contour()
contourf()
polar()
quiver()
Descripción
Crea un gráco de una función de una variable
Crea un gráco de barras vertical
Crea un gráco de curvas de nivel
Crea un gráco de curvas de nivel llenas
Dibuja curvas descritas en coordenadas polares
Dibuja campos vectoriales
4
a continuación ejemplos de usos de estos códigos.
Función
fplot()
Código
f='sin(x.^2+3*x)'
fplot(f,[-10,pi])
Notar que f debe estar
Salida
denida en
bar()
t=linspace(0,2*pi,200);
r=sqrt(abs(2*sin(5*t))) ;
y=r.*sin(t);
bar(t,y);
axis([0 pi 0 inf ]);
contour()
r =-5:.2:5;
[X,Y]=meshgrid(r,r) ;
Z=-.5*X.^2 +X.*Y+Y.^2;
cs=contour(X,Y,Z);
clabel(cs);
polar()
t=linspace(0,2*pi,200);
r=sqrt(abs(2*sin(5*t))) ;
polar(t,r);
quiver()
r=-2:.2:2;
[X,Y]=meshgrid(r,r) ;
Z=X.^2-5*sin(X.*Y)+Y.^2;
[dx,dy]=gradient(Z,.2,.2);
quiver(X,Y,dx,dy,2);
5
x.
7. Ejercicios
1. Haga un rutero que graque las siguientes funciones
√
f (x) = sin(x2 )2 , r(x) = f ( x)
y
s(x) = f (r(x)).
etiquete los ejes, titule el gráco y ponga un leyenda.
n ∈ N dibuje las primeras n aproximaciones por
cos(x), recuerde que la n−ésima serie de taylor de una función
2. Haga una función en MATLAB que dado
serie de Taylor de la función
es
n
X
f (j) (0)
j!
j=0
Puede utilizar la función de MATLAB
(x)j .
factorial().
3. Haga una función MATLAB que dada una celda de funciones como arreglos haga los dibujos
de estas funciones en una misma ventana gráca.
4. Sabiendo que el comando
datestr(now(),'hh_ss_dd_mm')
retorna una cadena con la fecha actual en el formato hora_segundos_dias_minutos haga
una función MATLAB que dada una función y un título graque la función y le ponga como
subtitulo la fecha actual. Use la función
subtitle().
5. Sabiendo que el comando
print -djpeg85 -r300 matilda
graba una imagen de la ventana gráca actual en el archivo
matilda.jpeg
ubicado en el
directorio actual, haga una función MATLAB que dada una función la graque y grabe la
gráca con un nombre de la fecha a la que fue generada.
Referencias
Rudra Pratap, Getting Started with MATLAB 2009. Department of Mechanical Engineering Indian Institute of Science, Bangalore. New York, Oxford University Press 2010.
2 de enero de 2014
6
Descargar