You are on page 1of 58

UNIVERSIDAD NACIONAL DEL CENTRO DEL PERÚ

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

DEPARTAMENTO ACADEMICO DE ELECTRICIDAD Y ELECTRONICA

MANUAL DE PROGRAMACION II

MATLAB
Ing. Aquiles Aquino Rivera

C.U., Octubre del 2010


INTRODUCCIÓN.-
MATLAB “MATriz LABoratory”. Es un programa que abarca muchos aspectos, siendo
uno de ellos para realizar cálculos numéricos con vectores y matrices, en el cual se puede
trabajar con números escalares (tanto reales como complejos), con cadenas de caracteres y
con otras estructuras de información más complejas.

Matlab es un lenguaje de alto rendimiento para cálculos técnicos, asi como también es útil
para programar y resolver problemas iterativos mediante comandos. Uno de sus puntos
fuertes es que permite construir nuestras propias herramientas reutilizables. Se puede crear
fácilmente funciones y programas especiales (conocidos como M-archivos) en código
Matlab, los cuales se pueden agrupar en Toolbox (también llamadas librerías): colección
especializada de M-archivos para trabajar en clases particulares de problemas.
Matlab, a parte del cálculo matricial y álgebra lineal, también puede manejar polinomios,
funciones, ecuaciones diferenciales ordinarias, gráficos en 2D y 3D.

ESPACIO DE TRABAJO DE MATLAB


Para iniciar el trabajo en Matlab (haciendo un clic en el icono que aparece en el escritorio o
en su defecto en Inicio->Todos los programas) aparece en pantalla:

Todas las sentencias que se va a utilizar trabajar se da en la ventana Command Window


(ventana de comandos). Es la ventana de mayor tamaño.
Si se quiere información acerca de las variables con las cuales se esta trabajando se utiliza
la ventana Workspace (espacio de trabajo) o en todo caso se digita:
who: Para obtener la lista de las variables (no de sus valores)
whos: Para obtener la lista de las variables e información del tamaño, tipo y atributos.

Para conocer el valor que tiene una variable lo determinamos escribiendo el nombre de la
variable y pulsando Intro.
Con el Command History se visualiza las órdenes previas, se utiliza las flechas del teclado
↑ y ↓.

MATEMÁTICA SENCILLA
En Matlab se puede trabajar con las siguientes operaciones básicas:

OPERACION EXPRESION EN MATLAB


suma g+b
resta g-b
multiplicación g*b
división g/b
potencia g^ b
• Orden de precedencia de operaciones:
Primero: ^. Segundo: * /. Y tercero: + -.

El punto y coma (;) se utiliza para que Matlab evalúe la línea pero que no presenta la
respuesta.
al final de la sentencia.
Si la sentencia es demasiado larga para que quepa en una sola línea se digita tres puntos
(…) seguido de la tecla Intro para indicar que continúa en la línea siguiente.

Ejemplos:
>> a = 7 % da valor a la variable a y la presenta en pantalla
a =7
>> b = 4; % no presenta el valor de b por el (;) al final.
>> a + b % realiza la suma de dos variables y guarda la solución en la variable ans.
(ya que no se dio una variable a la respuesta).
ans =11
>> a / b
ans =1.7500
>> a ^ b
ans =2401
>> 5 * a
ans =35

>> who % presenta una lista de los nombres de las variables utilizadas.
Your variables are:
a ans b
>> whos % da una lista de las variables usadas más completa que la anterior.
Name Size Bytes Class Attributes
a 1x1 8 double
ans 1x1 8 double
b 1x1 8 double

ALMACENAR Y RECUPERAR DATOS.-


Matlab permite guardar y cargar datos de los archivos del computador. En el menú File, la
opción Save Workspace as… guarda todas las variables actuales e Import Data… carga
variables de un espacio de trabajo guardado previamente.
Otra forma sería guardar el estado de una sesión de trabajo con el comando save antes de
salir:
>> save
Al teclear, automáticamente se crea un fichero llamado matlab.mat. Puede recuperarse la
siguiente vez que se arranque el programa con el comando load:
>> load.
FORMATOS DE VISUALIZACIÓN DE NÚMEROS.-
Matlab no cambia la representación interna de un número cuando se escogen distintos
formatos, sólo se modifica la forma de visualizarlo.
Ejemplo: >> pi
format short, Formato que trabaja con 4 dígitos.
3.1416
format long, Formato que trabaja con 14 o 15 dígitos
3.14159265358979
format short e Formato que trabaja con 4 dígitos después
3.1416e+000
format long e Formato coma flotante con 14 o 15 dígitos
después de la coma
3.141592653589793e+000
format short g La mejor entre coma fija o flotante con 4
dígitos después de la coma
3.1416
format short eng Notación científica con 4 dígitos después de
la coma y un exponente de 3
3.1416e+000
format long eng Notación científica con 16 dígitos.
format bank: Formato que trabaja con 2 dígitos.
format hex Hexadecimal 400921fb54442d18
format rat Aproximación racional 355/113

ACERCA DE LAS VARIABLES


Matlab almacena el último resultado obtenido en la variable ans.
Las variables son sensibles a las mayúsculas, deben comenzar siempre con una letra, no
pueden contener espacios en blanco y pueden nombrarse hasta con 63 caracteres.

Algunas variables especiales de Matlab:


Ans: Variable usada por defecto para almacenar el último resultado ? ? ?
Pi: Razón de una circunferencia a su diámetro 3.1416
Inf: Infinito Inf
Nan: Magnitud no numérica NaN
i o j: i = j = −1 0 + 1.0000i
realmin: El número real positivo más pequeño que es utilizable 2.2251e-308
realmax: El número real positivo más grande que es utilizable 1.7977e+308
clear: Para borrar todas las variables del espacio de trabajo, pero no borra lo de las
demás ventanas.
clc: Borra lo que hay en la ventana de comandos pero no borra las variables de la
memoria del espacio de trabajo.
Algunos comandos de Matlab nos facilitan información sobre la fecha, como clock, date o
calendar.
>> clock;
>> date % (enter)
ans =
04-Apr-2010
>> calendar % (enter). mes actual
Apr 2010
S M Tu W Th F S
0 0 0 0 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 0
0 0 0 0 0 0 0

• OTRAS CARACTERÍSTICAS BÁSICAS.-


Los comentarios se escriben después del símbolo de tanto por ciento (%), de este modo
todo lo que se escriba no será leído por Matlab. Se puede colocar varias órdenes en una
línea si se separan correctamente, puede ser:
por comas (,) que hace que se visualicen los resultados o
puntos y comas (;) que suprimen la impresión en pantalla

AYUDA EN LÍNEA
Matlab proporciona asistencia de varios modos.
Si se quiere consultar un comando determinado se solicita información escribiendo en la
ventana de comandos help <comando a consultar>, o simplemente help. También se
puede abrir la ventana de ayuda con el ratón o con la tecla F1. Una vez abierta esta ventana
podemos buscar por contenidos, palabras concretas, demostraciones, etc.
Además con la orden lookfor <palabra>, busca en todas las primeras líneas de las ayudas
de los temas de Matlab y devuelve aquellos que contienen la palabra clave que se busaca.

APROXIMACIONES EN MATEMATICAS.-
Se tiene el siguiente ejemplo
x = 4.92
ceil (x) redondea hacia infinito 5
fix (x) redondea hacia cero 4
floor (x) redondea hacia menos infinito 4
round (x) redondea hacia el entero más próximo 5
(con x escalar, vector o matriz, se redondearía en cada caso los elemento individualmente)
Ejemplo:
>> round ( [19.54646 13.656 -2.1565 0.78] )
ans =
20 14 -2 1

TRIGONOMETRÍA.-
Sea … (x) función trigonométrica con el ángulo expresado en radianes
sin (x)
cos (x)
tan (x)
Sea …d (x) función trigonométrica con el ángulo expresado en grados sexagesimales
sind (x) seno (grados)
Sea …h (x) función trigonométrica hiperbólica con el ángulo expresado en radianes
sinh (x) seno hiperbólico (radianes).
asind (x)

