curso de matlab - hosting miarroba

46
CURSO DE SCILAB INTRODUCCIÓN SEGUNDA PARTE

Upload: others

Post on 14-Nov-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

CURSO DE SCILAB

INTRODUCCIÓN

SEGUNDA PARTE

CONTENIDO

• El programa

• Entornos de Trabajo

• Uso del Help

• Operaciones con Vectores y Matrices

• Operaciones con Funciones

• Graficación

• Programación

• Debugger

GRÁFICOS: 2D Y 3D

SCILAB dispone de varias funciones básicas para crear gráficos 2-D. Pero la principalfunción es la siguiente:

plot2d() crea un gráfico a partir de vectores y/o columnas de matrices, conescalas sobre ambos ejes.

style Esta opción sirve para definir como será dibujada la curva.

logflag Dicha opción se emplea para seleccionar el tipo de escala sobre los ejes.

rect Esta opción puede ser usada para fijar los rangos de los ejes mínimos requeridos parala gráfica. Si esta opción es especificada, los valores asociados deberán ser dados como unvector con números reales de cuatro entradas: [xmin,ymin,xmax,ymax].

frameflag Esta opción puede ser usada para controlar el cómputo actual de los rangos de lascoordenadas para los valores mínimos requeridos. Los rangos en uso pueden tenerrequerimientos mayores o menores.

nax, leg

style

y yellow . point - solid

m magenta o circle : dotted

c cyan x x-mark -. dashdot

r red + plus -- dashed

g green * star

b blue s square

w white d diamond

k black v triangle (down)

^ triangle (up)

< triangle (left)

> triangle (right)

p pentagram

h hexagram

Existen funciones orientadas a añadir títulos al gráfico, a los ejes, a dibujar unacuadrícula auxiliar, etc.

title('título') añade un título al dibujo

xlabel('Nombre del Eje x') añade una etiqueta al eje de abscisas. Conxlabel off desaparece

ylabel('Nombre del Eje y') idem al eje de ordenadas. Con ylabel off

desaparece

xgrid activa una cuadrícula en el dibujo.

GRÁFICOS: 2D Y 3D

plot es la función clave de todos los gráficos 2-D en MATLAB. Ya se ha dicho queel elemento básico de los gráficos bidimensionales es el vector. Se utilizan tambiéncadenas de 1, 2 ó 3 caracteres para indicar colores y tipos de línea. La funciónplot(), no hace otra cosa que dibujar vectores.

GRÁFICOS: 2D Y 3D

» x=[1 3 2 4 5 3]

x =

1 3 2 4 5 3

» plot(x)

Es el comando más utilizado para gráficos en 2D

Representa gráficamente conjuntos de arrays de datos:

– Elige automáticamente los ejes apropiados

– Por defecto, conecta los datos mediante líneas rectas

COMANDO PLOT

» x=0:%pi/90:2*%pi;

» y=sin(x).*cos(x);

» plot(x,y)

» xgrid

» xlabel('eje x (en radianes)')

» ylabel('eje y')

» title('y=sen(x)*cos(x)')

EJEMPLO

• » xgetmouseDetermina las coordenadasdel punto en donde se ubiqueel puntero del mouse

• » xclickCalcular las coordenadas depuntos sobre la curva

• » xstring()Insertar textos en una figura

• » isoview()Escala isométricas

OTROS COMANDOS UTILES

» xi=0;h=%pi/360;xf=%pi/4;

» teta=xi:h:xf;

» f1=(2*teta-cos(2*teta))/2;

» f2=0.4*ones(sin(f1));

» figure

» plot(teta,f1,'g--',teta,f2,'r')

» xlabel('Ángulo (radianes)')

» xclick

» xstring(0.2,0.43,'2x-cos(2x))/2')

» // Cambie los valores de 0.2 y 0.43

» // por las dos ultimas cifras que arroja xclick

» title('Raiz aproximada')