Ejemplos:
>> sin (pi/2)
ans = 1

>> sind (-90)


ans = -1

>> cosd (60)


ans = 0.5000

>> asind (1)


ans = 90

ALGUNAS OPERACIONES.-
Como ejemplo se tiene:
abs (x) valor absoluto o magnitud de un número complejo.
sign (x) signo del argumento si x es un valor real
(-1 si es negativo, 0 si es cero, 1 si es positivo).
exp (x) exponencial
gcd (m,n) máximo común divisor
lcm (m,n) mínimo común múltiplo
log (x) logaritmo neperiano o natural
log2 (x) logaritmo en base 2
log10 (x) logaritmo decimal
mod(x,y) módulo después de la división
rem (x,y) resto de la división entera
sqrt (x) raíz cuadrada
nthroot (x,n) raíz n-ésima de x
(x e y cualquier escalar, m y n enteros).

Ejemplos:
>> abs (-5) % valor absoluto de -5
ans = 5

>> sign (18) % signo del número 18


ans = 1

>> gcd (9,12) % máximo común divisor entre 9 y 12


ans = 3
>> lcm (10,25) % mínimo común múltiplo
ans = 50

>> mod (-12,5) % módulo de la división de -12 entre 5


ans = 3

> rem (13,5) % resto de la división de 13 entre 5


ans = 3

>> nthroot (8,3) % raíz cúbica de 8


ans = 2

LIMITES.-
Ejemplos:
1.- syms m
limit((4*m^3+4*m-2)/(2*m^3-6),inf) Resultado:2

2.- syms d
>> limit (((2+d)/(d^2))^(1/2),inf) resultado:0

3.- syms n
>> limit((n-1)/(sqrt(n)-1),1) resultado:2

DERIVADAS.-
diff ('f') derivada de la función respecto a x
diff ('f',t) derivada parcial de la función respecto a t
diff ('f',n) derivada n-ésima de la función respecto a x
feval ('f',a) evalúa la función en a.
Ejemplos:
1.-
> diff ('sin (7*x) ') % derivada respecto a x
ans = 7*cos(7*x)

2.-
>> diff ('(exp (x) * cos (3*x*y))','y') % derivada parcial respecto a y
ans = -3*exp(x)*sin(3*x*y)*x

3.-
>> diff ('(sin (x^2))',2) % segunda derivada respecto a x
ans = -4*sin(x^2)*x^2+2*cos(x^2)

4.- Sea la función: f=sin(y*x)+y^3-4*x^2;


syms x y
>> f=sin(y*x)+y^3-4*x^2;
>> diff(diff(f,y),x)
ans = -sin(y*x)*y*x+cos(y*x)
POLINOMIOS.-
MATLAB contiene comandos para realizar las operaciones estándar con polinomios. Tales como
determinar sus raíces, evaluación, diferencia, interpolación y ajuste.

Ejemplos:

Dado los polinomios:

P1(y)= 2y^4-7y^3+4y^2+2;

P2(y)=-3y^3+4y-5

» p1=[2 -7 3 0 2]

p1 = » p2=[3 0 4 -5]

2 -7 3 0 2 p2 =

3 0 4 -5

RAÍCES DEL POLINOMIO

1.- » raiz1=roots(p1)

raiz1 =

2.9533

1.0000

-0.2266 + 0.5360i

-0.2266 - 0.5360i

2.-» raiz2=roots(p2) Determinación de las raíces del polinomio p2

raiz2 =

-0.4133 + 1.3586i

-0.4133 - 1.3586i

0.8265

3.- Sea el polinomio: » s=[1 0 -2 -5];

» roots(s)
ans =

2.0946

-1.0473 + 1.1359i

-1.0473 - 1.1359i

DADO LAS RAÍCES SE OBTIENE EL POLINOMIO (En su forma simplificada):

» poly(raiz1)

ans =

1.0000 -3.5000 1.5000 0.0000 1.0000 (x2)

4.- » r=[2.0946;-1.0473 + 1.1359i;-1.0473 - 1.1359i];

» p=poly(r)

p= 1.0000 0 -2.0002 -5.0000

Otras Características:

conv (p,q) multiplica los dos polinomios p y q


deconv (c,q) divide el polinomio c entre q
polyder (p) calcula la derivada del polinomio p
polyder (p,q) calcula la derivada del producto de los polinomios p y q
polyval (p,A) evalúa el polinomio p en todos los valores de la matriz A
Matlab no tiene incorporada una función para sumar polinomios.

PRODUCTO DE POLINOMIOS.-

» p3=conv(p1,p2)

p3 =

6 -21 17 -38 53 -15 8 -10

DIVISIÓN DE POLINOMIOS.-

» p3=deconv(p1,p2)

p3 = 6 -21 17 -38 53 -15 8 -10


Otra manera:

2.- » d=[4 1 -3 2];

» e=[1 3 4];

» [c r]=deconv(d,e)

c= 4 -11

r= 0 0 14 46

O también:

3.- » [cociente,residuo]=deconv(p1,p2)

cociente = 0.6667 -2.3333

residuo = 0 0.0000 0.3333 12.6667 -9.6667

DERIVADA DE UN POLINOMIO.-

» polyder(p1)

ans = 8 -21 6 0

1.- » polyder(p2)

ans = 9 0 4

2.- » t=[2 -1 3 5 9];

» polyder(t)

ans = 8 -3 6 5

DERIVADA DE UN PRODUCTO DE POLINOMIOS:

» p=[1 -5 9];

» o=[1 2 3];

» polyder(p,o)

ans = 4 -9 4 3

DERIVADA DE UN COCIENTE DE POLINOMIOS:

» p=[1 -5 9];
» o=[1 5];

» [n d]=polyder(p,o)

n= 1 10 -34

d= 1 10 25

AJUSTE POLINOMICO DE CURVAS.-

Matlab utiliza el método de los mínimos cuadrados, para realizar el ajuste de curvas a través de un
polinomio, para ello toma un conjunto de datos:

X 0 1 2 4 Ejemplo:

Y 1 1 7 61

» x=[0 1 2 4];

» y=[1 1 7 61];

» polyfit(x,y,3)

ans =

1.0000 0.0000 -1.0000 1.0000 (x^3-x+1)

(polyfit=ajuste de curva),

(3=grado del polinomio a ajustar)

FUNCIONES SIMBÓLICAS PARA LA INTEGRACIÓN.-

1.-» syms x Sea f(x)=tan x –x^2, Calcule la integral definida de f:

» f=tan(x)-x^2; ∫f(x)dx

» int(f,x)

ans = -log(cos(x))-1/3*x^3

2.- » syms x y Calcule:

» f=y^3-sec(x); ∫ ∫ (y^3-sec(x))dxdy
» int(int(f,x),y)

ans = 1/4*y^4*x-log(sec(x)+tan(x))*y

3.- » syms x y Calcular:

» f=x*y^3-tan(x); ∫ ∫(xy^3-tan(x))

» int(int(f,y),x)

ans = 1/8*y^4*x^2+log(cos(x))*y

4.- » syms x y z Integral triple

» f=6*x^2*y-z*cos(y);

» int(int(int(f,x),y),z)

ans = x^3*y^2*z-1/2*sin(y)*z^2*x

5.- » syms x a b Integral con valores de frontera:

» f=exp(x)-x^2;

» int(f,x,a,b)

ans = exp(b)-1/3*b^3-exp(a)+1/3*a^3

Además:

1.- Calcule la integral r entre 0 y 2 por el método de Simpson.

quad(inline (f,a,b)

>> r=quad(inline ('1./(x.^3-2*x-5)'),0,2)

r = -0.4605

2.- Calcule la integral doble en el campo de variación de (x,y)

dblquad(inline(f,xmin,xmax,ymin,ymax)

>> =dblquad(inline('y*sin(x)+x*cos(y)'),pi,2*pi,0,pi)

p = -9.8696

ESTADÍSTICA DESCRIPTIVA.-
1.- Media.- Es el resultado de la suma de todos los valores de una variable dividida entre el numero
total de datos.

Ejemplo

Edades:25,56,48,15,47,74,28,60,59,33,54

» x=[25,56,48,15,47,74,28,60,59,33,54];

» media=mean(x)

media = 45.3636

» x=[25,56,48,15,47,74,28,60,59,33,54];

» media=mean(x);

» bar(x) (Presenta datos en grafico de barras).

2.- Mediana.- Es la medida de tendencia central equidistante de los extremos.

» x=[25,56,48,15,47,74,28,60,59,33,54];

» Mediana=median(x)

Mediana = 48

Medidas de dispersión.-

1.- Varianza.- Medida de los cuadrados de los diferenciados entre cada valor de la variable y la
media aritmética.

Ejemplo:

» Varianza=var(x,1)

Varianza = 291.6860

2.- Desviación típica.- Es la raíz cuadrada de la varianza.

1.- » Desviacion=std(x,1) (considera como denominador n)

Desviacion = 17.0788

2.- » Desviación=std(x) (Considera como denominador n-1)


Desviación = 17.9124

Observación:

Para resolver un sistema de ecuaciones especial:

>>[x]=solve('3^x+3^(x-1)+3^(x-2)+3^(x-3)+3^(x-4)=363'))

>>x=5

NÚMEROS COMPLEJOS

El trabajo en el campo de los números complejos esta implementado en MATLAB, siendo la


convención de que todas las funciones empiezan con minúscula, donde una i o una j representan el
numero imaginario.

Sobre los números complejos pueden ser aplicados las operaciones habituales presentando lo
resultados de modo exacto. Los números complejos se expresan en la forma: a+bi o a+bj.

Ejemplos:

1.- Obtener la raíz cuadrada de -13

» sqrt(-13)

ans = 0 + 3.6056i

Observación.-

• Cuando se trabaja con complejos conviene no utilizar la i, como variable ordinaria.

Conviene hacer antes: clear i para que i no este definida.

2.- » z1=3+5j

z1 = 3.0000 + 5.0000i

3.- » z4=1-2i

z4 = 1.0000 - 2.0000i

Para obtener la Raíz cuadrada de un numero complejo.-

» sqrt(4+5i)

ans = 2.2807 + 1.0962i


1.- Suma de números complejos.-

» z1+z4

ans = 4.0000 + 3.0000i

2.- Multiplicación y división de números complejos.-

» z1*z4

ans = 13.0000 -1.0000i

3.- >> r=(1-5i)*(1-i)/(-1+2i)

r = -1.6000 + 2.8000i

Otra manera:

>> format rat

>> r=(1-5i)*(1-i)/(-1+2i)

r= -8/5 + 14/5i (Presenta la respuesta en fracciones)

Funciones con argumentos complejos:

- Funciones trigonométricas

- Funciones hiperbólicas

- Funciones exponenciales y logarítmicas

Ejemplo:

>> format short

>> log(z1)

ans = 1.7632 + 1.0304i

Funciones especificas para la parte real e imaginaria.-

abs(Z) : Modulo del complejo z

angle(Z) : Argumento del complejo z


conj(Z) : Conjugado del complejo z

real(Z) : Parte real del complejo z

imag(Z) : Parte imaginaria.

Ejemplos:

1.- >> real(i^i)

ans = 0.2079

2.- Para determinar el ángulo y modulo se tiene:

» z=4i/(1+i)

z = 2.0000 + 2.0000i

» f1=angle(z)*180/pi , (f1=angulo en sexagesimales)

f1 = 45

» modulo=abs(z)

modulo = 2.8284

3.- Sea:

» u=(3+2j)/(1-j);

» real(u),imag(u),angle(u),abs(u)

ans = 0.5000

ans = 2.5000

ans = 1.3734 (En radianes)

ans = 2.5495 (Modulo)

Ejemplos adicionales:

>> B=[7 8 9;4 5 6],E=[1+2i 3+i;4-i i]

B= 7 8 9

4 5 6

E = 1.0000 + 2.0000i 3.0000 + 1.0000i

4.0000 - 1.0000i 0 + 1.0000i


>> sin(B)

ans = 0.6570 0.9894 0.4121

-0.7568 -0.9589 -0.2794

>> sin(E)

ans = 3.1658 + 1.9596i 0.2178 - 1.1634i

-1.1678 + 0.7682i 0 + 1.1752i

>> exp(E)

ans = -1.1312 + 2.4717i 10.8523 +16.9014i

29.4995 -45.9428i 0.5403 + 0.8415i

>> log10(E)

ans = 0.3495 + 0.4808i 0.5000 + 0.1397i

0.6152 - 0.1064i

Problemas.-

Calcular la parte real, imaginaria, modulo y argumento de:

i3+i , (1+√3i)1-i , ii

FUNCIONES PARA REALIZAR CONVERSIONES DE COORDENADAS

MATLAB permite trabajar distintos sistemas de coordenadas e implementar funciones para realizar
conversiones de coordenadas de un sistemas a otro.

1.- Cilíndricas a rectangulares: x=r*cos θ

y=r*sen θ

z=z

2.- Rectangulares a cilíndricas: r2=x2+y2

θ=arctan(y/x)

z=z

3.- Esféricas a rectangulares: x=ρ*senφ*cosθ

y= ρ*senφ*senθ
z= ρ*cosθ

4.- Rectangulares a esféricas: ρ2=x2+y2+z2

θ =arctan(y/x)

Sintaxis de las funciones:

[x,y] = pol2cart(THETA,RHO) : Transforma polares a rectangulares. **

[Angulo,Modulo]=cart2pol(x,y) : Transforma rectangulares a polares **

[x,y,z] = sph2cart(THETA,PHI,R) : Transforma esféricas a rectangulares. **

[THETA,PHI,R]=cart2sph(x,y,z) : Transforma cartesianas a esféricas.

[THETA,RHO,Z]=cart2pol(x,y,z) : Transforma cartesianas a cilíndricas

[THETA,RHO]=cart2pol(x,y) : Transforma cartesianas a polares

[x,y,z] = pol2cart(THETA,RHO,Z) : Transforma cilíndricas a cartesianas.

Ejemplos:

1.- Convertir las coordenadas esféricas(4,pi/6,pi/4) en coordenadas rectangulares.

2.- Convertir las coordenadas rectangulares (√6, √2,2√2) en coordenadas esfericas.

>> [theta,phi,r]=cart2sph(√6, √2,2√2)

x=

y=

z=

3.- Transformar el punto (2, π/4) de coordenadas polares a cartesianas

>> [x,y]=pol2cart(2,pi/4)

x=

-0.3268

y=

0.7142

4.- Convertir las coordenadas cartesianas (3,4) en coordenadas polares.


VECTORES Y ARREGLOS
Arreglos.- Es un conjunto de números ordenados en filas y columnas.

Ejemplo:

1.- » a=[1 2 4;0 8 2;4 7 -5]

a=

1 2 4

0 8 2

4 7 -5

*Arreglos unidimensionales.- Aquellos números ordenados en una sola fila o columna.

Ejemplo:

1.- » b=[1 -9 5 8] (Fila)

b= 1 -9 5 8

2.- » b(2) (Para ubicar la posición de un numero)

ans = -9

» b(end) (para ubicar el componente final)

ans= 8

» b(1:3)

ans= 1 -9 5

3.- » c=[-5;0;5;4;7] (Columna)

c=

-5

Para crear un arreglo en fila con valor inicial 2 que se incrementa en 0.7 hasta 5.6, se tiene:

4.- » d=2:0.7:5.6 [v inicial:incrementos:v final]


d=

2.0000 2.7000 3.4000 4.1000 4.8000 5.5000

• Arreglos bidimensionales.- Conjunto de números ordenados en filas y columnas.

Ejemplo:

1.- » e=[4 -8 7 5;7 0 5 -4;1 0 -2 5;7 3 6 8]

e=

4 -8 7 5

7 0 5 -4

1 0 -2 5

7 3 6 8

Para visualizar la posición:

2.- » e(2,3)

ans = 5

Para visualizar los componentes de la segunda fila:

3.- » e(2,:)

ans = 7 0 5 -4

De manera similar para la tercera columna:

4.- » e(:,3)

ans =

-2

5.- e (2, [3 1] ) % escribe de la segunda fila de la matriz, las columnas 3 y 1

ans = 5 7
Operadores aritméticos de arreglos.-

1. » A=[-3 5;0 7];


» C=[6 1;5 9];

» D=A+C (Adición)

D=

3 6

5 16

2.- » E=C+4 (Adición de un arreglo y un numero)

E=

10 5

9 13

3.- » S=A-C (Sustracción)

S=

-9 4

-5 -2

4.- » M=A.*C (Multiplicación: elemento a elemento)

M=

-18 5

0 63

5.- » F=5*A (Multip. de un arreglo por un numero)

F=

-15 25

0 35

6.- » div=A./C (división elemento a elemento)

div =

-0.5000 5.0000

0 0.7778
FUNCIONES PARA OPERAR CON VECTORES
cross (x,y) producto vectorial entre los vectores x e y

dot (x,y) producto escalar entre los vectores x e y

Ejemplos:

>> x = [1 2 3]; y = [4 5 6];

>> cross (x,y) % producto vectorial

ans =

-3 6 -3

>> dot (x,y) % producto escalar

ans = 32

MATRIZ.

Es un arreglo rectangular de números reales o complejos, ordenados en filas y columnas.

1.- Adición de matrices:

Ejemplos:

1. » B=[-1 5 -7;2 5 -6;5 0 8];


» D=[1 2 4;0 8 -9;4 7 -5];

» A=B+D

A=

0 7 -3

2 13 -15

9 7 3

Para ubicar el componente de la 2da. fila y 3ra.columna

» A(2,3)

2.- Sustracción.-

» S=D-B

S=

2 -3 11

-2 3 -3
-1 7 -13

3.- Multiplicación.-

Ejemplos

3.1.-» M=B*D

M=

-29 -11 -14

-22 2 -7

37 66 -20

3.2.- » E=[3 5 -7;1 4 -2;0 8 1];

» F=[2 5;8 -5;4 -6];

» N=E*F

N=

18 32

26 -3

68 -46

Clases de Matrices.-

1.- Traspuesta de una matriz.

Ejemplo

1.- » E=[3 5 -7;1 4 -2;0 8 1;2 5 7]

E=

3 5 -7

1 4 -2

0 8 1

2 5 7 (filaxcolumna) (4x3)

2.- » g=E' (Transpuesta=operador apostrofe ‘)

g=
3 1 0 2

5 4 8 5

-7 -2 1 7

2.- Matriz simétrica.- Cuando es igual a su traspuesta.

3.- Matriz identidad.

Se cumple:

A*I=I*A=A

Matriz triangular superior. , Matriz triangular inferior.

Matriz diagonal , Matriz periódica.

Matriz inversa.-AC=I y CA=I (C es la matriz inversa de A)

Ejemplo:

» Q=[6 -4 7;0 5 8;-2 6 7]

Q=

6 -4 7

0 5 8

-2 6 7

» Y=inv(Q) (La matriz debe ser cuadrada)

Y=

-0.2321 1.2500 -1.1964

-0.2857 1.0000 -0.8571

0.1786 -0.5000 0.5357

CONSTRUCCIÓN DE ALGUNAS MATRICES.-


Al igual que pasa con los vectores, existen algunas sentencias que ayudan a crear

algunas matrices que Matlab ya tiene predefinidas (m y n deben tomar valores naturales):

zeros (n) crea una matriz cuadrada “n”de ceros.

zeros (m,n) crea una matriz m x n de ceros.

ones (n) crea una matriz cuadrada “n” de unos.


ones (m,n) crea una matriz m x n de unos.

rand (n) crea una matriz cuadrada “n” de números aleatorios con distribución uniforme (0,1).

rand (m,n) crea una matriz m x n de números aleatorios con distribución uniforme (0,1).

randn (n) crea una matriz cuadrada “n” de números aleatorios con distribución normal (0,1).

randn (m,n) crea una matriz m x n de números aleatorios con distribución normal (0,1).

eye (n) crea una matriz cuadrada “n”de unos en la diagonal y ceros el resto.

eye (m,n) crea una matriz m x n de unos en la diagonal y ceros el resto.

magic (n) crea una matriz cuadrada “n” de enteros tal que sumen lo mismo las filas, las

columnas y diagonal.

Ejemplos:

>> zeros (2) % matriz cuadrada 3 x 3 de ceros

ans = 00

00

>> zeros (2,6) % matriz 2 x 5 de ceros

ans = 000000

000000

>> ones (2,4) % matriz de unos

ans = 1111

1111

>> rand (2,4) % matriz de valores aleatorios entre 0 y 1 según la uniforme (0,1)

ans =

0.9355 0.4103 0.0579 0.8132

0.9169 0.8936 0.3529 0.0099

>> randn (2,5) % matriz de valores aleatorios según la normal (0,1)

ans =

0.8156 1.2902 1.1908 -0.0198 -1.6041

0.7119 0.6686 -1.2025 -0.1567 0.2573

>> eye (2) % matriz identidad o unidad


ans = 10

01

>> magic (4) % matriz mágica 4 x 4

ans = 16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

OPERACIONES BÁSICAS CON MATRICES


A+C Suma de matrices

A–C Resta de matrices

A*C Multiplicación de matrices

A .* C Multiplicación elemento a elemento de matrices

A/C División de matrices por la derecha

A ./ C División elemento a elemento de matrices por la derecha

A\C División de matrices por la izquierda

A .\ C División elemento a elemento de matrices por la izquierda

A^n Potenciación (n debe ser un número, no una matriz)

A .^ C Potenciación elemento a elemento de matrices

A' Traspuesta de unja matriz

Ejemplos:

A= D= C=

12 11 1.0000 + 1.0000i 2.0000 + 2.0000i

34 01 3.0000 + 1.0000i 4.0000 + 7.0000i

1.->> A * D % multiplicación de matrices

ans = 13
37

2.->> A .* D % multiplicación elemento a elemento

ans = 12

04

3.->> C ' % traspuesta conjugada

ans =

1.0000 - 1.0000i 3.0000 - 1.0000i

2.0000 - 2.0000i 4.0000 - 7.0000i

>> C .' % traspuesta

ans =

1.0000 + 1.0000i 3.0000 + 1.0000i

2.0000 + 2.0000i 4.0000 + 7.0000i

>> A + 2 % si sumamos el número 2 a la matriz se suma ese número a cada elemento

ans = 34

56

FUNCIONES PARA EL ANÁLISIS DE MATRICES


det (E) determinante

diag (v) crea una matriz diagonal con el vector v sobre la diagonal

diag (E) extrae la diagonal de la matriz A como un vector columna

inv (E) matriz inversa

rank (E) rango

size (E) dimensiones

trace (E) traza

tril (E) matriz triangular inferior a partir de la matriz A

triu (E) matriz triangular superior a partir de la matriz A

(Con E matriz, v vector y n número natural).

Ejemplos:
>> v = [1 2 3];

>> diag (v) % crea una matriz diagonal a partir del vector v

ans = 100

020

003

>> A = [1 2 3 4; 7 8 9 2; 2 4 6 8]

A= 1234

7892

2468

>> diag (A) % crea un vector columna a partir de la diagonal de la matriz A

ans = 1

>> size (A) % devuelve las dimensiones de la matriz como un vector fila

ans = 34

>> length (A) % devuelve la mayor de las dos dimensiones de la matriz

ans = 4

>> rank (A) % rango de la matriz

ans = 2

>>tril(A) =

1000 (convierte en ceros todos los elementos que quedan encima de

7800 la diagonal principal).

2460

>>triu(A) =

1234 (convierte en ceros todos los elementos que quedan debajo de

0892 la diagonal principal).

0068

OTRAS OPERACIONES CON MATRICES.-


find (A) devuelve los índices donde las entradas de A son distinto de cero

fliplr (A) intercambia la matriz de izquierda a derecha

flipud (A) intercambia la matriz de arriba a abajo

rot90 (A) gira la matriz 90º en sentido contrario a las agujas del reloj

rot90 (A,n) gira la matriz n x 90º

expm (A) matriz exponencial

logm (A) matriz logarítmica

sqrtm (A) matriz de raíces cuadradas

funm (A,@función) evalúa la función que indiquemos en la matriz A

exp, log, sqrt… operan elemento a elemento

Ejemplos:

>> A = [pi 0; pi/4 pi/3]

A=

3.1416 0

0.7854 1.0472

>> find (A) % devuelve los índices como un vector columna

ans =

>> reshape (A,1,4)

ans = 3.1416 0.7854 0 1.0472

>> rot90 (A) % gira la matriz 90º

ans =

0 1.0472

3.1416 0.7854

OPERACIONES CON HIPERMATRICES


Algunas funciones para generar matrices admiten más de dos subíndices y pueden ser utilizadas
para generar hipermatrices como rand, randn, zeros y ones. También se pueden emplear con
hipermatrices las funciones size y reshape entre otras. La función cat permite concatenar matrices
según las distintas “dimensiones”.

Ejemplos:

>> G = zeros (2,3); B = ones (2,3); (Se define dos matrices de las mismas dimensiones)

>> cat (1,G,B) % las concatena una debajo de la otra(con 1)

ans =

000

000

111

111

>> cat (2,G,B) % las concatena una al lado de la otra (con 2)

ans =

000111

000111

Respecto al resto de funciones se debe tener en cuenta que:

1. Las funciones que operan sobre escalares, como sin, cos, etc., se aplican sobre hipermatrices
elemento a elemento (igual que ocurre al aplicarlas sobre vectores y matrices).

2. Las funciones que operan sobre vectores, como sum, max, etc., se aplican a matrices e

hipermatrices según la primera dimensión, resultando un array de una dimensión inferior.

3. Las funciones matriciales propias del álgebra lineal, como det, inv, etc., no se pueden aplicar a
hipermatrices, para aplicarlas habría que extraer las matrices correspondientes.

Grafica de Matrices:

Defina el vector x = (-9,-8,…,6,7) y el vector k que sea el cuadrado de cada elemento:

>>x=(-9:7) ; k=x.^2;

>>plot(x,k)
Programación en Matlab.-

& Aspectos generales:

1.- input……………………………………Comando para ingresar datos.


Ejemplo: b=input (‘ingresa valor de b:’)
2.- disp..........................................................visualiza resultados en pantalla.
ejemplo: disp(producto)
3.-fprintf......................................................escribe texto con formato
ejemplo: fprintf('el resultado es %3i',var1)
fprintf('el resultado es %3.1f',var2)
fprintf('el resultado es %s',var3)
fprintf('el resultado es %c',var4)
4.-error.........................................................visualiza texto en caso de error y el
ejemplo: error(‘no se puede ejecutar’).

I. Estructura secuencial.-
Ejemplos aplicativos:
1.-
%prog para calcular el area de un circulo (Se genera en el Editor)
r=input('ing valor de radio:');
area=pi*r*r;
disp (area);

Luego se guarda (archivo) con un nombre. ejemplo1


En el Command Windows se digita el nombre del archivo, luego enter.
>> ejemplo1
ing. valor de radio: 4
50.2655
2.-
%prog para hallar la resistencia
v=input('ing valor de voltaje:');
i=input('ing valor de intensidad de cteo:');
disp(R) ejemplo2
Al ejecutar:
>> ejemplo2
ingresa valor de voltaje: 220
ingresa valor de intensidad de cte: 50
4.4000
Al utilizar function
3.-
%prog para calcular el area de un circulo
function area=circulo(r)
area=3.14*r*r;
disp(area) Se graba con nombre:area
Al ejecutar:
>>area(4)
50.2400
4.-
%prog para hallar la resistencia
function resist=re(v,i)
resistencia=v/i;
disp(resistencia) Se graba con nombre:resist
Al ejecutar:
>> lune1(220,50)
4.4000

Ejercicios aplicativos:
1.- Programa para determinar la resistencia equivalente de 3 resistencias en serie y paralelo.
2.- Programa para determinar la intensidad de corriente ingresando la resistencia y el
voltaje.

II. Estructura condicional simple.-


Sintaxis:
if (condición)
sentencias
end
if y end son palabras clave del lenguaje informático.

Ejemplos:
Prob.1.-
%prog para hallar si un num es positivo
n=input('ing numero:');
if (n>0)
disp('num positivo');
end
Ramificaciones if / else:
Dependiendo de una condición verdadera (V) o falsa (F) el programa toma el curso
adecuado.
El resultado de una condición permite tomar una decisión, si la condición es verdadera se
ejecutan determinadas condiciones y si es falso termina el programa.
El diagrama de flujo es:

• Existe la posibilidad de ejecutar ciertas sentencias si la condición es verdadera,


y otras diferentes si la condición es falsa:
Sintaxis:
if (condición)
sentencias B
else
sentencias D
end
Ejemplo:
1.-
% prog si un alumno aprueba o desap una asignatura
nota=input('ing nota final:');
if nota>=10.5
disp('aprobado')
else
disp('desaprobado');
end

2.-
% prog para hallar el area de un rectangulo
base=input('ing base de rectangulo:');
altura=input('ing altura:');
area=(base*altura);
disp(area)
if area>=350
disp('area grande')
else
disp('area peq');
end

3.-
%utiliz function si aprob o desap
function nota=n(n)
if n>=10.5
disp('aprobado')
else
disp('desaprobado');
end

III. Estructura Condicional doble (if elseif).-

Si la condición se cumple, se ejecutan las sentencias B; caso contrario, se


ejecutan las sentencias D.
Diagrama de flujo de una ramificación if / else

Una vez se hayan ejecutado las sentencias que correspondan (las sentencias
B si la condición es verdadera, las sentencias D en caso contrario) el
programa continúa con las instrucciones que vengan después de end.
Observación.-
Las ramificaciones se pueden anidar (una condición dentro de otra: dentro de las
sentencias B o de las sentencias D en el anterior diagrama de flujo).

También se pueden construir ramificaciones con varias posibilidades.


Donde la sintaxis hace uso de las palabras clave:
if
elseif
elseif ...
else
end.

Ejemplo:
1.-
%prog con intervalo para saber si aprob o desap
a=input('ingresa nota:');
if a>=0 && a<=20
if a>=10.5
disp('aprobado')
else
disp('desaprobado');
end
else
disp('nota errada')
end

Ramificación múltiple.- switch


Otra posibilidad de ramificación múltiple la ofrece la construcción switch.
La sintaxis es:
switch variable
case valor1,
sentencias A
case valor2,
sentencias B
case ...
...
end
(Como antes, lo escrito en cursiva debe sustituirse por las expresiones adecuadas).
Las palabras clave son switch, case, end.
La ramificación switch opera de la siguiente manera. Al llegar a la expresión
switch variable, si variable tiene el valor valor1 se ejecutan las
sentencias A; si variabletoma el valor valor2, las sentencias
B; y así sucesivamente. Es importante notar que la variable sólo debe tomar unos
pocos valores: valor1, valor2, etc. para que el programa se ramifique en unas
pocas ramas. No tiene sentido intentar una ramificación switch con una variable que
pueda tomar un número infinito de valores.

Ejemplo 1.-
%prog donde ingresa un numero decimal y arroja en romanos
numero=input('ing num cambiar en romanos multiplo de 5:');
switch numero
case 5
disp('V');
case 15
disp('XV');
case 25
disp('XXV');
case 35
disp('XXV');
case 45
disp('VL')
otherwise
disp('ingreso num no mult de 5')
end

Ejemplo2.-
%prog donde ing una letra y arroja un num
nume=input('ing letra a relacionar:');
a=1;
e=2;
i=3;
o=4;
u=5;
switch nume
case a
disp('1');
case e
disp('2');
case i
disp('3');
case o
disp('4');
case u
disp('5')
otherwise
disp('ing mal')
end

Ejemplo 3.-
%programa con las condicionales
a=input('ingrese los dias transcurridos:');
if a>=1&a<=90
switch a
case a
disp('verano');
end
end
if a>=91&a<=179
switch a
case a
disp('otoño');
end
end
if a>=180&a<=270
switch a
case a
disp('invierno');
end
end
if a>=271&a<=365
switch a
case a
disp('primavera');
end
end

Ejemplo 4.-
%programa ing la nota y presenta una frase
n=input('ingrese nota:');
if(n>=16&&n<=20);
switch n
case 1
end;
disp('excelente');

elseif(n>=13&&n<=15.9);
switch n
case 2
end;
disp('bueno');
elseif(n>=10.5&&n<=12.9);
switch n
case 3
end;
disp('regular');

elseif(n>=7&&n<=10.49);
switch n
case 4
end;
disp('malo');
else
disp('nota errada');
end;
Bucles
• for
Hay ocasiones en las que es necesario repetir el mismo conjunto de instrucciones
muchas veces, cambiando algunos detalles.
Para ello se utiliza los bucles, eso es lo que se consigue con un bucle for, cuya
sintaxis es:
for contador=inicio:paso:fin,
sentencias
end

Las palabras claves son for y end. Este bucle pone en marcha una variable
llamada contador que va desde inicio hasta fin de paso en paso.
Cada vez que las sentencias se ejecutan, contador aumenta en un valor
paso (que si se omite, se le asigna automáticamente el valor 1).
Cuando contador llega al valor fin, el bucle se acaba.

Un bucle como el indicado se implementa un número fijo de veces: desde inicio


hasta fin de paso en paso.

Ejemplo1.-
%prog tabla de multiplicar
f=input('ingresa tabla de multiplicar del:');
for (d=1:12)
g=f*d;
disp([f d g])
end

Ejemplo 2.-
%prog calcular el factorial de un numero
s=input('ingresa valor de factorial a determinar:');
t=1;
for (i=1:s)
t=t*i;
end
disp('resulatdo del factorial es:')
disp(t)

Ejemplo3.-
%prog para ingresar n num y presenta el mayor de todos
a=input('ing cant de numeros:');
may=-1956;
for i=1:a
nro=input('ingrese numero:');
if nro>may
may=nro;
end
end
disp('el numero mayor es:');
disp(may);

Ejemplo 4.-
%programa que selecciona y da cant de numeros positivos,negativos y neutros
n=input('ingresa cantidad de numeros:');
A=[];
B=[];
C=[];
for d=1:1:n;
m=input('ingrese numero:');
if 0<m
A=[A m];
elseif m<0
B=[B m];
else
C=[C m];
end
end
disp('1.a)Los numeros positivos son:');
disp(A);
disp('1.b)La cantidad de numeros positivos son:');
disp(sum(A./A));
disp('2.a)Los numeros negativo son:');
disp(B);
disp('2.b)La cantidad de numeros negativos son:');
disp(sum(B./B));
disp('3.a)Los numeros neutros son:');
disp(C);
disp('3.b)La cantidad de numeros neutros son:'); disp(sum(C+1));
En ocasiones, sin embargo, no se sabe de antemano cuántas veces habrá que
ejecutar las sentencias del bucle. Por ejemplo: si es necesario repetir una serie de
sentencias hasta que se cumpla una determinada condición, y no se sabe a priori
cuántas veces será necesario realizar esas operaciones.

Bucle while.-
Traducido al castellano significa “mientras” ,ello se ejecuta cuando la condición es
verdadera.

Sintaxis:
while(condición),
sentencias
end
Este bucle ejecuta las sentencias mientras la condición sea verdadera.
Diagrama de flujo de bucle while

Ejemplos:
1.-
%prog para halla el factorial
n=input('ing numero a analizar:');
i=1;
f=1;
while i<=n
f=f*i;
i=i+1;
end
disp('el factorial es: ');
disp(f)

2.-
%progr para hallar el mayor
n=input('Ingrese cantidad de numeros:');
i=0;
b=-10000;
while i<n
x=input('Ingrese numero:');
i=i+1;
if x>b
b=x;
end
end
disp(b)

3.-
%prog para hallar los divisores de un num
n=input('Ingrese numero:');
i=1;
while i<=n
a=n/i;
if a==fix(a)
disp(i)
end
i=i+1;
end

4.-
%prog donde un num ingresado es primo o no
n=input('ing numero a analizar:');
i=1;
c=0;
while i<=n
if mod(n,i)==0
c=c+1;
end
i=i+1;
end
if c==2
disp('el num ing es primo');
else
disp('el num ing no es primo');
end
5.-

%prog para hallar el porcent de aprobados y desaprobados y el prom


n=input('Ingrese cantidad de notas: ')
i=1;s=0;c=0;
while i<=n
k=input('Ingrese nota: ');
s=s+k;
if k>=10.5
c=c+1;
end
i=i+1;
end
p=100*c/n;
disp('El porcentaje de aprobados es: ')
disp(p)
disp('El porcentaje de desaprobados es: ')
disp(100-p)
disp('El promedio global es: ')
disp(s/n)

6.-
%prog para hallar si un numero es capicua
n=input('ingrese numero:');
i=1;
s=0;
m=n;
while fix(m)>0
r=mod(m,10);
s=(s+r)*10;
m=fix(m/10);
end
if n==(s/10)
disp('el numero es capicúa')
else
disp('el numero no es capicúa')
end

7.-
%programa para hallar la maxima y minima nota
n=input('ingrese la cant notas:');
i=0;f=0;m=20;
while i<n
x=input('ingrese nota:');
i=i+1;
if x>=0&x<=20
if x>=f;
f=x;
end
if x<=m
m=x;
end
else
disp('la nota ingresada no es valida');
end
end
disp('la nota maxima es:');disp(f);
disp('la nota minima es:');disp(m);

8.-
%programa para determinar la cifra mayor de un numero
n=input('Ingrase numero:');
h=-20;
while fix(n)>0
r=mod(n,10);
if r>h
h=r;
end
n=fix(n/10);
end
fprintf('la cifra maxima es :%f\n',h)

Simulink.-

Es una herramienta para el modelaje, análisis y simulación de una amplia variedad de


sistemas físicos y matemáticos, inclusive aquellos con elementos no lineales y aquellos que
hacen uso de tiempos continuos y discretos. Como una extensión de MatLab, Simulink
adiciona muchas características específicas a los sistemas dinámicos, mientras conserva
toda la funcionalidad de propósito general de MatLab. Así Simulink no es completamente
un programa separado de MatLab, sino un anexo a él. El ambiente de MatLab está siempre
disponible mientras se ejecuta una simulación en Simulink.

Simulink tiene dos fases de uso: la definición del modelo y el análisis del modelo. La
definición del modelo significa construir el modelo a partir de elementos básicos
construidos previamente, tal como, integradores, bloques de ganancia o servomotores. El
análisis del modelo significa realizar la simulación, linealización y determinar el punto de
equilibrio de un modelo previamente definido.

Para simplificar la definición del modelo Simulink usa diferentes clases de ventanas
llamadas ventanas de diagramas de bloques. En estas ventanas se puede crear y editar un
modelo gráficamente usando el mouse. Simulink usa un ambiente gráfico lo que hace
sencillo la creación de los modelos de sistemas.

Después de definir un modelo este puede ser analizado seleccionando una opción desde los
menús de Simulink o entrando comandos desde la línea de comandos de MatLab.

Simulink puede simular cualquier sistema que pueda ser definido por ecuaciones
diferenciales continuas y ecuaciones diferenciales discretas. Esto significa que se puede
modelar sistemas continuos en el tiempo, discretos en el tiempo o sistemas híbridos.

Simulink usa diagramas de bloques para representar sistemas dinámicos. Mediante una
interface gráfica con el usuario se pueden arrastrar los componentes desde una librería de
bloques existentes y luego interconectarlos mediante conectores y alambre. La ventana
principal de Simulink se activa escribiendo simulink en la línea de comandos de MatLab, y
se muestra a continuación:

Haciendo doble click en cualquiera de las librerías presentes en esta ventana se abrirá otra
ventana conteniendo una cantidad de bloques relativos a dicha librería.

Para realizar un sistema debe abrirse una nueva ventana de diagrama de bloques
seleccionando la opción file del menú principal del Simulink y allí la opción new. En esta
nueva ventana se colocarán todos los bloques interconectados que formarán el sistema
deseado.

Como ejemplo se toma un generador de ondas seno de la librería de fuentes "sources" y un


osciloscopio de la librería "sinks", ambos se unen mediante un conector (para ello se utiliza
el mouse. Este sistema se almacena como un archivo-m.

Al hacer doble click sobre cada elemento del sistema se pueden ver y modificar sus
características. Por ejemplo, al generador seno se le puede modificar su amplitud,
frecuencia y fase. Al osciloscopio se le definen las escalas horizontal y vertical.

Para ejecutar el programa se usa la opción simulation en el menú de la ventana del archivo-
m creado. En este submenú está la opción start que permite ejecutar el programa. También
está la opción parameters que activa el panel de control de Simulink en donde se definen
los métodos y parámetros usados para la simulación, tal como se muestra a continuación:
Al ejecutar el programa seno.m creado mediante simulink, se puede observar la respuesta al
hacer doble click en el osciloscopio.
Existen numerosos bloques y funciones incorporados en las librerías de simulink que
pueden ser empleados para simular cualquier sistema.
Por ejemplo, para implementar un sistema que emplea un controlador PID

Acelerador de Simulink
Para incrementar la velocidad de Simulink se debe instalar el acelerador "Accelerator". Este
permite automáticamente generar una versión mejorada de los modelos los cuales correrán
diez veces más rápido que el original. El acelerador puede ser usado sobre modelos
continuos, discretos en el tiempo y híbridos.
El acelerador trabaja generando y compilando un código-C para un modelo dado. Una vez
se completa la compilación, la simulación es ejecutada en la ventada de modelos de
Simulink exactamente igual que antes sólo que más rápidamente. El propósito del
acelerador es aumentar la velocidad de simulación.
Si el programa MatLab posee instalado el "Accelerator" podrá iniciarse la acción
aceleradora seleccionando la opción simulation en el menú principal del Simulink y dentro
de esta seleccionando la opción Accelerate. Esta acción es totalmente transparente en el
sentido de que el incremento de la velocidad se presenta sin ningún otro requerimiento por
parte del usuario.

Ejemplos aplicativos:

1. Simulación para convertir un numero complejo en polar

3+4i

Constant |u|
u 0
Complex to
Magnitude-Angle
Display

Display1

2. Simulación para determinar la resistencia equivalente de 2 resistencias conectadas


en serie y en paralelo.
1
1
Constant2 Constant4
Divide 2.4
Divide2
6 Display1
Constant 10

Display
Add

4
1
Constant1
Constant3 Add1

Divide1

3.-
uv

Energia cinetica 1000

25 Energía Cinetica Conversion


Velocidad del río (m/s) 2 2
Energía Mecanica (Kj/Kg)
Variable 1 Variable 2

Energía Mecanica de la
-K- Central Hidroeléctrica(m^2/s^2)
8.03
50
Gravedad(m/s^2)
Potencia Generada
Altura de la caída del río(m)
Por la Hidroeléctrica (kw)

10
Producto
Flujo másico del río(Kg/s)

PARAMETROS DE ENTRADA

SIMULINK DE UNA CENTRAL HIDROELECTRICA


Simulac
c
ua
N
u
le
s
8

m
q
4

e
u
0

ro
iera F
u
lo

M
n
g

a
c
10

th
tion
la herram
3. Se ingresa un numero cualesquiera y arroja el numero de cifras

R
o
F
u
n
u
n
flo

d
c
or

in
g
tio
n

A
dd N
ume
roc
ifg
ras

C
on
sta
nt1

4.-
1

Constant
1
Divide
Constant4
3

r1

1.288
1
Divide4 Req Paralelo
Constant1

Divide1
7 Add

r2

Constant2

Divide2
5

r3

25
1
Req serie
Constant3
Add1
Divide3
10

r4

5.-

Constant

9.81

gravedad

sqrt
10
Math Scope
Ramp Gain Function

23

T torre |u| Product

Subtract Abs

18
Divide
T ambiente

GRÁFICAS EN 2-D
La sentencia plot genera una gráfica en la pantalla.
Ejemplo:
>> x=0:pi/100:3*pi; //intervalo en el eje horizontal
>> y=cos(x); //Funcion a graficar
>> plot(x,y) //comando que ordena a Matlab
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7 8 9 10

se utiliza : copy figure (copiar en otro form)

Ejemplo #2.-
>> z=linspace(-pi,2.5*pi); //utilizando el linspace
>> y=sin(z);
>> plot (z,y)

Ejemplo#3.-
Al trabajar en el editor:
x=-3:0.01:3;
y=x.*exp(-x.^2);
plot(x,y),grid on //activa las cuadriculas en la pantalla.
0.5

0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4

-0.5
-3 -2 -1 0 1 2 3

Ejemplo#4.-
Grafica de color rojo y con asteriscos:
a=0:0.01:5;
b=4*a.^3;
plot(a,b,'r*')
500

450

400

350

300

250

200

150

100

50

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Varias graficas en una sola:


x=linspace(0.2*pi,10);
y=cos(x);
z=sin(x*pi/3);
plot(x,y,'r-',x,z,'g--'),grid on

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7 8 9 10

Etiquetado de graficas.-
x=linspace(-3,3,500); y=exp(-x.^2); z=2*exp(-x.^2);
plot(x,y,'r-',x,z,'--'),grid on;
title('campana de gauss');
xlabel('eje de abscisas');
ylabel('eje de ordenandas');
legend('GRAFICOS');
campana de gauss
2
GRAFICOS
1.8

1.6

1.4

1.2
eje de ordenandas

0.8

0.6

0.4

0.2

0
-3 -2 -1 0 1 2 3
eje de abscisas

Observación: Se puede utilizar el: gtext(‘texto,comentario…’) y con el Mouse ubicar el


comentario donde se crea conveniente

Curvas en parametricas:
Ejemplo 1.-
t=linspace (-5,5,1000);
plot((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1));
2

1.5

0.5

-0.5

-1

-1.5

-2
-5 -4 -3 -2 -1 0 1 2 3 4 5

otra manera:
t=linspace (-5,5,1000);
comet((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1));

ejemplo 2.-
t=linspace (0.2*pi,20);
quiver(cos(t),sin(t),-sin(t),cos(t)),axis square

Curvas en polares.-
tetha=linspace(-pi,pi,100);
r=2-4*cos(tetha);
polar(tetha,r)
90
6
120 60

150 30

180 0

210 330

240 300

270

Graficas en ejes multiples.-


subplot(m,n,k).- Presenta varios gráficos en una sola ventana, k es la secuencia de los
gráficos.

Ejemplo #1.-
t=-1.8:0.2:4;
x=t.^3; v=abs(t); w=sqrt(t);
tetha=linspace(-pi,pi,100);
r=2-4*cos(tetha);
subplot(3,2,1),plot(t,x);
subplot(3,2,2),plot(t,v);
subplot(3,2,3),plot(t,w);
subplot(3,2,4),polar(tetha,r)
1
00 4

3
5
0
2
0
1

-
50 0
-2 -
1 0 1 2 3 4 -2 -
1 0 1 2 3 4

2 0 1
9 0
1
20 60
1
.5 5
1
50 3
0

1 1
80 0

0
.5 2
10 3
30
2
40 3
00
0 2
70
-2 -
1 0 1 2 3 4

>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9];


>> plot (x,y)
Si queremos cambiar la apariencia de la gráfica basta pinchar en el último botón de la barra
de herramientas y se abrirán unos cuadros en los laterales que nos permitirán ir haciendo
los cambios deseados como darle nombre a los ejes.
La función plot permite otras opciones como superponer gráficas sobre los mismos ejes:
>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9]; z = [6 5 3 7 5 2];
>> plot (x,y,x,z)
También podemos usar distintos tipos de líneas para el dibujo de la gráfica:
>> plot (x,y,'*')
Además podemos colocar etiquetas o manipular la gráfica:
etiqueta sobre el eje X de la gráfica actual: >> xlabel('texto')
etiqueta sobre el eje Y de la gráfica actual: >> ylabel('texto')
título en la cabecera de la gráfica actual: >> title('texto')
texto en el lugar especificado por las coordenadas: >> text(x,y, 'texto')
texto, el lugar lo indicamos después con el ratón: >> gtext('texto')
dibujar una rejilla: >> grid
fija valores máximo y mínimo de los ejes: >> axis( [xmin xmax ymin ymax] )
fija que la escala en los ejes sea igual: >> axis equal
fija que la gráfica sea un cuadrado: >> axis square
desactiva axis equal y axis square: >> axis normal
abre una ventana de gráfico: >> hold on
borra lo que hay en la ventana de gráfico: >> hold off