4.02

)2cos(2 xx

Calcular gráficamente las soluciones de la ecuación

EJEMPLO

x = [11 14 15 16 17];

y = [695 750 705 720 690];

plot(x,y,’r*:’),

title('Indice general de la Bolsa de Madrid'),

xlabel('Septiembre 1998')

EJEMPLOS

11 12 13 14 15 16 17690

700

710

720

730

740

750Indice general de la Bolsa de Madrid

Septiembre 1998

» x=0:%pi/180:2*%pi;

» y=sin(x);

» z=cos(x);

» plot(x,y,x,z)

» A=[y' z']

» plot(x,A)

EJEMPLO

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

GRÁFICAS EN 2D Y 3D

Función eval se utiliza con funciones definidas con un carácter. y =

eval(’caracter’)

» f= 'sin(x)-2*cos(x)';

» x=0:%pi/90:2*%pi;

» y=eval(f);

» plot2d(x,y,nax=[0,6,0,2.4],rect=[0,0,6,2.4])

» [b,xb,yb]= xclick();

» xstring(xb,yb,' sen(x)-2cos(x) ')

Llamar una nueva figura figure o para referirse a una figura ya hecha figure(n)

Borrar la figura actual clf

close all borra todas las figuras. close(figure(n)) borra la figura n

Una ventana gráfica se puede dividir en m particiones horizontales y n verticales,con objeto de representar múltiples gráficos en ella. Cada una de estassubventanas tiene sus propios ejes, aunque otras propiedades son comunes atoda la figura. La forma general de este comando es:

subplot(m,n,i) donde m y n son el número de subdivisiones en filas ycolumnas, e i es la subdivisión que se convierte en activa. Las subdiviones senumeran consecutivamente empezando por las de la primera fila, siguiendo porlas de la segunda, etc.

COMANDOS UTILES

EJEMPLO» x=[0:0.1:2*%pi];

» subplot(121)

» plot(x,sin(x)+2*sin(2*x+0.5)+sin(3*x))

» subplot(122)

» plot2d2(x,sin(x))

CURVAS DE LISAJOUXt = 0:2*%pi/100:2*%pi;

x =sin(2*t);

y =sin(3*t);

plot(y,x)

DIAGRAMAS DE RADIACIÓN DE ANTENAS

z = 0:0.1:2*%pi;

r = sin(5*z);

polarplot(z,r)

bar() crea diagramas de barras.

barh() diagramas de barras horizontales.

pie() gráficos con forma de “tarta”.

champ() graficas de campos vectoriales

fchamp() campo vectorial (2D) correspondiente una EDO de segundo orden.

OTRAS FUNCIONES EN 2D

OTRAS FUNCIONES EN 2D

area() similar plot(), pero rellenando en ordenadas de 0 a y.

stairs() función análoga a bar() sin líneas internas.

errorbar() representa sobre una gráfica –mediante barras– valores de errores.

compass() dibuja los elementos de un vector complejo como un conjunto devectores partiendo de un origen común.

feather() dibuja los elementos de un vector complejo como un conjunto devectores partiendo de orígenes uniformemente espaciados sobre el eje deabscisas.

hist() dibuja histogramas de un vector.

Funciones gráficas 3D elementales:

La función plot3d es análoga a su homóloga bidimensional plot. Su forma mássencilla es la siguiente:

» plot3(x,y,z)

También existen otros comando de graficación en 3d como param3d

GRÁFICOS: 2D Y 3D

» t=linspace(0,4*%pi,100);

» param3d(cos(t),sin(t),t)

SURF

function z=f(x,y)

z=2*x^2+y^2;

endfunction

x=linspace(-1,1,100);

y=linspace(-2,2,200);

z=(feval(x,y,f))';

clf

surf(x,y,z)

Representación gráfica de superficies. mesh(x,y,Z),Creación de una malla [X, Y]=meshgrid(x,y)Gráfica de la malla construida sobre la superficie z mesh(X,Y,Z), meshz(X,Y,Z)Además hace una proyección sobre el plano z=0, meshc(X,Y,Z), líneas de contorno en elplano z=0

» x=[0:2:200];y=[0:50];

% Obtenemos la malla del dominio

»[X Y]=meshgrid(x,y);

» length(x),length(y)

» size(X), size(Y)

» Z=X.^2-Y.^2;

» figure(1);mesh(X,Y,Z)

» figure(2);meshz(X,Y,Z)

» figure(3);meshc(X,Y,Z)

GRÁFICOS: 2D Y 3D

020

4060

80100

120140

160180

200

05

1015

2025

3035

4045

50

-0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

x 104

020

4060

80100

120140

160180

200

05

1015

2025

3035

4045

50

-0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

x 104

020

4060

80100

120140

160180

200

05

1015

2025

3035

4045

50

-1

-0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

x 104

[ang,rad]=cart2pol(x,y) %De cartesianas a polares

[ang,rad,z]=cart2pol(x,y,z) %De cartesianas a cilindricas

[x,y]=pol2cart(ang,rad) %De polares a cartesianas

[x,y,z]=pol2cart(ang,rad,z) %De cilindricas a cartesianas

[angx,angz,rad]=cart2sph(x,y,z) %De cartesianas a esfericas

[x,y,z]=aph2cart(angx,angz,rad) %De esfericas a cartesianas

GRÁFICOS: 2D Y 3D

Transformación de coordenadas

%cilindricas

»[ang,rad,z]=cart2pol(sqrt(3),1,2)

%esfericas

»[ang1,ang2,rad1]=cart2sph(sqrt(3),1,2)

Para preparar pequeñas películas o movies se pueden utilizar las funciones movie,moviein y getframe. Una película se compone de varias imágenes, denominadasframes. La función getframe devuelve un vector columna con la informaciónnecesaria para reproducir la imagen que se acaba de representar en la figura oventana gráfica activa, por ejemplo con la función plot. El tamaño de este vectorcolumna depende del tamaño de la ventana, pero no de la complejidad del dibujo.La función moviein(n) reserva memoria para almacenar n frames. Una vez creada lapelícula se puede representar el número de veces que se desee con el comandomovie.

PELÍCULAS

for j=1:10

x=0:0.01:2*%pi;

plot(x,sin(j*x)/2)

M(j)=getframe;

end

movie(M,10)

EJEMPLO

Consideremos la ecuación de Van der Waals. Se considera el benceno para el cuala=18.78 atml2/mol2, b=0.1208 l/mol. Representar sobre una misma gráfica las dossubgráficas correspondientes a:

Isotermas de 100, 200, 300 y 400 ºC Isobaras de 25, 35, 45 y 55 atm

Cada curva debe ir con trazo diferenciado, con el texto que indique la isolínea que seha representado, así como el título de la gráfica y la etiqueta de los ejes. R=0.0821 yV=[2:100];

RTbVV

aP ))((

2

a=18.78;

b=0.1208;

R=0.0821;

subplot(1,2,1)

T=[373:100:673];

V=[2:100];

fac1=R./(V-b);

fac2=a./V.^2;

P=zeros(4,length(V));

P(1,:)=T(1)*fac1-fac2;

P(2,:)=T(2)*fac1-fac2;

P(3,:)=T(3)*fac1-fac2;

P(4,:)=T(4)*fac1-fac2;

plot(V,P(1,:),'-',V,P(2,:),'--

',V,P(3,:),':',V,P(4,:),'-.')

title('Ecuacion de Van der Waals: Isotermas')

xlabel('Volumen, ltr.')

ylabel('Presion, atm.')

axis([0, 50,0,15])

legend('T=100ºC','T=200ºC','T=300ºC','T=400ºC')

subplot(1,2,2)

P=[25:10:55];

T=zeros(4,length(V));

fac1=(V-b)/R;

T(1,:)=((P(1)+fac2).*fac1)-273.15;

T(2,:)=((P(2)+fac2).*fac1)-273.15;

T(3,:)=((P(3)+fac2).*fac1)-273.15;

T(4,:)=((P(4)+fac2).*fac1)-273.15;

plot(V,T(1,:),'-',V,T(2,:),'--

',V,T(3,:),':',V,T(4,:),'-.')

title('Ecuacion de Van der Waals: Isobaras')

xlabel('Volumen, ltr.')

ylabel('Temperatura, ºC')

legend('P=25 atm.','P=35 atm.','P=45

atm.','P=55 atm.')

0 5 10 15 20 25 30 35 40 45 500

5

10

15Ecuacion de Van der Waals: Isotermas

Volumen, ltr.

Pre

sio

n,

atm

.

T=100ºC

T=200ºC

T=300ºC

T=400ºC

0 10 20 30 40 50 60 70 80 90 1000

1

2

3

4

5

6

7x 10

4 Ecuacion de Van der Waals: Isobaras

Volumen, ltr.

Tem

pera

tura

, ºC

P=25 atm.

P=35 atm.

P=45 atm.

P=55 atm.

Dada la función f(x,y)=xy, es posible obtener sobre una misma ventana gráfica lassiguientes representaciones:

La superficie definida por la función sobre el dominio [-10,10]*[-10,10].

Las líneas de contorno sobre la superficie.

La proyección de las líneas de contorno sobre el domino de definición.

La proyección de las líneas de contorno sobre el plano xy correspondientes a losvalores –4,-1, 1 y 4.

EJEMPLO

x=[-10:0.5:10]; y=x;

[X,Y]=meshgrid(x,y);

Z=X.*Y;

subplot(221)

mesh(X,Y,Z)

legend('z=xy')

xlabel('eje x')

ylabel('eje y')

zlabel('eje z')

title('superficie z=xy')

subplot(222)

contour3(Z)

grid off

xlabel('eje x')

ylabel('eje y')

zlabel('eje z')

title('lineas de contorno 3D')

subplot(223)

cs=contour(Z);

contour(x,y,Z)

grid off

clabel(cs)

xlabel('eje x')

ylabel('eje y')

title('Proyección de las líneas de contorno')

subplot(224)

contour(Z,[-4,-1,1,4])

grid off

xlabel('eje x')

ylabel('eje y')

title('Proyección de las líneas de contorno')

-10

0

10

-10

0

10-100

-50

0

50

100

eje x

superficie z=xy

eje y

eje

z

z=xy

1020

3040

1020

3040

-100

-50

0

50

100

eje

z

lineas de contorno 3D

eje xeje y

6080100

eje x

eje

y

Proyeccion de las lineas de contorno

-10 -8 -6 -4 -2 0 2 4 6 8 10-10

-5

0

5

10

eje x

eje

y

Proyeccion de las lineas de contorno

5 10 15 20 25 30 35 40

5

10

15

20

25

30

35

40

GRÁFICOS: 2D Y 3D

x=[0:0.1:1]; %puntos de discretizacion del eje ox

rad=x.^2+1; %vector de radios

n=length(rad); %numero de radios

cylinder(rad,n) %representacion del cilindro

xlabel('eje x')

ylabel('eje y')

zlabel('eje z')

[X,Y,Z]=cylinder(rad,n);

h=surf(X,Y,Z); %calculo del objeto

rotate(h,[0,1,0],90)

%Al rotar desaparecen las etiquetas de los ejes

xlabel('eje x')

ylabel('eje y')

zlabel('eje z')

view(15,15) %cambiamos el punto de observacion

grid off

legend('f(x)=x^2+1')

Representar la superficie de revolución obtenida al girar la curva y=x2+1alrededor del eje ox.

EJEMPLO

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6-2

-1

0

1

2

-1.5

-1

-0.5

0

0.5

1

1.5

2

2.5

eje y

eje x

eje

z

f(x)=x2+1

¿Qué son?¿Para qué

sirven?Tipos de

archivos mCaracterísticas de funciones

Ejemplo de función

Pasos que sigue MATLAB

M - FILES

MATLAB™ permite crear funciones nuevas en forma de archivos con extensión *.m y almacenados

Un archivo *.m es una secuencia de órdenes de MATLAB que puede contener, incluso, referencias a otros archivo *.m

Los archivo *.m son textos ASCII creados con cualquier editor o procesador de texto

¿QUÉ SON LOS M-FILES?

M-FILES

Contienen órdenes de

MATLAB

Se invocan desde la ventana da

órdenes o desde otro archivo .mSe editan y

graban como ficheros ASCII

Automatizar secuencias de órdenesque se utilizan de forma repetitiva.

Proporcionar extensibilidad aMATLAB con la posibilidad deañadir nuevas funciones cuyautilización no difiere de las queincluye originalmente.

¿PARA QUÉ SIRVEN?

Archivos predefinidos:

Seno, Coseno, Tangente.

Archivos propios:

Son un compendio de funciones predefinidas ya sea matrices, vectores, senos, cosenos, etc. que generan un programa nuevo y especifico

TIPOS DE M - FILES

El nombre de la función y del archivo debe ser el mismo

Esta se ejecuta desde el entorno de MATLAB por primera vez.

Son capaces de generar programas emergentes y trabajar en un entorno fuera del MATLAB, pero los cálculos siguen siendo ejecutados dentro del MATLAB.

CARACTERÍSTICAS DE FUNCIONES