Todas estas órdenes se las podemos dar desde la propia ventana de la gráfica una vez que
hemos
abierto las opciones con el botón indicado anteriormente.
Otros comandos relacionados con las gráficas son los siguientes:
Orden ¿Qué hace? Imagen
area colorea el area bajo la gráfica
bar diagrama de barras (verticales)
barh diagrama de barras (horizontales)
hist histograma
pie sectores
rose histograma polar
stairs gráfico de escalera
stem secuencia de datos discretos
loglog como plot pero con escala logarítmica en ambos ejes
semilogx como plot pero escala logarítmica en el eje x
semilogy como plot pero escala logarítmica en el eje y
Para obtener una información más detallada se recomienda utilizar la ayuda de Matlab:
>> help <orden>
Una ventana gráfica se puede dividir en m particiones horizontales y en n verticales, de
modo que
cada subventana tiene sus propios ejes, y para hacer esto vamos a usar subplot (m,n,p)
donde p
indica la subdivisión que se convierte en activa.
>> x = 1:360; y1 = sind (x); y2 = cosd (x); y3 = exp (x); y4 = exp (-x);
>> subplot (2,2,1), plot (x,y1), title ('seno')
>> subplot (2,2,2), plot (x,y2), title ('coseno')
>> subplot (2,2,3), plot (x,y3), title ('exponencial')
>> subplot (2,2,4), plot (x,y4), title ('-exponencial')
Manual de MATLAB Servicios Informáticos U.C.M.
33
Para volver al modo por defecto basta escribir: subplot (1,1,1).
Para dibujar polígonos podemos usar la función plot pero teniendo en cuenta que el último
punto de
ambos vectores deben coincidir para que la gráfica quede cerrada. Pero si lo que queremos
es que
quede coloreado todo el interior del polígono debemos usar mejor la función fill, tiene tres
argumentos, los dos vectores que forman los puntos y un tercer argumento para indicar el
color.
>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
>> plot (x,y)
>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];
>> fill (x,y,'r') % dibuja el polígono, 'r' indica el color rojo.

GRÁFICAS EN 3-D
Gráficos de línea:
También podemos crear gráficas en 3 dimensiones, se trata de extender la orden de plot (2-
D) a plot3
(3-D) donde el formato será igual pero los datos estarán en tripletes:
Manual de MATLAB Servicios Informáticos U.C.M.
34
>> x = -720:720; y = sind (x); z = cosd (x);
>> plot3 (x,y,z)
Podemos hacer girar la gráfica usando de la barra de herramientas el botón o hacerla más
grande o
más pequeña con . Al igual que ocurría con las gráficas en dos dimensiones podemos
nombrar
los ejes o hacer modificaciones entrando en opciones con el botón .
Si queremos representar un polígono en 3 dimensiones lo haremos con la función fill3 de
forma
similar a fill pero ahora con 4 argumentos, siendo el cuarto el que indica el color.
>> x = [-2 0 2 0 -2];
>> y = [4 8 4 0 4];
>> z = [3 5 10 5 3];
>> fill3 (x,y,z,'b') % dibuja en 3-D, 'b' indica el color azul
Superficie de malla:
La orden [X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son copias del vector x y una
matriz Y
cuyas columnas son copias del vector y. Para generar la gráfica de malla se usa la orden
mesh(X,Y,Z), mesh acepta un argumento opcional para controlar los colores. También
puede tomar
una matriz simple como argumento: mesh(Z).
Ejemplo:
>> x = -10:0.5:10; y = -10:0.5:10;
>> [X,Y] = meshgrid (x,y); % crea matrices para hacer la malla
>> Z = sin (sqrt (X .^2 + Y .^2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> mesh (X,Y,Z) % dibuja la gráfica
Hubiera dado igual si hubiéramos escrito:
>> [X,Y] = meshgrid (-10:0.5:10);
>> Z = sin (sqrt (X .^2 + Y .^ 2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1);
>> mesh (X,Y,Z)
Gráfica de superficie:
Es similar a la gráfica de malla, pero aquí se rellenan los espacios entre líneas. La orden
que usamos
es surf con los mismos argumentos que para mesh.
Ejemplo:
>> surf (X,Y,Z)
Las gráficas de contorno en 2-D y 3-D se generan usando respectivamente las funciones
contour y
contour3.
Ejemplo:
>> contour (X,Y,Z) % dibuja las líneas de contorno
La función pcolor transforma la altura a un conjunto de colores.
Ejemplo:
>> pcolor (X,Y,Z)
Manipulación de gráficos:
fija el ángulo de visión especificando el azimut y la elevación: >> view(az,el)
coloca su vista en un vector de coordenada cartesiana (x,y,z) en el espacio 3-D: >>
view([x,y,z])
almacena en az y el los valores del azimut y de la elevación de la vista actual: >>
[az,el]=view
añade etiquetas de altura a los gráficos de contorno: >> clabel(C,h)
añade una barra de color vertical mostrando las transformaciones: >> colorbar
Ejemplos:
>> surf (X,Y,Z)
>> view (10,70)
>> colorbar % añade la barra de color a la figura actual
>> surf (X,Y,Z)
>> view ( [10,-12,2] )
>> surf (X,Y,Z)
>> [az,el] = view
az =
-37.5000
el =
30
>> [C,h] = contour (X,Y,Z);
>> clabel (C,h)
Comprensión de los mapas de color:
Color Nombre corto Rojo/Verde/Azul
Negro k [0 0 0]
Blanco w [1 1 1]
Rojo r [1 0 0]
Verde g [0 1 0]
Azul b [0 0 1]
Amarillo y [1 1 0]
Magenta m [1 0 1]

You might also like