Subido por Carloz Gv

matlab

Anuncio
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
I. Introducción a MATLAB
Inicio de sesión en Windows
El inicio de una sesión ocurre siempre al encender el equipo. El ordenador carga
el sistema de explotación de forma remota solicitando una clave personal del
alumno. En caso de no conocer su clave ha de dirigirse al personal del CDC. Para
evitar aglomeraciones haga todo esto antes del día de la práctica.
Los ordenadores pueden arrancar diversos sistemas de explotación: Linux,
Windows’2000, Windows XP. Lo normal es que haya que usar la versión más
reciente instalada de Windows (XP), sin embargo esto no es un requisito
indispensable. Dicho de otro modo, las versiones antiguas también son válidas
para realizar la práctica lo cual es útil si decide realizar en su casa algún trabajo
adicional.
Manejo de Windows
El manejo de Windows es muy simple: basta con apuntar con el ratón a los
elementos que se ven en la pantalla y pulsar el botón izquierdo. La acción de
apuntar y pulsar recibe el nombre abreviado de “hacer clic” o “pinchar”.
La zona central (de color azul) de la pantalla recibe el nombre de escritorio. A la
izquierda se encuentran unos dibujos que permiten ejecutar ciertos programas.
Los dibujos son llamados “iconos” y también “accesos directos”. En la parte
inferior está la barra de tareas con el botón de inicio como se muestra en la figura .
En algunos equipos la barra sólo es visible cuando se apunta con el ratón a la zona
inferior de la pantalla.
Si todo esto le suena raro realice alguna prueba algún día antes del inicio de la
práctica hasta que se familiarice con el entorno Windows y el manejo de los
programas más usuales: explorador de Windows, libreta de notas, calculadora, etc.
También es importante que sepa dónde se encuentran las teclas de uso frecuente
como Intro, Alt, Ctrl, Sup. El siguiente resumen puede ayudarle:
• Tecla Intro. Tiene dos funciones: en primer lugar permite pasar a la siguiente
l´ınea en la escritura. Además, en programas de uso interactivo sirve para dar
entrada a la información tecleada anteriormente de forma que pueda ser
procesada. En algunos teclados aparece el símbolo ←|, o la palabra RETURN o
ENTER.
• Tecla Alt. Al igual que la tecla de mayúsculas permite cambiar la función de las
teclas de función. Además sirve para generar los símbolos de la tabla ASCII
manteniendo la tecla pulsada mientras se introduce el código correspondiente en
decimal. En muchas aplicaciones esta tecla tiene significado especial. Por
ejemplo, en los entornos de ventana, sirve para activar funciones dentro de un
menú tecleando ALT+inicial opción del menú.
• Tecla Alt Gr. Permite obtener los signos |, [, ], } y { , u otros dependiendo del
sistema.
01 MatLab básico 1
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
• Tecla Ctrl. Pulsada conjuntamente con algunas letras produce caracteres de
control, por ejemplo Ctrl+C y Ctrl+Z para terminar la ejecución de programas.
En general cuando se ha de pulsar una tecla conjuntamente con otra se indica
mediante elsigno +. Por ejemplo, una combinación de teclas especialmente útil es
Ctrl+Alt+Sup que sirve para acceder al Administrador de Tareas cuando algún
programa se “cuelga”.
El programa MATLAB
MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un
programa para realizar cálculos numéricos con vectores y matrices.
Aquí se presenta la ventana usual que aparece al iniciar Windows, en la cual se
ejecutan las operaciones básicas.
Si por alguna razón la pantalla de MatLab no fuese la indicada, basta con acceder
en la barra de herramientas al menú Desktop, escoger la opción Desktop Layout
y a continuación Default.
RECOMENDACIONES BASICAS DE TRABAJO EN MATLAB
- Para teclear un comando el cursor debe estar después del símbolo ‘>>’.
- Una vez que se teclea el comando en el formato indicado, pulsar la tecla intro
(), para ejecutar tal orden.
- Con las teclas: ‘’ y ‘’, se pueden invocar comandos tecleados
anteriormente, y ejecutarlos parcial o totalmente.
- Si un comando es demasiado grande y ocupa más de una línea, se puede
redistribuir en dos líneas, para lo cual al final de la primera se colocan puntos
suspensivos (…), luego se pulsa la tecla intro y se continúa en la siguiente línea.
01 MatLab básico 2
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
- Las salidas en pantalla que produce la ejecución de un comando, se visualizara
en la ventana de comandos. Pero si se teclea punto y coma (;) al final del comando
este se ejecutara, pero ya no se visualizaran los resultados.
- En una misma línea se pueden teclear varios comandos, pero separado por
comas. Si se separan por punto y coma, no se visualizara el resultado.
- Cuando se teclea el símbolo % al inicio de una línea, MatLab considera la línea
como un comentario, lo cual significa que no se ejecutara.
- Si se coloca el símbolo % seguido de un comentario, después de un comando ,
tampoco se ejecuta este comentario. Es decir no tiene efecto sobre el comando.
- El comando clc limpia la pantalla de MatLab, solo deja en blanco la pantalla y
todo lo ejecutado permanece intacto.
- Para ejecutar una operación o terminar una línea en MATLAB se presiona la
tecla  (enter)
- La tecla Alt Gr. permite obtener los signos {,},[,] y |, u otros dependiendo del
sistema.
- La tecla Ctrl. Pulsada conjuntamente con algunas letras produce caracteres de
control, ejemplo: Ctrl+C, Ctrl+B, Ctrl+Z.
CALCULOS SIMPLES CON MATLAB
MatLab puede trabajar como si fuese una calculadora científica con todas las
funciones posibles.
Operadores matematicos, relacionales y logicos
Operación
Asignación
Relación “Menor que”
Relación “Mayor que”
Relación “Menor o igual que”
Relación “Mayor o igual que”
Relación “Igual que”
Relación “Distinto que”
Producto lógico (Operación “y”)
Suma lógica (Operación “o”)
Negacion (Operación “no”)
Fin de expresión sin escritura en pantalla
Fin de expresión con escritura en pantalla
Potenciación
Multiplicación
División
División inversa
Suma
Resta
signo
=
<
>
<=
>=
==
~=
&
|
~
;
,
^
*
/
\
+
-
Tecla abreviada
Alt 61
Alt 60
Alt 62
Alt 60,Alt 61
Alt 60, alt 61
Alt 61, alt 61
Alt 126, alt 61
Alt 38
Alt 124
Alt 126
Alt 59
Alt 44
alt 94
alt 42
alt 47
alt 92
alt 43
alt 45
ORDEN DE PRECEDENCIA
Precedencia
Primero
Segundo
Tercero
Cuarto
Operación Matemática
Paréntesis
Exponenciación
Multiplicación y división (igual precedencia)
Suma y resta
01 MatLab básico 3
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
Símbolos útiles
Nombre Símbolo
Paréntesis
(
)
Corchete
[
]
llaves
{
}
Código ascci
Alt + 40
Alt + 41
Alt + 91
Alt + 93
Alt + 123
Alt + 125
MATLAB COMO CALCULADORA
>> 4+5-8*4
>> (50+14)/4
>> sin(pi)
>> sin(pi/2)
>> (sin(pi/2))^2+(cos(pi/2))^2
>> sqrt(25)
>> log10(1000000000)
>> exp(1)
>> log(exp(76))
>> i^3+3*(4-i)^2-5
>> j^3+3*(4-j)^2-5
>> abs(-4)
>> 5\25
>> 2^8+26*(26+1)/2
>> 10000^1/4
>> 10000^(1/4)
FORMATOS DE VISUALIZACIÓN DE NÚMEROS
El usuario puede controlar la forma de cómo se presentan los números en pantalla,
esto se controla con el comando format. Por defecto es el formato short.
Otros formatos se pueden hallar tecleando ‘help format’, en la ventana de
comandos.
Comando
Descripción
format short
Punto fijo con 4 dígitos decimales.
0.001<=número<=1000
format long
Punto fijo con 14 dígitos decimales.
0.001<número<100
Format hex
Cifras hexadecimales
format short e Notación científica con 4 dígitos decimales
format long e
Notación científica con 15 dígitos
decimales
format short g 5 primeros dígitos fijos o en punto flotante
format long g
15 primeros dígitos fijos o en punto
flotante
format bank
2 dígitos decimals
format
Elimina las líneas vacías para permitir más
compact
líneas en la ventana
format loose
Añade líneas vacías (lo contrario de
compact)
Format
Expresa los números racionales como
rational
cociente de enteros
01 MatLab básico 4
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
Funciones Matemáticas básicas
Además de las operaciones aritméticas, se tiene en MatLab una variedad adicional
de funciones adicionales, dentro de las cuales tenemos:
Funciones matemáticas elementales
Función
Descripción
sqrt(x)
Raiz cuadrada
exp(x)
exponencial ( e x )
abs(x)
Valor absoluto
log(x)
Logaritmo natural. De base e
log10(x)
Logaritmo decimal. De base 10
Log2(x)
Logaritmo decimal. De base 2
factorial(x) Factorial de un entero positivo
Realpow(x) Potencia que da error si x no es real
Reallog(x) Logaritmo neperiano de números
reales
Realsqrt(x) Raíz cuadrada de números mayores o
iguales a cero
Funciones trigonométricas
Función Descripción
sin(x)
Seno de x. x en radianes
sind(x)
Seno de x, x en grados sexagesimales
cos(x)
coseno de x. x en radianes
cosd(x) coseno de x, x en grados sexagesimales
tan(x)
Tangente de x. x en radianes
tand(x)
Tangente de x, x en grados sexagesimales
cot(x)
Cotangente de x. x en radianes
cotd(x)
Cotangente de x, x en grados sexagesimales
sec(x)
Secante de x, x en radianes
secd(x) Secante de x, x en grados sexagesimales
csc(x)
cosecante de x, x en radianes
cscd(x) cosecante de x, x en grados sexagesimales
asin(x)
Arco seno de x
acos(x) Arco coseno de x
atan(x)
Arco tangente de x
acot(x)
Arco cotangente de x.
asec(x)
Arco secante de x
acsc(x)
Arco cosecante de x
sinh(x)
Seno hiperbólico de x.
asinh(x) Inversa del seno hiperbólico de x
cosh(x) coseno hiperbólico de x
acosh(x) Inversa del coseno hiperbólico de x
tanh(x)
Tangente hiperbólico de x
atan(x)
Inversa del tangente hiperbólico de x
coth(x)
Cotangente hiperbólico de x
acoth(x) Inversa del cotangente hiperbólico de x
01 MatLab básico 5
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
FUNCIONES DE REDONDEO Y RESTO
Función Descripción
sign(x)
-1, si x<0; 0, si x =0; 1, si x>0
si x es un complejo, devuelve un vector
unitario en la dirección de x
rem(x,y) resto de la división de x e y, x e y son reales
mod(x,y) Similar a rem, ver ayuda
round(x) Redondea al entero más próximo
fix(x)
Redondea hacia cero
ceil(x)
Redondea hacia infinito
floor(x) Redondea hacia menos infinito
>> sqrt(289)+exp(2)-abs(-20)
>> log(40)
>> exp(1)
>> log(exp(40))
>> log10(123456)
>> log10(100000000000)
>> factorial(6)
>> sin(pi/2)+cos(pi)-tan(pi/4)
>> tan(pi/4)+cot(pi/4)
FUNCIONES COMPLEJAS
Función
Descripción
abs(x)
Valor absoluto o modulo si x es complejo
angle(x)
Argumento del numero complejo x
complex(x,y) Devuelve el numero complejo: x + yi
conj(x)
Complejo conjugado
real(x)
Parte real
Imag(x)
Parte imaginaria
Isreal(x)
1, si x es real; 0, si x tiene parte imaginaria
DEFINICION DE VARIABLES y ESCALARES
Una variable es un nombre compuesto por una o mas letras y/o digitos al cual se
le asigna un valor numérico. A partir de ese momento ya se puede usar tal
variable en cualquier operación, función o comando de MatLab. Una vez definida
y asignado un valor a una variable, este valor puede ser modificado y asignado un
nuevo valor para ahorrar memoria.
El operador de asignación
En MatLab, el símbolo = se llama operador de asignación. El asigna un valor a
una variable
nombre _ de _ var iable valor
El valor asignado puede ser numerico, o alguna expression con la cual operar.
Tambien puede ser alguna variable ya definida y compatible con la actual.
>> x=5+6
% asignación
>> x=2*x+8
%reasignando valor a la variable
>> y=x-8
% asignación
>> A=[1 2 3;4 5 6;8 4 1]
01 MatLab básico 6
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
>> B=x*A
>> C=y+B
>> a=6,b=4,c=7
>> s=a+b-c
>> d=c+4;
>> m=d+20
Reglas sobre el nombre de las variables:
- Pueden tener una longitud de de hasta 63 caracteres.
- Pueden contener letras, dígitos y el carácter de subrayado.
- Deben empezar por una letra.
- En MatLab se distinguen entre mayúsculas y minúsculas en las variables.
- Evitar poner el nombre de funciones del sistema o variables predefinidas en
MatLab.
Variables predefinidas en MatLab
Variable
Descripción
ans
Esta variable contiene el resultado de la última
sentencia que no ha sido asignada a un valor
especifico
pi
Representa al numero 
eps
Representa la diferencia más pequeña entre dos
números de máquina. Es igual a 2^(-52), que es
aproximadamente 2.2204e-0.16
realmin El menor numero real en MatLab
realmax El mayor numero real en MatLab
Representa al infinito.
inf
Es la unidad imaginaria, la raíz cuadrada de -1.
i
j
Equivale a i
abreviatura de Not a Number(no numérico)
NaN
valor indeterminado
Comandos útiles sobre variables
Limpia la ventana de comandos
clc
Borra todas las variables de memoria
clear
clear x y z
Borra solo las variables x, y, z
Muestra un listado de variables
who
Muestra un listado de variables con
whos
sus características
exist(‘c’)
Chequea si la variable c existe
Pwd
Muestra el directorio actual
cd c:\MATLAB\work Cd cambia la ruta del directorio
actual
Dir
Lista el contenido del directorio
actual
save prueba
Sabe almacena las variables en un
archivo
load prueba
Load carga variables y su contenido
delete prueba.mat
Delete elimina archivo
Quit
Para terminar una sesión con MatLab
01 MatLab básico 7
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
Símbolos especiales en MatLab
[]
Para definir vectores y matrices
()
Para definir precedencia en expresiones y
para subíndices
,
Para separa elementos de un vector se usa
comas o espacios
;
Para separara filas y para evitar mostrar
contenido de variables
%
Para iniciar un comentario en programas
y funciones
…
Para continuar un comando en la
siguiente linea
AYUDA EN MATLAB
Una de la funciones importantes tanto para el principiante asi como el experto, es
la función de ayuda (help).
Para ello basta con teclear el siguiente formato: >> help comando
Conociendo la lista de funciones elementales: >> help elfun
GUARDANDO UNA SESIÓN Y SUS VARIABLES
Para guardar lo que uno ha escrito, tenemos básicamente dos opciones.
Guardar todo lo escrito, para lo cual se usa el comando:
diary(‘nombre_fecha.txt’)
Hasta que se ingresa el comando:
diary off
Se puede seguir grabando en este mismo archivo con:
diary on
Y cerrando nuevamente con
diary off
>> clear
>> x=5
>> y=45
>> z=13
>> w=x-y
>> diary('malca.txt')
>> Z=x+y+z
>> A=[1 2 3;5 2 8;7 4 2]
>> B=[5 1 3;8 2 8;7 4 9]
>> det(A)
>> diary off
>> B'
>> A-B'
>> diary on
>> D=A+4*B
>> E=A.*B
>> diary off
>> F=A/B
Luego abriendo el archivo en: C:\MATLAB7\work\malca.txt
01 MatLab básico 8
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
Vea bien que se grabo y que no, en el archivo malca.txt.
Tenemos que también se puede guardar solo las variables con save, y luego
leerlas con load.
>> clear
>> x1=6
>> x5=8
>> y=x1+x5
>> save('sesion 01')
Ahora leemos estas variables:
>> load('sesion 01')
>> who
Ejemplos de aplicación con MatLab
Ejemplo 1.1: Identidad Trigonométrica
Se tiene la siguiente identidad trigonométrica: sen(2 x) 2sen( x) cos( x)
/3
Verificar dicha identidad para x
Solución:
>> x=pi/3
x = 1.0472
>> 2*sin(x)*cos(x)
ans = 0.8660
>> sin(2*x)
ans = 0.8660
>>
Ejemplo 1.2: Geometría y trigonometría
Se tienen cuatro circunferencias tangentes exteriormente dos a dos.
01 MatLab básico 9
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
B
C
A
D
Donde: radio de A es 16 cm, radio de B es 6,5 cm, radio de C es 12 cm y radio de
D es 9,5 cm. Determinar la distancia entre los centros B y D.
Solución:
Por la condición de ser tangentes dos a dos tenemos que:
AB = 22,5
BC = 18,5
CD = 21,5
AD = 25,5
AC = 28
B
C
A
D
Luego tenemos la ley de cosenos, en el triangulo ABC:
BC 2 AB2 AC 2 2 AB AC cos BAC
De igual modo en el triangulo ACD:
CD2 AC 2 AD2 2 AC AD cos CAD
Ahora en el triangulo ABD:
BD2 AB2 AD2 2 AB AD cos BAD
>> AB=22.5
AB = 22.500000000000000
>> BC=18.5
BC = 18.500000000000000
>> CD=21.5
CD = 21.500000000000000
>> AD=25.5
AD = 25.500000000000000
>> AC=28
AC = 28
>> alfa1=acos((AB^2+AC^2-BC^2)/(2*AB*AC)) % alfa1 =
angulo(BAC)
alfa1 = 0.719127201933065
>> alfa2=acos((AC^2+AD^2-CD^2)/(2*AC*AD)) % alfa2 =
angulo(CAD)
alfa2 = 0.822116419951938
>> alfa3=alfa1+alfa2
% alfa3 = angulo(BAD)
alfa3 = 1.541243621885003
>> BD=sqrt(AB^2+AD^2-(2*AB*AD*cos(alfa3)))
BD = 33.505122102523131
>>
01 MatLab básico 10
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
Ejemplo 1.3: Transferencia de Calor
Un objeto con una temperatura inicial T0, se introduce en un instante inicial t = 0
dentro de una cámara que tiene una temperatura constante Ts. Entonces, el objeto
experimenta un cambio de temperatura que esta dado por la ecuación:
kt
T t
Ts
T 0 Ts e
Considérese una lata de refresco de coca-cola, pero alguien se olvido en la
maletera de un auto que viaja de Chiclayo a Piura, al llegar tiene una temperatura
de 120ºF, y se la coloca en un congelador que esta a una temperatura de 38ºF.
Calcular la temperatura de la lata después de 3 horas, considerar k = 0,45.
Solución:
>> T0=120
T0 = 120
>> Ts=38
Ts = 38
>> k=0.45
k = 0.450000000000000
>> t=1:5
t= 1 2 3 4 5
>> T=Ts+(T0-Ts)*exp(-k*t)
T = 90.285508432985409 71.338712098729133 59.257701372963105
51.554508834170093 46.642736414072871
>> round(T)
ans = 90 71 59 52 47
>>
Ejemplo 1.4: Interés compuesto
El saldo o monto M de una cuenta de ahorros después de t años cuando se
deposita un capital C a una tasa de interés anual r, con n periodos de
capitalización anuales, bien dado por la siguiente función:
M t
C 1
r
n
nt
Si los intereses se capitalizan anualmente, el monto esta dado por la función
M t
C1 r
t
Si en una cuenta de ahorros se invierte 5000 soles durante un periodo de 17 años,
con un interés compuesto con capitalización anual. En una segunda cuenta se
invierten otros 5000 soles, pero esta vez con un interés compuesto con
capitalización mensual. En ambas cuentas la tasa de interés es del 8,5 %. Utilizar
MatLab para determinar cuánto tiempo (en años y meses) tarda el monto de la
segunda cuenta en ser igual que el de la primera después del periodo de 17 años.
Solución:
Vamos a ver cómo evolucionan las cuentas a través de los años
En la primera cuenta veremos cuál es el monto después de los 17 años.
>> C=5000,r=0.085,ta=17,n=12
C=
5000
r = 0.0850
01 MatLab básico 11
01 – PRIMEROS PASOS CON MATLAB
Lic. Amado Malca Villalobos
ta = 17
n = 12
>> M=C*(1+r).^ta
M = 2.0011e+004
>> format long
>> M=C*(1+r).^ta
M = 2.001131155260091e+004
>>
Ahora veremos con este monto a que tiempo equivale en la formula de
capitalización mensual:
>> t=(1/n)*(log(M/C))/(log(1+(r/n)))
t = 16.373715243760337
>> anos=fix(t) % la letra ñ no lo acepta MatLab
anos = 16
>> meses=ceil((t-anos)*12)
meses = 5
>>
01 MatLab básico 12
02 – ARRAYS
Lic. Amado Malca Villalobos
II. ARRAYS
Un arrays es simplemente un arreglo rectangular de números, que puede ser unidimensional (Vector) o
bidimensional (Matriz).
A   ai j 
mn
Los arrays también pueden estar compuestos por caracteres no numéricos, llamados cadenas o strings.
Creación de arrays unidimensionales (Vectores)
Un vector se puede entender como un conjunto de datos, que se pueden ordenarse en forma de fila o columna.
También pueden ser el resultado de alguna función que determine el valor de este vector.
Ejemplo 01: Un conjunto de puntos:
p1
2, 4
,
p2
3, 9
,
p3
4,16
,
p5
6, 36
,
p6
7, 49
Que originan dos vectores, uno para las abscisas y otro para las ordenadas.
u
2 3 4 5 6 7
v
4 9 16 25 36 49
Ejemplo 02: En la siguiente tabla se muestran datos sobre crecimiento demográfico:
Datos demográficos
Año
1984 1986 1988 1990 1992 1994 1996
Población 127
130
136
145
158
178
211
(Millones)
Esta tabla también puede originar dos vectores, que pueden ser en forma de filas (horizontal), o columnas
(vertical).
u
1984 1986 1988 1990 1992 1994 1996
v
127 130 136 145 158 178 211
Creación de un vector a partir de una lista de números conocidos
Para crear un vector solo se necesita teclear los elementos dentro de dos corchetes [ ].
nombre _ var iable  [elementos del vector ]
Sintaxis
u=[7 3 6 4 9]
u=[7,3,6,4,9]
v=[7;1;5;9;12]
v=[7,1,5,9,12]’
v=[7 3 6 4 9]’
V=[7
1
5
9
12]
Descripcion
Vector fila
Vector fila
Vector columna
Vector columna
Vector columna
Vector columna. Se ingresa un elemento y se
presiona la tecla enter, se ingresa el siguiente
valor luego enter, . . ., todo ello entre los dos
corchetes.
En el primer ejemplo tenemos:
>> abscisa=[2 3 4 5 6 7]
abscisa = 2 3 4 5 6 7
>> ordenada=[6 9 4 14 21 30 41]
ordenada = 6 9 4 14 21 30
>>
41
Ahora con los datos demográficos
>> fechas=[1984;1986;1988;1990;1992;1994;1996]
fechas =
1984
1986
1988
1990
1992
1994
1996
02 Arrays 13
02 – ARRAYS
Lic. Amado Malca Villalobos
>> Poblacion=[127;130;136;145;158;178;211]
Poblacion =
127
130
136
145
158
178
211
>>
Creación de un vector con distancia constante
Aquí las datos son el valor inicial y el final, además el incremento (distancia). En un vector con distancia o
espaciado constante, la diferencia entre los elementos siempre es la misma. Su estructura matemática es:
v  [a a  r a  2r a  3r ... b]
De donde
b  a  r  n  1 (si se conoce a, r y n)
r
Así podemos ver que es un vector donde el primer elemento es
término es b , se crea con la siguiente sintaxis:
ba
( si se conoce a, b y n)
n 1
a , el espacio o distancia es r , y el último
nombre _ var iable  [a : r : b]
nombre _ var iable  a : r : b
Si no se indica el valor de r, por defecto es 1.
nombre _ var iable  a : b
Ejemplos:
>> x=[4:17:81]
x = 4 21 38 55 72
>> x=[4:17:89]
x = 4 21 38 55 72 89
>> x=[4:9]
x= 4 5 6 7 8 9
>> x=[12:-3:-20]
x = 12 9 6 3 0 -3 -6
>> x=[8:-3:20]
x = Empty matrix: 1-by-0
>>
-9 -12 -15 -18
Creación de vectores de una longitud definida
Si se necesita crear un vector donde se conoce el primer y el último elemento, así como el número de términos.
Para ello se usa el comando linspace, cuya sintaxis es:
nombre _ var iable  linspace(a, b, n)
nombre _ var iable  linspace(a, b)
Se crea un vector de n elementos, que empieza en a y termina en b. y que están equiespaciados. Donde la
distancia entre elemento y elemento esta dado por: r 
ba
.
n 1
Si no se indica el valor de n, por defecto es 100.
>> v1=linspace(4,20,8)
v1 = 4.0000 6.2857 8.5714 10.8571 13.1429 15.4286 17.7143 20.0000
>> v2=linspace(4,20,9)
V2 = 4 6 8 10 12 14 16 18 20
>> v3=linspace(4,20,-9)
v3 = 20
>> v4=linspace(3.5,-20.5)
v4 = Columns 1 through 4
Columns 97 through 100
3.5000 3.2576 3.0152
20.0152 -20.2576 -20.5000
>>
02 Arrays 14
02 – ARRAYS
Lic. Amado Malca Villalobos
CREACION DE UN ARRAY BIDIMENSIONALES (MATRICES)
En este caso los números se distribuyen en filas (horizontal) y columnas (vertical). Son utilizadas en el Algebra
Lineal, y se usan para linealizar los problemas, es decir para suavizarlos.
Los elementos de una matriz se ingresan fila por fila, separados por punto y coma. También se pueden separar
las filas por un enter.
nombre _ var iable  [ fila _ uno; fila _ dos;.......; ultima _ fila]
nombre _ var iable  [ fila _ uno
fila _ dos
....
ultima _ fila ]
Ejemplo: Considere la matriz A de tres filas y cuatro columnas:
 5 8 4 3 


A  5 2 1 0 
 6 9 2 5 


>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A=
6 8 -4 3
5 2 1 0
6 9 2 -5
>> A=[6 8 -4 3
5210
6 9 2 -5]
A=
6 8 -4 3
5 2 1 0
6 9 2 -5
>> A=[6 8 -4 3,5 2 1 0,6 9 2 -5]
A = 6 8 -4 3 5 2 1 0 6 9 2 -5
>> a=8;b=sqrt(5);m=exp(3);p=pi;
>> D=[a+b b+m p+a+b;m+log(8) 2*a+7*b sin(pi/2)]
D = 10.2361 22.3216 13.3777
22.1650 31.6525 1.0000
>>
También una matriz se puede crear fila por fila con el comando linspace y el operador dos puntos, ya descritos
anteriormente.
>> D=[linspace(3,11,5);2 7 2 5 7;linspace(1,6,5)]
D = 3.0000 5.0000 7.0000 9.0000 11.0000
2.0000 7.0000 2.0000 5.0000 7.0000
1.0000 2.2500 3.5000 4.7500 6.0000
>> D=[linspace(8,-8,5);2:7:35;linspace(11,16,5);5:-2:-4]
D = 8.0000 4.0000
0 -4.0000 -8.0000
2.0000 9.0000 16.0000 23.0000 30.0000
11.0000 12.2500 13.5000 14.7500 16.0000
5.0000 3.0000 1.0000 -1.0000 -3.0000
>>
Creación de matrices básicas
En el momento de la programación, es necesario inicializar la o las variables con algún valor inicial, que por lo
general es 1 ó 0. Para ello necesitaremos la creación de algunos arrays con estos números.
Comando
A=zeros(m,n)
B=zeros(n)
C=ones(m,n)
Descripcion
Crea una matriz de orden m  n , con ceros
Crea una matriz de orden n  n , con ceros
Crea una matriz de orden m  n , con unos
02 Arrays 15
02 – ARRAYS
Crea una matriz de orden n  n , con unos
Crea la matriz de orden n  n , con unos en la
diagonal, y ceros en el resto de lugares
Crea la matriz de orden m  n , con unos en
la diagonal principal, y ceros en el resto
D=ones(n)
E=eye(n)
F=eye(m,n)
>> A=zeros(2,3)
A= 0 0 0
0 0 0
>> A=zeros(2)
A= 0 0
0 0
>> B=eye(3,5)
B= 1 0 0
0 1 0
0 0 1
>> D=ones(3,5)
D= 1 1 1
1 1 1
1 1 1
>>
0
0
0
0
0
0
1
1
1
1
1
1
Lic. Amado Malca Villalobos
El operador transposición
El operador transposición, cuando se aplica a un array, transforma la fila en columna y viceversa. El comando se
expresa solo con una comilla simple:
' (alt 39)
Además tiene las siguientes propiedades:
 A ' '  A
 A  B  '  A ' B '
 A  B  '  A ' B '
 A B '  B ' A'
Si se tiene una matriz M cuyos elementos son complejos, entonces M ' es la transpuesta y
conjugada de M. Si se desea solo transponer la matriz M, se pueden usar M .' , también se
puede utilizar transpose  M 
>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A=
6 8 -4 3
5 2 1 0
6 9 2 -5
>> A'
ans =
6 5 6
8 2 9
-4 1 2
3 0 -5
>> M=[3+4i 8-6i;4+7j 9+2i]
M=
3.0000 + 4.0000i 8.0000 - 6.0000i
4.0000 + 7.0000i 9.0000 + 2.0000i
>> M'
ans =
3.0000 - 4.0000i
8.0000 + 6.0000i
>> transpose(M)
ans =
3.0000 + 4.0000i
8.0000 - 6.0000i
4.0000 - 7.0000i
9.0000 - 2.0000i
4.0000 + 7.0000i
9.0000 + 2.0000i
>> M.'
ans =
3.0000 + 4.0000i 4.0000 + 7.0000i
8.0000 - 6.0000i 9.0000 + 2.0000i
>>
Manipulación de Arrays
A veces se hace necesario la extracción, cambio o reducción de términos de un array. También a veces se
necesita agregar elementos a estos arreglos.
Vectores
>> v1=[6 8 -4 3 2 1 0 9 2 -5]
v1 = 6 8 -4 3 2 1
>>
0
9
2
-5
Reasignando valores
>> v1(6) % mostrando el sexto elemento del vector v1
ans = 1
>> v1(6)=12 % asignando un Nuevo valor al sexto elemento de v1
02 Arrays 16
02 – ARRAYS
v1 = 6 8 -4 3 2 12 0
>> v1(3)+5*v1(7)-6*v1(2)
ans = -52
>> 8*v1(2)+7*v1(5)-(v1(7)+2)^2
ans = 74
>>
9
2
Lic. Amado Malca Villalobos
-5
Matrices
Al igual que en el caso de vectores se tiene las mismas inquietudes. Para ello hay que tener en cuenta que, si A
es una matriz de orden m  n , entonces se tienen las siguientes opciones para los elementos de tal matriz:
Matriz de orden m  n
A   ai j 
A  i, j 
mn
Elemento de A, ubicado en la fila i y columna j.
k-esimo elemento deA, considerando a la matriz como un vector
A(k )
Una matriz en MatLab se puede leer como si fuera de una sola columna, considerando las columnas una a
continuación de la otra. En donde la indización seria en forma de columna.
>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A = 6 8 -4 3
5 2 1 0
6 9 2 -5
>> A(2,3)
ans = 1
>> A(9)
ans = 2
>> A(10)
ans = 3
>> A(3,4)
ans = -5
>> A(3),A(9),A(11),A(3)+6*A(9)-8*A(11)
ans = 6
ans = 2
ans = 0
ans = 18
>> P=[21 94 16 67;85 93 75 16;90 63 52 78] % creando la matriz P de orden 3 por 4
P=
21 94 16 67
85 93 75 16
90 63 52 78
>> P(2,3),P(1,4),P(3,3),P(1,2) % mostrando algunos elementos de la matriz P
ans = 75
ans = 67
ans = 52
ans = 94
>> P(1),P(2),P(3),P(4),P(5),P(6),P(7),P(8),P(9),P(10),P(11),P(12),
ans = 21
ans = 85
ans = 90
ans = 94
ans = 93
ans = 63
ans = 16
ans = 75
ans = 52
ans = 67
ans = 16
ans = 78
>> r=1:12; % creando el índice r, que va de 1 a 12
>> P(r)
% mostrando los elementos de la matriz P, vista como un vector
02 Arrays 17
02 – ARRAYS
ans = Columns 1 through 7
21 85 90 94 93 63
Columns 8 through 12
75 52 67 16 78
>>
Lic. Amado Malca Villalobos
16
Utilización del operador “dos puntos” en la manipulación de arrays
El operador dos puntos genera un rango de números, en un array.
En vectores
Expresión
v :
Descripcion
Indica todos los elementos del vector v.
v  m : n
Indica los elementos del vector, desde la
posición m hasta la posición n.
Indica los elementos del vector, desde la
posición m hasta la posición n, con un
incremento k. El valor de k puede ser
negativo, siempre que m > n
v  m : k : n
>> u=[6 8 -4 3 2 1 0 9 2 -5]
u = 6 8 -4 3 2 1 0 9 2 -5
>> u(:)
ans =
6
8
-4
3
2
1
0
9
2
-5
>> u(3:7)
ans = -4 3 2 1 0
>> u(1:2:10)
ans = 6 -4 2 0 2
>> u(9:-1:1)
ans = 2 9 0 1 2 3 -4 8 6
>>
En Matrices
Expresión
A :, n 
Descripcion
Indica todos los elementos de la columna n
A  m,:
Indica todos los elementos de la fila m
A :, m : n 
Indica los elementos de las columnas m hasta la n.
A :, m : k : n 
Indica los elementos de las columnas m hasta la n,
con un incrento k.
Indica los elementos de las filas m hasta la n.
A  m : n,:
A  m : n, p : q 
Indica los elementos de las filas m hasta la n, y las
columnas desde la p hasta la q.
>> A=[6 8 -4 3 6 1;5 2 1 0 9 8;6 9 2 -5 7 0;4 8 12 3 9 2]
A = 6 8 -4 3 6 1
5 2 1 0 9 8
6 9 2 -5 7 0
4 8 12 3 9 2
>> A(:,6)
ans = 1
8
0
02 Arrays 18
02 – ARRAYS
2
>> A(3,:)
ans = 6 9 2 -5 7
>> A(2:3,3:6)
ans = 1 0 9 8
2 -5 7 0
>> A(2:3,6:-1:1)
ans = 8 9 0 1 2
0 7 -5 2 9
>> A,B=A([1,4],[2,4,5])
A=
6 8 -4 3 6 1
5 2 1 0 9 8
6 9 2 -5 7 0
4 8 12 3 9 2
B= 8 3 6
8 3 9
>>
Lic. Amado Malca Villalobos
0
5
6
Adición de nuevos elementos a variables ya creadas
En un array que ya ha sido creado se pueden agregar o modificar elementos, con solamente asignar un valor.
En vectores
>> u=[6 8 -4 3 2 ]
% vector de 5 elementos
u = 6 8 -4 3 2
>> u(8)=12
% se añade un octavo elemento, a los intermedios se les asigna el valor cero
u = 6 8 -4 3 2 0 0 12
>> u(3)=42
% se cambia el tercer valor
u = 6 8 42 3 2 0 0 12
>> u(3:7)=2*u(3:7)
% del tercero al séptimo se les duplica su valor
u = 6 8 84 6 4 0 0 12
>> u(3:7)=-4*u(3:7)
u = 6 8 -336 -24 -16 0 0 12
>> w(7)=15
% Creación de un vector w
w = 0 0 0 0 0 0 15
>> w(1:6)=1:6
% reasignado valores a w
w = 1 2 3 4 5 6 15
>> v=[u w]
% concatenando el vector u con w
v = 6 8 -336 -24 -16 0 0 12 1 2 3 4 5 6 15
>>
En matrices
>> A=[6 8 3 6;5 1 0 9;6 9 7 8]
A=
6 8 3 6
5 1 0 9
6 9 7 8
>> A(4,5)=60
A=
6 8 3 6 0
5 1 0 9 0
6 9 7 8 0
0 0 0 0 60
>> A(:,5)=20:10:50
A=
6 8 3 6 20
5 1 0 9 30
6 9 7 8 40
0 0 0 0 50
>> A(4,:)=17:10:57
A=
6 8 3 6 20
5 1 0 9 30
02 Arrays 19
02 – ARRAYS
Lic. Amado Malca Villalobos
6 9 7 8 40
17 27 37 47 57
>> D=eye(4)
D=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> E=[A D]
E=
6 8 3 6 20 1 0 0 0
5 1 0 9 30 0 1 0 0
6 9 7 8 40 0 0 1 0
17 27 37 47 57 0 0 0 1
>> E(:,5)=ones(4,1)
E=
6 8
3
6
1 1 0 0 0
5 1
0
9
1 0 1 0 0
6 9
7
8
1 0 0 1 0
17 27 37 47 1 0 0 0 1
>>
Eliminación de elementos
Para eliminar filas y/o columnas en un array, solo hay que asignarle un array vacio: [ ]
>> p=[6 8 -4 3 2]
p = 6 8 -4 3
>> p(3)=[]
p= 6 8 3 2
>> p(1)=[]
p= 8 3 2
>>
2
>> G=[16 82 31 16;55 77 40 90;66 23 56 84]
G = 16 82 31 16
55 77 40 90
66 23 56 84
>> G(:,2)=[]
% eliminando columna dos
G = 16 31 16
55 40 90
66 56 84
>> G(1,:)=[]
% eliminando fila uno
G = 55 40 90
66 56 84
>>
FUNCIONES PARA LA MANIPULACION DE ARRAYS
Existe una gran variedad de funciones en MatLab, para cada cometido. Estas se pueden hallar en la ventana de
ayuda del MatLab.
Función
Descripción
Devuelve el número de
elementos del vector v.
length  A
Devuelve el valor máximo
de {m,n}, siendo m  n
el orden de la matriz A.
size  A
Devuelve un vector fila
[m,n], donde m y n
length  v 
Ejemplo
>> v=[6 8 -4 3 2]
v = 6 8 -4 3 2
>> length(v)
ans = 5
>> w=[]
w = []
>> length(w)
ans = 0
>> A=[6 8; 3 6;5 1]
A= 6 8
3 6
5 1
>> length(A)
ans = 3
>> A
A= 6 8
02 Arrays 20
02 – ARRAYS
representan el tamaño de la
matriz A
reshape  A, m, n 
Reordena una matriz A, de
orden r  s a una de orden
m  n . Siempre que
r  s  m n
diag  v 
Si v es un vector, se crea
una matriz cuadrada con
los elementos de v en la
diagonal
diag  A
Si A es una matriz, se crea
un vector a partir de los
elementos de la diagonal
de A
Lic. Amado Malca Villalobos
3 6
5 1
>> size(A)
ans = 3 2
>> A
A= 6 8
3 6
5 1
0 9
>> reshape(A,2,4)
ans = 6 5 8 1
3 0 6 9
>> v=[6 8 2]
v= 6 8 2
>> diag(v)
ans =
6 0 0
0 8 0
0 0 2
>> A=[120 56 80 78;13 450
67 45;89 56 610 56]
A = 120 56 80 78
13 450 67 45
89 56 610 56
>> diag(A)
ans = 120
450
610
Variables en Memoria
Para visualizar las variables que aun están en memoria, cuando se está ejecutando MatLab, se usa el comando
who .
También tenemos el comando whos , que además de lo anterior visualiza el tamaño, bytes y clase de las variables actuales en la memoria.
>> who
Your variables are:
A B D E G ans p u v w
>> whos
Name Size
Bytes Class Attributes
A
3x4
96 double
B
2x3
48 double
D
4x4
128 double
E
4x8
256 double
G
2x3
48 double
ans
3x1
24 double
p
1x2
16 double
u
1x5
40 double
v
1x3
24 double
w
0x0
0 double
>>
02 Arrays 21
02 – ARRAYS
Lic. Amado Malca Villalobos
Problemas de aplicación
Problema 2.1: Creación de una matriz
Crear una matriz de orden 4  5 , en la cual las primeras dos filas sean ceros y las dos siguientes sean unos.
Solución:
>> F=zeros(2,5)
F= 0 0 0 0 0
0 0 0 0 0
>> G=ones(2,5)
G= 1 1 1 1 1
1 1 1 1 1
>> H=[F; G]
H= 0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
>>
También puede hacerse así:
>> K(1:2,:)=zeros(2,5)
K=
0 0 0 0 0
0 0 0 0 0
>> K(3:4,:)=ones(2,5)
K=
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
>>
Problema 2.2: Creación de una matriz
Crear una matriz 6  6 en la cual las dos filas centrales, junto con las dos columnas centrales, sean uno, siendo el
resto de elementos ceros.
Solución:
>> D=zeros(6,6)
D=
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> D(3:4,:)=ones(2,6)
D=
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
>> D(:,3:4)=ones(6,2)
D=
0 0 1 1 0
0 0 1 1 0
1 1 1 1 1
1 1 1 1 1
0 0 1 1 0
0 0 1 1 0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
Problema 2.3: Manipulación de matrices
Sean dos matrices, una A de tamaño 5  6 , y otra B de tamaño 3  5 . Sea también un vector v de longitud 9.
02 Arrays 22
02 – ARRAYS
2

3
A  4

5
6

Lic. Amado Malca Villalobos
11 14 17 

 5 10 15 20 25 30 
6 9 12 15 18 


7 10 13 16 19  B   30 35 40 45 50 55 
 55 60 65 70 75 80 



8 11 14 17 20 

9 12 15 18 21 
v   99 98 97 96 95 94 93 92 91
5
8
Y luego con un solo comando que remplace:
a) Las cuatro últimas columnas de las filas 1 y 3 de A por las cuatro primeras columnas de las primeras dos filas
de la matriz B.
b) Las cuatro últimas columnas de la cuarta fila de A por los elementos 5 a 8 de v.
c) Las cuatro últimas columnas de la quinta fila de A por las columnas 3 a 5 de la tercera fila de B.
Solución:
Datos
>>A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21]
A=
2 5 8 11 14 17
3 6 9 12 15 18
4 7 10 13 16 19
5 8 11 14 17 20
6 9 12 15 18 21
>> B=[5:5:30;30:5:55;55:5:80]
B=
5 10 15 20 25 30
30 35 40 45 50 55
55 60 65 70 75 80
>> v=[99:-1:91]
v = 99 98 97 96 95 94 93 92 91
Cambios con tres comandos
>>A([1 3],[3 4 5 6])=B([1 2],[1 2 3 4])
A=
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 11 14 17 20
6 9 12 15 18 21
>> A(4,[3:6])=v([5:8])
A=
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 12 15 18 21
>> A(5,[3:6])=B(3,[2:5])
A=
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75
>>
Datos
>> A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21];
>> B=[5:5:30;30:5:55;55:5:80];
>> v=[99:-1:91];
Con un solo comando
>> A([1 3 4 5],[3:6])=[B([1
2],[1:4]);v([5:8]);B(3,[2:5])]
A=
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75
Cadenas de caracteres y variables de tipo string
Una cadena o string es simplemente un array de caracteres. Para crear una cadena solo es necesario teclear los
caracteres que la formen entre comillas simples.
No se incluye la letra eñe y los acentos.
>> M=['calculo' 'ad hoc' '%&$j']
M =calcuload hoc%&$j
>> M=['calculo';'ad hoc';'% & $ j']
M=
calculo
ad hoc
%&$j
>> N=['geo','$5437','?¿ PO']
N =geo$5437?¿ PO
>> N=['geofi','$5437','?¿ PO']
N =geofi$5437?¿ PO
>>
02 Arrays 23
02 – ARRAYS
Lic. Amado Malca Villalobos
FUNCIONES QUE ACTÚAN SOBRE VECTORES
Las siguientes funciones actúan sobre vectores. Aquí se presentan solo algunas funciones.
Una relación completa de todas las funciones soportadas por MATLAB se puede obtener
consultando la ayuda: matlab/datafun.
length(x)
[vM,pM]=max(x)
[vm, pm]=min(x)
sum(x)
cumsum(x)
mean(x)
std(x)
prod(x)
cumprod(x)
[y,i]=sort(x)
devuelve la longitud del vector x
Máximo elemento de un vector. Devuelve el valor máximo vM
y la posición que ocupa pM en el vector
Mínimo elemento de un vector. Devuelve el valor mínimo y la
posición que ocupa
suma de los elementos de un vector
Devuelve el vector suma acumulativa de los elementos de un
vector. Es decir, el primer elemento del nuevo vector es el
mismo que el de x, el segundo es la suma de los dos
primeros de x, el tercero es la suma de los tres primeros
vectores de x, y así sucesivamente
valor medio de los elementos de un vector
desviación típica
producto de los elementos de un vector
devuelve el vector producto acumulativo de los elementos de
un vector (como en cumsum pero respecto al producto)
ordenación de menor a mayor de los elementos de un vector
x. Devuelve el vector ordenado y, y un vector i con las
posiciones iníciales en x de los elementos en el vector
ordenado
En realidad estas funciones se pueden aplicar también a matrices, pero en ese caso se
aplican por separado a cada columna de la matriz, dando como valor de retorno un vector
resultado de aplicar la función a cada columna de la matriz considerada como vector. Si
estas funciones se quieren aplicar a las filas de la matriz basta aplicar dichas funciones a la
matriz traspuesta.
FUNCIONES QUE ACTÚAN SOBRE MATRICES
Las siguientes funciones exigen que el/los argumento/s sean matrices. En este grupo
aparecen algunas de las funciones más útiles y potentes de MATLAB. No están todas las
que soporta MATLAB. La relación completa se puede consultar a través de la ayuda:
matlab/elmat y matlab/matfun principalmente. Se clasificaran en varios subgrupos:
FUNCIONES MATRICIALES ELEMENTALES
A'
A.'
trace(A)
[m,n] = size(A)
numel(A)
calcula la traspuesta (conjugada) de la matriz A
Calcula la traspuesta (sin conjugar) de la matriz A. Si la
matriz A es de números reales A.' y A' producen el mismo
resultado.
devuelve la traza de la matriz cuadrada A
devuelve el numero de filas m y de columnas n de una matriz
rectangular A
devuelve el número de elementos de la matriz A.
02 Arrays 24
02 – ARRAYS
Lic. Amado Malca Villalobos
FUNCIONES MATRICIALES ESPECIALES
power(A,b)
power(b,A)
exp(A)
sqrt(A)
log(A)
mpower(A,n)
expm(A)
sqrtm(A)
logm(A)
𝑏
Si 𝐴 = [𝑎𝑖𝑗 ] devuelve la matriz cuyos elementos son 𝑎𝑖𝑗
𝑎𝑖𝑗
Devuelve la matriz cuyos elementos son 𝑏 .
𝑎𝑖𝑗
Devuelve una matriz cuyos elementos son exp(𝑎𝑖𝑗 ) = 𝑒 .
Devuelve una matriz cuyos elementos son √𝑎𝑖𝑗
Devuelve una matriz cuyos elementos son ln(𝑎𝑖𝑗 ).
Devuelve la matriz A ∙ … ∙ A n veces, si n es un entero.
Devuelve la exponencial de A; i.e. eA
Devuelve √A; i.e. una matriz que multiplicada por si misma
da A.
devuelve la matriz ln(𝐴); i.e. una matriz B tal que eB = A.
Los comandos A.^n y A^ n son equivalentes a las funciones power(A,n) y powerm(A,n)
respectivamente.
FUNCIONES PARA MANIPULAR MATRICES
cat(Dim,A,B)
reshape(A,m,n)
diag
blkdiag(A,B)
tril(A)
triu(A)
fliplr(A)
flipud(A)
rot90(A)
[I,J,V]= find(A)
end(A)
concatena las matrices A y B, i.e. las pone una junto a la
otra. Si Dim=1 B debajo de A y si Dim=2 pone B detrás de A
cambia el tamaño de A a una matriz m x n
dependiendo del argumento se emplea para construir una
matriz diagonal o para extraer la diagonal de una matriz
construye una matriz diagonal por bloques
extrae la parte triangular inferior de A
extrae la parte triangular superior de A
Permuta las columnas de A: la ultima pasa a ser la primera,
la anteúltima pasa a ser la segunda, etc..
lo mismo que fliplr pero por filas
rota A 90 grados
Encuentra las filas y columnas donde están los elementos no
nulos de A y los almacena en I y J, respectivamente. En V
pone el vector de elementos no nulos.
devuelve el ultimo índice de A
FUNCIONES DE AN_ALISIS MATRICIAL
n=norm(v)
n=normest(A)
r=rank(A)
d=det(A)
t=trace(A)
N=null(A)
Q=orth(A)
subspace1(A,B)
Norma l2 del vector v o de la matriz, si el argumento es una
matriz. Hay variantes para otras normas
estimación de la norma l2 de la matriz A. Se usa cuando el
tamaño de A es muy grande y se consume mucho tiempo en
calcular norm(A)
rango de la matriz A
determinante de A
traza de A
las columnas de N forman una base del núcleo de A
las columnas de Q forman una base ortonormal del espacio
imagen de A
Angulo entre los subespacios generados por las columnas de
AyB
02 Arrays 25
02 – ARRAYS
Lic. Amado Malca Villalobos
FUNCIONES DE FACTORIZACI_ON DE MATRICES Y DE RESOLUCION DE SISTEMAS
LINEALES
/ y \
B = inv(A)
c = cond(A)
U = chol(A)
[L,U] = lu(A)
[Q,R]=qr(A)
d = det(A)
E = rref(A)
U = chol(A)
P=pinv(A)
solución de sistemas lineales (ver la ayuda \help slash")
inversa de A
Numero de condición de A en la norma l2. Hay una variante
para otras normas
descomposición de Cholesky de una matriz definida positiva
Descomposición LU (con pivotamiento) de la matriz A. Es
decir, PA = LU, P una matriz de permutación, L triangular
inferior con 1's en la diagonal y U una matriz triangular
superior.
descomposición QR de A
Determinante de la matriz cuadrada A
reducción a forma de escalera por _las de una matriz
rectangular A
descomposición de Cholesky de una matriz definida positiva
pseudoinversa (o inversa de Moore-Penrose) de A
FUNCIONES PARA CALCULO DE VALORES PROPIOS Y SINGULARES
E=eig(A)
[U,S,V]=svd(A)
P=poly(X)
H=hess(A)
[U,S]=schur(A)
[U,S]=rsf2csf(U,R)
[U,S]=cdf2rdf(U,R)
devuelve el vector E con los valores propios de A
descomposición de A en valores singulares: A = USV*
si X es una matriz cuadrada, P es un vector cuyas
componentes son los coeficientes del polinomio
característico de X.
Si X es un vector, P es un polinomio cuyas raíces son las
componentes de X
forma Hessenberg de A
forma de Schur de A. U es la matriz unitaria tal que A =USU*
Transforma la forma de Schur real en la compleja. La forma
de Scur compleja es la habitual: una matriz triangular
superior con los valores propios (posiblemente complejos) en
la diagonal. La forma real de Schur se refiere a una matriz
real cuyos valores propios complejos aparecen en pares
conjugados. La matriz R de la forma de Schur es real y en
ella aparecen bloques diagonales 2 x 2 asociados a los
valores propios complejos conjugados.
el reciproco del anterior. Convierte la forma diagonal
compleja de Schur de una matriz real a la forma real.
02 Arrays 26
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
03 OPERACIONES MATEMATICAS CON ARRAYS
Ahora que ya tenemos creados los arrays, se harán operaciones con ellos, las básicas son de suma y resta, luego
tenemos las de multiplicación y división que tiene mucho que aportar. También tenemos la operación elemento a
elemento, que puede tener muchas aplicaciones que le sorprenderá.
Suma y resta
Estas operaciones se dan entre arrays que sean conformes, es decir de la misma dimensión.
En vectores
>> u=[16 21 45 70 90],v=[45 67 34 89 35]
u = 16 21 45 70 90
v = 45 67 34 89 35
>> z=u+v, x=u-v, y=3*u+5*v
z = 61 88 79 159 125
x = -29 -46 11 -19 55
y = 273 398 305 655 445
>>
En matrices
>> A=[2 4 7 8;3 5 1 9;5 4 6 3], B=[12 44 98 81;56 45 67 34;67 89 62 46]
A=
2 4 7 8
3 5 1 9
5 4 6 3
B=
12 44 98 81
56 45 67 34
67 89 62 46
>> C=A+B, D=A-B, E=B-A, F=5*A-7*B
C=
14 48 105 89
59 50 68 43
72 93 68 49
D=
-10 -40 -91 -73
-53 -40 -66 -25
-62 -85 -56 -43
E=
10 40 91 73
53 40 66 25
62 85 56 43
F=
-74 -288 -651 -527
-377 -290 -464 -193
-444 -603 -404 -307
>> A
A=
2 4 7 8
3 5 1 9
5 4 6 3
>> G=A-5
G=
-3 -1 2 3
-2 0 -4 4
0 -1 1 -2
>>
Multiplicación de arrays
Para efectuar una multiplicación de arrays (matrices), se debe tener que el numero de columnas de la primera
matriz con el numero de filas de la segunda matriz deben ser iguales.
Esto es si queremos efectuar el producto matricial de A por B, dado por:
03 operaciones con arrays
27
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
Cm p  Amn Bn p ,
Donde ci k  (Fila i de A) (Columna j de B)=
n
a
j 1
i j
bj k
Una matriz fila por una matriz columna
>> F=[1 5 8 7]
F= 1 5 8 7
>> C=[15;24;12;56]
C = 15
24
12
56
>> F*C
ans = 623
>> C*F
ans =
15 75 120 105
24 120 192 168
12 60 96 84
56 280 448 392
>>
Dos matrices conformes para el producto
>> A=[15 16 43 76;98 74 62 56;45 67 34 67]
A = 15 16 43 76
98 74 62 56
45 67 34 67
>> B=[12 44 98 81 92;56 45 67 34 24;67 89 62 46 45;45 89 32 56 67]
B = 12 44 98 81 92
56 45 67 34 24
67 89 62 46 45
45 89 32 56 67
>> P = A*B
P=
7377
11971
7640
7993
8791
11994
18144
20198
16442
17334
9585
13984
13151
11239
11767
>> B*A
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Producto de un escalar por una Matriz
>> 4*A
ans =
60 64 172 304
392 296 248 224
180 268 136 268
>> 3*B
ans =
36 132 294 243 276
168 135 201 102 72
201 267 186 138 135
135 267 96 168 201
>>
División de arrays
La división de Matrices tiene que ver con la solución de un sistema de ecuaciones lineales, de la forma siguiente:
Ann X n1  Bn1
Y1n Ann  C1n
Los cuales son equivalentes, basta con hallar la transpuesta del primero y obtenemos el segundo, y viceversa.
En la teoría de algebra lineal, Para ello es necesario hablar de inversa de una matriz y también de determinante
de la misma, también de matriz identidad. Se sabe que los sistemas antes mencionados tienen solución única,
siempre y cuando el determinante de la matriz A sea no nulo.
03 operaciones con arrays
28
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
Matriz identidad
La matriz identidad se obtiene con el comando eye de MatLab:
>> A=[12 44 98 81;45 67 34 24;89 62 46 45;89 32 56 67]
A=
12 44 98 81
45 67 34 24
89 62 46 45
89 32 56 67
>> I=eye(4)
I=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> A*I, I*A
ans =
12 44 98 81
45 67 34 24
89 62 46 45
89 32 56 67
ans =
12 44 98 81
45 67 34 24
89 62 46 45
89 32 56 67
>>
Inversa y determinante de una matriz
Dada una matriz cuadrada A, la inversa de A, es aquella matriz que multiplicada por A, resulta la matriz
identidad. La sintaxis en Matlab es:
inv( A)
A1
Ademas el determinante de una matriz cuadrada es:
det( A)
>> A=[1 1 4;2 1 8;1 -1 3],det(A)
A=
1 1 4
2 1 8
1 -1 3
ans = 1
>> B=inv(A)
B=
11 -7 4
2 -1 0
-3 2 -1
>> C=A^-1
C=
11 -7 4
2 -1 0
-3 2 -1
>> A*B, A*C
ans =
1 0 0
0 1 0
0 0 1
ans =
1 0 0
0 1 0
0 0 1
División de arrays
La división izquierda \:
La división izquierda se usa en forma equivalente a resolver la ecuación matricial
03 operaciones con arrays
29
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
Ann X n1  Bn1
1
XA B
De donde podemos ver que :
Asi podemos decir que en MatLab la división izquierda es:
A \ B  A1 * B
La división derecha /:
La división derecha se usa en forma equivalente a resolver la ecuación matricial
Y1n Ann  C1n
Y  C A1
De donde podemos ver que :
Asi podemos decir que en MatLab la división izquierda es:
C / A  C * A1
Ejemplos: En la división de números, arrays de orden
>> 20/4
ans = 5
>> 20/10
ans = 2
>> 20\10
ans = 0.5000
>>
1 1
En la solución de un sistema de ecuaciones:
4x  2 y  6z  8
2x  8 y  2z  4
6 x  10 y  3z  0
Se convierte en:
 4 2 6  x   8 

   
 2 8 2  y    4 
 6 10 3  z   0 

   
o también
x
 4 2 6


y z   2 8 10    8 4 0 
 6 2 3


En la primera división izquierda, y en la segunda división derecha.
>> A=[4 -2 6;2 8 2;6 10 3]
A=
4 -2 6
2 8 2
6 10 3
>> b=[8;4;0]
B=
8
4
0
>> X=A\b
X=
-1.8049
0.2927
2.6341
>> C=[4 2 6;-2 8 10;6 2 3]
C=
4 2 6
-2 8 10
6 2 3
>> d=[8 4 0]
d= 8 4 0
>> Y=d/C
Y = -1.8049 0.2927 2.6341
03 operaciones con arrays
30
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
>>
Operación elemento a elemento
En las operaciones de suma y resta de matrices las operaciones se hacían elemento a elemento, a semejanza de
ello se puede realizar: el producto, la división, la potencia y otras que se nos ocurra y que tengan alguna utilidad.
Para las operaciones elemento a elemento los arrays deben tener la misma dimensión, y se debe teclear siempre
un punto antes de la operación.
Sean
A   ai j 
mn
y
A.* B  ai j  bi j 
mn
B  bi j 
mn
Entonces
A. / B  ai j / bi j 
mn
A. ^ B  ai j j 
mn
A. \ B  ai j \ bi j 
bi
mn
A.^ k  ai j 
mn
k
Ejemplos:
>> A=[4 -2 6 2;2 8 2 3;6 10 3 4;1 5 7 2]
A = 4 -2 6 2
2 8 2 3
6 10 3 4
1 5 7 2
>> B=[4 2 3 8;2 2 1 3;2 4 2 2;6 1 3 2]
B= 4 2 3 8
2 2 1 3
2 4 2 2
6 1 3 2
>> A.*B
ans = 16 -4 18 16
4 16 2 9
12 40 6 8
6 5 21 4
>> A./B
ans = 1.0000 -1.0000 2.0000 0.2500
1.0000 4.0000 2.0000 1.0000
3.0000 2.5000 1.5000 2.0000
0.1667 5.0000 2.3333 1.0000
>> A.\B
ans = 1.0000 -1.0000 0.5000 4.0000
1.0000 0.2500 0.5000 1.0000
0.3333 0.4000 0.6667 0.5000
6.0000 0.2000 0.4286 1.0000
>> A.^B
ans =
256
4
216
256
4
64
2
27
36
10000
9
16
1
5
343
4
>> A.^3
ans =
64
-8
216
8
8
512
8
27
216
1000
27
64
1
125
343
8
>>
03 operaciones con arrays
31
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
Utilización de arrays en funciones predefinidas de MatLab
Las funciones predefinidas en MatLab están preparadas para poder usar las operaciones elemento a elemento.
Ejemplo: Con el comando plot para graficar funciones: y  x3  x 2  14 x  29,
x   10,10
>> x=-10:0.5:10;
>> y=x.^3-x.^2-14*x+29;
>> plot(x,y)
800
600
400
200
0
-200
-400
-600
-800
-1000
-10
-8
-6
-4
-2
0
2
4
6
8
10
2
Ejemplo: Evaluar y graficar la función y  x  5x , x   10,10
2
4 x  10
Solucion:
>> x=-10:0.5:10
x = -10.0000 -9.5000 -9.0000 -8.5000 -8.0000 -7.5000 -7.0000 -6.5000 -6.0000 -5.5000
4.5000 -4.0000 -3.5000 -3.0000 -2.5000 -2.0000 -1.5000 -1.0000 -0.5000
0 0.5000
1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 6.0000 6.5000
7.5000 8.0000 8.5000 9.0000 9.5000 10.0000
>> y=(x.^2+5*x)./(4*x.^2+10)
y = 0.1220 0.1152 0.1078 0.0995 0.0902 0.0798 0.0680 0.0545 0.0390 0.0210
0.0247 -0.0541 -0.0890 -0.1304 -0.1786 -0.2308 -0.2763 -0.2857 -0.2045
0 0.2500
0.5132 0.5385 0.5357 0.5217 0.5042 0.4865 0.4698 0.4545 0.4408 0.4286 0.4176
0.3989 0.3910 0.3838 0.3772 0.3713 0.3659
>> plot(x,y)
0.6
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-10
-5
0
5
10
Ejemplo: Evaluando las funciones trigonométricas
>> x=0:pi/6:pi
x = 0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416
>> y=sin(x)
y = 0 0.5000 0.8660 1.0000 0.8660 0.5000 0.0000
>> y=tan(x)
y = 1.0e+016 * 0 0.0000 0.0000 1.6331 -0.0000 -0.0000 -0.0000
>>
Ejemplo: Evaluando la función raíz cuadrada
>> x=0:10
x = 0 1 2 3 4 5 6 7 8 9 10
>> y=sqrt(x)
y = 0 1.0000 1.4142 1.7321 2.0000 2.2361
>>
2.4495
2.6458
03 operaciones con arrays
2.8284
32
3.0000
3.1623
-5.0000 1.0000
7.0000
0 0.4286
0.4078
03 OPERACIONES MATEMATICAS CON ARRAYS
Lic. Amado Malca Villalobos
FUNCIONES PREDEFINIDAS PARA TRABAJAR CON ARRAYS
Función
mean(A)
C=max(A)
[d,n]=max(A)
C=min(A)
[d,n]=min(A)
sum(A)
sort(A)
median(A)
std(A)
det(A)
dot(u,v)
cross(u,v)
inv(A)
Descripción
Retorna el valor
medio del array A
Retorna el valor
máximo de un
vector o matriz
Retorna el valor
máximo de una
matriz . por
columnas. n es un
vector de las
ubicaciones
Retorna el valor
máximo de un
vector o matriz
Suma los
elementos del
vector A
Ordena los
elementos del
vector A
Devuelve la
mediana de los
elementos del
vector A
Devuelve la
desviación
estándar de los
elementos del
vector A
Devuelve el
determinante de la
matriz cuadrada A
Calcula el
producto escalar
de los vectores u
y v.
Calcula el
producto cruz de
los vectores u y
v en R3.
Devuelve la
inversa de la
matriz cuadrada A
Ejemplo
>> A=[4 8 10;6 11 10;8 14 10]
A = 4 8 10
6 11 10
8 14 10
>> mean(A)
ans = 6 11 10
>> max(A)
ans = 8 14 10
>> [d,n]=max(A)
d = 8 14 10
n= 3 3 1
>> min(A)
ans = 4 8 10
>> sum(A)
ans = 18 33
30
>> sort(A)
ans = 4 8 10
6 11 10
8 14 10
>> median(A)
ans = 6 11 10
>> std(A)
ans = 2
3
0
>> det(A)
ans = 0
>> u=[1 4 7]
>> v=[5 8 2]
>> dot(u,v)
ans = 51
>> A=[4 8 10;6 1 10;8 14 10];
>> dot(A,A)
ans = 116 261 300
>> cross(u,v)
ans = -48 33 -12
>> A=[4 8 1;6 1 1;8 14 1]
A= 4 8 1
6 1 1
8 14 1
>> inv(A)
ans =
-0.3250 0.1500 0.1750
0.0500 -0.1000 0.0500
1.9000 0.2000 -1.1000
Generación de números aleatorios
La generación de números aleatorios es muy necesaria en las áreas que debe realizar algunas simulaciones.
Para ello MatLab tiene dos comandos: rand y randn
Comando
Descripcion
Rand
Genera un número
aleatorio entre 0 y 1.
03 operaciones con arrays
33
03 OPERACIONES MATEMATICAS CON ARRAYS
rand(1,n)
rand(n)
Rand(m,n)
Randperm(n)
(ba)*rand(1,n)+a
Lic. Amado Malca Villalobos
Genera una fila de n
números aleatorios
entre 0 y 1.
Genera una matriz de
orden nxn de números
aleatorios entre 0 y 1.
Genera una matriz de
orden mxn de números
aleatorios entre 0 y 1.
Genera un vector de n
elementos que son
permutaciones
aleatorias de enteros
entre 1 y n.
Genera una fila de n
números aleatorios
entre a y b.
03 operaciones con arrays
34
04. Archivos m.
Lic. Amado Malca Villalobos
Archivos m.
En el momento de ejecutar una aplicación en alguna área de interés, a veces es necesario
realizar varias secuencias de algunas operaciones, algunas de ellas en forma repetida, lo
cual resulta sumamente tedioso. Lo cual puede ser hecho por un programa , que desde
luego debe estar bien estructurado, y entendible por la computadora. Para ello se usan
los ficheros script, también llamado archivos .m
Un fichero script es un conjunto de sentencias u órdenes que se ejecutan en forma
secuencial. En algunos casos debido a la estructura misma del programa se llamara
función.
Para que estos programas sean coherentes y los pueda leer el programa Matlab, deben
seguir un orden lógico. Estos ficheros tienen extensión m. y se pueden editar y/o
ejecutar las veces que sea necesario.
En algunos casos es necesario que el programador ingrese algunos datos para que el
programa funcione. Estos deberán ser ingresados por teclado posiblemente, y en algún
formato adecuado. Para esto hay comandos adecuados.
Notas sobre los ficheros script
- Un fichero script es una secuencia de comandos de MatLab, también denominado
programa.
- Cuando se ejecuta un fichero script, MatLab ejecuta los comandos en el orden en que
éstos han sido escritos, igual que si se ejecutaran uno a uno en la ventana de
comandos.
- Cuando un fichero script contiene un comando que produce una salida o resultado
(ejemplo una asignación de variable sin un punto y coma al final), la salida se visualiza
en la ventana de comandos.
- La utilización de ficheros script es conveniente, ya que estos pueden ser editados (es
decir se pueden corregir o modificar), y se pueden ejecutar tantas veces como se
quiera.
- Los ficheros script se pueden crear y editar en cualquier editor de texto. Asimismo el
texto se puede copiar y pegar desde estos editores a MatLab para ser ejecutado.
Los ficheros script también de denominan ficheros M, ya que la extensión .m es la que
utiliza y reconoce MatLab cuando se guardan estos archivos.
- Un fichero script se puede ejecutar, bien tecleando su nombre en la Ventana de
Comandos (y pulsando la tecla enter) o bien desde la ventana del editor a través del
icono Run (ejecutar).
- Estos programas siempre deben estar en el directorio actual de MatLab, para poder
ejecutarse. Que se puede ver en la siguiente figura
04 archivos .m
35
04. Archivos m.
Lic. Amado Malca Villalobos
Ordenes útiles para carpetas
Como ya se ha dicho, si el archivo de texto no se graba en la carpeta de trabajo de
MATLAB no podrá ser ejecutado. Conviene tener ciertas herramientas que ayuden a
comprobar esta situación.
_ Para comprobar los archivos .m que tiene en la carpeta de trabajo de MATLAB
pruebe la orden what.
_ Para saber la carpeta de trabajo que MATLAB está usando existe la orden pwd.
_ Para saber la lista de todos los archivos en la carpeta de trabajo de MATLAB pruebe
la orden dir. Aparecerán los archivos de tipo .m y también los de otros tipos.
- Con el comando cd, se muestra el directorio de trabajo actual.
>> what
M-files in the current directory C:\Users\Malca\Documents\MATLAB
DistPaL
curva3d05 datos
prom
curva3d01 curva3d06 dfun
prom_2
curva3d02 curvar3
ejemplo01 prom_3
curva3d03 curvasR3 ejemplo4_2 prommult5
curva3d04 curvatemp fun
solcuad
>> pwd
ans = C:\Users\Malca\Documents\MATLAB
>> dir
.
curva3d04.m
datos.asv
prom.m
..
curva3d05.m
datos.m
prom_2.m
DistPaL.asv
curva3d06.m
datos.xlsx
prom_3.m
DistPaL.m
curvar3.asv
datos_lluvia.xls prommult5.m
curva3d01.m
curvar3.m
dfun.m
solcuad.m
curva3d02.m
curvasR3.asv ejemplo01.m
curva3d03.asv curvasR3.m
ejemplo4_2.m
curva3d03.m
curvatemp.asv fun.asv
curva3d04.asv curvatemp.m
fun.m
>> cd
C:\Users\Malca\Documents\MATLAB
04 archivos .m
36
04. Archivos m.
Lic. Amado Malca Villalobos
Ahora crearemos un programa, para ello abriremos un archive Nuevo, de tipo m-file,
segun lo indicado en los siguientes graficos.
Ejemplo: Resolver la ecuación cuadrática 5x 2 8x 4
0
Para ello lo primero a hacer es abrir un archivo m, e ir escribiendo en el. La primera
parte comprende un breve comentario sobre lo que hace el programa, estas líneas
siempre van precedidas del símbolo de porcentaje (%), lo cual le indica a MatLab que
no debe ejecutarse.
Si queremos visualizar ello basta con llamar al programa precedido del comando help.
solcuad.m
% programa que resuelve una
ecuación cuadrática
04 archivos .m
Ejecucucion
>> solcuad
sol_1 = 1.2899
37
04. Archivos m.
Lic. Amado Malca Villalobos
% 5x2-8x+2=0
sol_1=(8+sqrt(8^2-4*5*2))/10
sol_2=(8-sqrt(8^2-4*5*2))/10
sol_2 = 0.3101
>> help solcuad
programa que resuelve una
ecuación cuadrática
5x2-8x+2=0
>>
Ejemplo: En el siguiente caso se construirá una función, la cual tiene una pequeña
diferencia en su estructura que contiene una línea adicional, que será explicada con
mayor detalle en el siguiente acápite.
Se creara la función: y f x x3 5x2 8x 4 . Luego de lo cual se podrá evaluar,
graficar y hacer algunas cosas más propias de las funciones matemáticas.
fun.m
function
y=fun(x)
% programa que calcula el valor
de
% una función dado el valor de x.
y=x.^3+3*x.^2-8*x+4;
Ejecucucion
>> fun(3),fun(1),fun(7),fun(13)
ans = 34
ans = 0
ans = 438
ans =
2604
>>
>> x=-6:0.1:5;
>> y=fun(x);
>> plot(x,y)
>>
>> help fun
programa que calcula el valor de
una función dado el valor de x.
>>
04 archivos .m
38
04. Archivos m.
Lic. Amado Malca Villalobos
200
150
100
50
0
-50
-100
-6
-4
-2
0
2
4
6
Grafico de la función en el intervalo [-6, 6]
Vista de la ventana de comandos en MatLab, del archivo m, y del grafico de la función.
VARIABLES GLOBALES
Recuerde que las variables escritas en un archivo script (programa), se ejecutan como si
estuvieran en la ventana de comandos, salvo las que están en un ficheros tipo fuction.
Cuando se ejecuta un fichero script, las variables utilizadas en los cálculos dentro del
fichero deben tener valores asignados previamente en el mismo script. Esta asignación
se puede hacer de tres formas:
- Variable definida y asignada en el fichero script.
- Variable definida y asignada en la ventana de comandos.
- Variable definida y asignada en el fichero script, pero luego se cambia en la
ventana de comandos
04 archivos .m
39
04. Archivos m.
Lic. Amado Malca Villalobos
Variable definida y asignada en el fichero script.
La asignación de la variable forma parte del fichero, Si se quiere cambiar el valor
simplemente se edita el fichero y se guarda los cambios.
Ejemplo: Ahora presentaremos un programa que halla el puntaje promedio de varias
jugadas en un casino.
prom.m
Ejecución
% este programa calcula el
>> prom
promedio
Puntuacion_Media =
% de un conjunto de jugadas
82.5000
j1=80;
>> help prom
j2=85;
este programa calcula el
j3=75;
promedio
j4=90;
de un conjunto de jugadas
Puntuacion_Media=(j1+j2+j3+j4)/4
>>
04 archivos .m
40
04. Archivos m.
Lic. Amado Malca Villalobos
Variable definida y asignada en la ventana de comandos.
En este caso el o los valores de la variable se indican en la ventana de comandos, y
luego se ejecuta el programa. Aquí los valores de las variables solo se cambian en la
ventana de comandos.
Ejemplo: El programa requerido es el mismo anterior, hallaremos el puntaje promedio
de varias jugadas en un casino. Pero los valores se ingresaran por teclado.
Prom_2.m
% Calculo del promedio de cuatro jugadas
% los valores se ingresan por la ventana de
comandos
% con las variables j1, j2, j3 y j4
Puntuacion_Media=(j1+j2+j3+j4)/4
Ejecución en MatLab
>> clear
% para limpiar memoria de variables pre asignadas
>> prom_2
??? Undefined function or variable
'j1'.
Error in ==> prom_2 at 5
Puntuacion_Media=(j1+j2+j3+j4)/4
>> j1=87, j2=90, j3=86, j4=64
% corrigiendo el problema de las variables
j1 = 87
j2 = 90
j3 = 86
j4 = 64
>> prom_2
Puntuacion_Media = 81.7500
>> help prom_2
Calculo del promedio de cuatro jugadas
los valores se ingresan por la ventana de comandos
con las variables j1, j2, j3 y j4
Variable definida y asignada en el fichero script, pero luego se cambia en la
ventana de comandos. Comando input
En esta opción la variable se define en el fichero script, y cuando se ejecuta tal archivo
al usuario se le pide un valor concreto a través de la ventana de comandos, y a estas
variables se les asigna el valor correspondiente.
Esto se hace con el comando input. Cuya sintaxis es:
nombre _ var iable
input
' mensaje que se muestra
en la ventana de comandos '
Al ejecutar este comando se muestra en la ventana de comandos el mensaje indicado,
luego del cual el usuario ingresara el valor de la variable en forma adecuada.
04 archivos .m
41
04. Archivos m.
Lic. Amado Malca Villalobos
Ejemplo: Igual al caso anterior, se hallara el valor promedio de un conjunto de puntajes
de jugadas en un casino.
Prom_3.m
% este programa calcula el promedio
% de un conjunto de tres jugadas
% las cuales se ingresan en la ventana de
comandos
% usando el comando input
j1=input('Ingrese la primera puntuación:')
j2=input('Ingrese la segunda puntuación:')
j3=input('Ingrese la tercera puntuación:')
j4=input('Ingrese la cuarta puntuación:')
Puntuacion_Media=(j1+j2+j3+j4)/4
Ejecucion en MatLab
>> prom_3
Ingrese la primera puntuacion:87
j1 = 87
Ingrese la segunda puntuacion:98
j2 = 98
Ingrese la tercera puntuacion:67
j3 = 67
Ingrese la cuarta puntuacion:82
j4 = 82
Puntuacion_Media = 83.5000
>> help prom_3
este programa calcula el promedio
de un conjunto de tres jugadas
las cuales se ingresan en la ventana de comandos
usando el comando input
>>
COMANDO DE INGRESO DE DATOS:
Un dato cualquiera o una matriz puede ingresarse mediante el teclado a pedido de algún
programa, los llamados archivos ****.m, mediante el comando: input
Hay dos tipos de objetos que ingresan por teclado, numéricos (Matriz) o como una
cadena de letras y/o símbolos (String).
Los formatos son:
x=input('comentario: ')
x=input('comentario: \n')
o tambien:
x=input('ingrese su nombre: ','s')
x=input('ingrese su nombre: \n ','s')
En el primer caso aparecerá el comentario en la pantalla, y la matriz ingresada se
asignara a la variable x.
En el segundo la diferencia está en que el cursor para ingresar la información pasa a la
siguiente línea.
04 archivos .m
42
04. Archivos m.
Lic. Amado Malca Villalobos
En el tercer caso aparecerá el comentario en la pantalla, y se asignara a la variable x. La
diferencia está en que en el tercer caso la variable no solo puede ser una matriz sino
también una cadena de caracteres cualesquiera.
En el cuarto caso, al igual que el segundo, el cursor para ingresar la información pasa a
la siguiente línea.
Ahora veamos algunos ejemplos:
>> A=input('ingrese su edad: ');
ingrese su edad: 46
A = 46
>> A=input('ingrese su edad: ');
ingrese su edad: 25
>> A=input('haga su pregunta: ','s');
haga su pregunta: que es la matemática
A = que es la matemática
>> A=input('ingrese su edad:\n');
ingrese su edad:
45
>> A=input('Estado civil:\n','s');
Estado civil:
Soltero
COMANDOS DE SALIDA DE DATOS
La salida en pantalla de los resultados de un programa se hace de diferentes maneras.
Algunos se realizan por defecto como el resultado de alguna operación. Otra opción es
con los comandos:
fprintf
disp
Comando disp
El formato de disp es:
disp(‘comentario’)
disp(variable)
en el primer caso la salida es algún comentario, en el segundo se imprime en pantalla
una variable.
Ejemplo:
>> disp('Hola a todos')
Hola a todos
>> A=[1 7 -2;4 -5 6;8 5 -9]
A=
1 7 -2
4 -5 6
8 5 -9
>> disp(A)
1 7 -2
4 -5 6
8 5 -9
>> disp('La matriz buscada es:')
04 archivos .m
43
04. Archivos m.
Lic. Amado Malca Villalobos
La matriz buscada es:
>> disp(A)
1 7 -2
4 -5 6
8 5 -9
>> B=[1 7 -2]
B = 1 7 -2
>> disp(['la matriz buscada es:',num2str(B)])
la matriz buscada es:1 7 -2
>>
Ejemplo:
>> x=[1:10]';
>> P=[x x.^2 x.^3];
>> disp('
numero cuadrado
numero cuadrado cubo
1
1
1
2
4
8
3
9
27
4
16
64
5
25
125
6
36
216
7
49
343
8
64
512
9
81
729
10
100
1000
>>
cubo'),disp(P)
Ejemplo
>> disp(['La ','matemática ','es ','la ','madre ','de ','todas ','las ','ciencias'])
La matemática es la madre de todas las ciencias
>> disp(['La','matematica','es','la','madre','de','todas','las','ciencias'])
Lamatematicaeslamadredetodaslasciencias
>> disp(['La ','matemática ','es ','la ','madre ','de ','todas ','las ','ciencias'])
La matemática es la madre de todas las ciencias
>> disp(['Aritmetica';'Algebra';'Geometria';'Analisis';'Discreta'])
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
>> disp(['Aritmetica';'Algebra ';'Geometria ';'Analisis ';'Discreta '])
Aritmetica
Algebra
Geometria
Analisis
Discreta
>>
En la última línea de los comandos las palabras debían tener la misma longitud, de 10
letras, incluyendo espacios.
04 archivos .m
44
04. Archivos m.
Lic. Amado Malca Villalobos
Ejemplo: En este programa hallaremos el promedio de los primeros 20 enteros
positivos múltiplos de 5.
Solución:
Prommult5.m
% en el ejemplo se crea un vector
% con los 20 primeros múltiplos de 5
% y luego se halla el promedio de ellos
r=[1:20];
z=5*r;
disp('Los veinte múltiplos de 5, son:')
disp(z)
disp(' ')
disp('el valor promedio es')
prom=sum(z)/norm(z);
disp(prom)
Ejecución en MatLab:
>> prommult5
Los veinte múltiplos de 5, son:
Columns 1 through 12
5 10 15 20 25 30 35 40 45 50 55 60
Columns 13 through 20
65 70 75 80 85 90 95 100
el valor promedio es
3.9199
>>
Ejemplo: Mostrar una tabla con los n primeros enteros positivos, sus cuadrados y sus
cubos.
Solución:
Ejemplo4_2.m
% Este programa crea una tabla de los
primeros n números enteros positivos
% sus cuadrados y sus cubos
n=[1:5]';
cuadrado=n.^2;
cubo=n.^3;
disp('
n
n^2
n^3')
tabla=[n,cuadrado,cubo];
disp(tabla)
Ejecución en MatLab:
>> ejemplo4_2
n n^2 n^3
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
04 archivos .m
45
04. Archivos m.
Lic. Amado Malca Villalobos
El comando fprintf
Este comando visualiza salidas de programas en la pantalla, a diferencia del disp., aquí
se puede dar algún formato a la presentación de los datos.
Visualizando mensajes de texto:
fprintf(‘Mensaje en forma de cadena’)
ejemplo02.m
%ahora tenemos un programa que
obtiene cuadrados y cubos
n=[1:5]';
cuadrado=n.^2;
cubo=n.^3;
disp('
n
n^2
n^3')
tabla=[n,cuadrado,cubo];
disp(tabla)
fprintf('ahi tenemos la relación de
cuadrado y cubos')
Ahora viene la ejecución, en la ventana de comandos
de Matlab:
>> prog01
n
n^2
n^3
1 1 1
2 4 8
3 9 27
ahi tenemos la relación de cuadrado y cubos >>
Caracteres especiales usados
Símbolo Descripción
\n
Carácter de escape, se empieza una nueva línea.
\b
Carácter de borrado
\t
Tabulación horizontal
Ahí va un ejemplo de uso de estos caracteres especiales,
escribiremos:
Las matrices, son el objeto fundamental del MatLab
>> fprintf('Las matrices,\n son el objeto fund\bamen\btal
del Mat\t\tlab\n');
Las matrices,
son el objeto funametal del Mat
lab
>>
04 archivos .m
46
04. Archivos m.
Lic. Amado Malca Villalobos
El comando fprintf para la visualización de datos y texto juntos
fprintf(‘Texto %-5.2f texto adicional’, nombre_variable)
Los elementos del formato para los datos, son cuatro algunos opcionales otros
obligatorios:
-5.2f
El primero llamado flag o bandera (opcional)
Símbolo Descripción
Justificación izquierda dentro del campo
Visualiza el carácter del signo (+ ó -) delante del
+
numero
Añade ceros si el numero es más pequeño que
0
el campo
Lo segundo es el ancho del campo, que corresponde al primer número (5 en el
ejemplo),el cual nos indica el menor número de dígitos de la visualización. (Opcional)
El tercero es corresponde a la precisión, lo cual indica el numero de dígitos que se
mostraran a la derecha del punto decimal. (Opcional)
El cuarto elemento es el que corresponde al formato de conversión (f en el ejemplo).
Es obligatorio, las opciones son:
Símbolo Descripción
e
Notación exponencial en minúsculas (ej:
2.456e+002)
Notación exponencial en mayúsculas (ej:
E
2.456E+002)
f
Notación de punto fijo (ej: 245.6)
g
Representación en formato corto de e o f
Representación en formato corto de E o f
G
i
Entero
Ejemplo:
ej03.m
% tenemos un conjunto de doce datos de lluvia en miles de litros,
en forma
% mensual. En la amazonia peruana
%p representa el valor promedio de las lluvias
D=[286 253 254 305 274 203 165 190 161 228 224
280]
P=mean(D)
fprintf('\nEl valor medio de las lluvias es %6.2e mensual.\n',P)
fprintf('\nEl valor medio de las lluvias es %-16.2f mensual.\n',P)
fprintf('\nEl valor medio de las lluvias es %08i mensual.\n',P)
fprintf('\nEl valor medio de las lluvias es %6g mensual.\n',P)
La ejecución en MatLab
>> ej03
D = 286 253 254 305 274 203 165 190 161 228 224
04 archivos .m
47
04. Archivos m.
Lic. Amado Malca Villalobos
280
P = 235.2500
El valor medio de las lluvias es 2.35e+002 mensual.
El valor medio de las lluvias es 235.25
mensual.
El valor medio de las lluvias es 2.352500e+002 mensual.
El valor medio de las lluvias es 235.25 mensual.
>>
Aquí va un ejemplo en el cual hay insertados varios valores numéricos, dentro del
texto.
ej04.m
% tenemos un conjunto de doce datos de lluvia en miles de litros,
en forma
% mensual. En la amazonia peruana
%p representa el valor promedio de las lluvias
D=[286 253 254 305 274 203 165 190 161 228 224
280]
m=min(D);
M=max(D);
S=sum(D);
P=mean(D);
fprintf('\nEl valor medio de las lluvias es %6.2e mensual.\n',P)
fprintf('\nEl valor mínimo es %4i , el máximo es %4i y el total de
lluvias es %6i.\n',m,M,S)
La ejecución en Matlab
>> ej04
D = 286 253 254 305 274 203 165 190 161 228 224
280
El valor medio de las lluvias es 2.35e+002 mensual.
El valor mínimo es 161 , el máximo es 305 y el total de lluvias es
2823.
>>
Presentación de arrays (Matrices)
ej05.m
%ahora presentaremos una matriz
%donde
%fila uno: números naturales
%fila dos: el cuadrado
%fila tres: la raíz cuadrada
x=[1:8];
y=x.^2;
z=sqrt(x);
w=[x;y;z]
fprintf('el numero %i su cuadrado %i su raíz %f\n',w)
La ejecución en MatLab
04 archivos .m
48
04. Archivos m.
>> ej5
w=
1.0000
8.0000
1.0000
64.0000
1.0000
2.8284
el numero
el numero
el numero
el numero
el numero
el numero
el numero
el numero
>>
Lic. Amado Malca Villalobos
2.0000 3.0000 4.0000 5.0000 6.0000 7.0000
4.0000 9.0000 16.0000 25.0000 36.0000 49.0000
1.4142 1.7321 2.0000 2.2361 2.4495 2.6458
1
2
3
4
5
6
7
8
su cuadrado
su cuadrado
su cuadrado
su cuadrado
su cuadrado
su cuadrado
su cuadrado
su cuadrado
1 su raíz 1.000000
4 su raíz 1.414214
9 su raíz 1.732051
16 su raíz 2.000000
25 su raíz 2.236068
36 su raíz 2.449490
49 su raíz 2.645751
64 su raíz 2.828427
Ejemplo adicional
ej06.m
% archivo ejecutable de nombre: ejem06.m
% uso de los comandos de entrada por teclado, y salida por
pantalla.
nombre=input('cual es tu nombre: ','s');
apellidos=input('tus apellidos son:\n','s');
n=input('de que orden son las matrices cuadradas A y B:\n');
A=input('ingrese la matriz A :\n')
B=input('ingrese la matriz B :\n')
disp('la suma A+B, la resta A-B es :')
disp(A+B),disp(A-B)
disp('El producto A*B, la division A/B es :')
disp(A*B),disp(A/B)
temp=[25.6 33.7 34.1 35.6 36.8]
fprintf('la temperatura en la mañana es %e grados F \n',temp)
fprintf('la temperatura en la mañana es %f grados F \n',temp)
fprintf('la temperatura en la mañana es %g grados F \n',temp)
fprintf('la temperatura en la mañana es \n %g grados F \n',temp)
w=[1:10;sqrt(1:10)]
fprintf('Un entero es %g
y su raíz cuadrada es %g \n',w)
z=[1:10;sqrt(1:10);(1:10).^2;(1:10).^3]
fprintf(' n=%g
sqrt(n)=%g n^2=%g
n^3=%g \n',z)
z=[1000555:1000560;sqrt(1000555:1000560)]
fprintf('n=%2.3g
sqrt(n)=%1.10g\n',z)
04 archivos .m
49
04. Archivos m.
fprintf('n=%2.6g
fprintf('n=%2.6g
Lic. Amado Malca Villalobos
sqrt(n)=%1.10g\n',z)
sqrt(n)=%4.10g\n',z)
La ejecución en Matlab
>> malca
cual es tu nombre: amado
tus apellidos son: malca villalobos
de que orden son las matrices cuadradas A y B: 4
ingrese la matriz A : [1 2 3 4;3 5 1 7;6 1 3 5;7 0 5 1]
A=
1 2 3 4
3 5 1 7
6 1 3 5
7 0 5 1
ingrese la matriz B : [9 2 3 4;3 5 8 7;1 1 3 5;7 0 5 0]
B=
9 2 3 4
3 5 8 7
1 1 3 5
7 0 5 0
la suma A+B, la resta A-B es :
10 4 6 8
6 10 9 14
7 2 6 10
14 0 10 1
-8 0 0 0
0 0 -7 0
5 0 0 0
0 0 0 1
El producto A*B, la division A/B es :
46 15 48 33
92 32 87 52
95 20 60 46
75 19 41 53
0.0698 0.3101 0.3101 -0.1240
1.1395 0.6202 -0.3798 -1.2481
0.5814 -0.1938 0.8062 0.0775
0.0504 -0.0724 0.2610 0.9289
temp = 25.6000 33.7000 34.1000 35.6000 36.8000
la temperatura en la mañana es 2.560000e+001 grados F
la temperatura en la mañana es 3.370000e+001 grados F
la temperatura en la mañana es 3.410000e+001 grados F
la temperatura en la mañana es 3.560000e+001 grados F
la temperatura en la mañana es 3.680000e+001 grados F
la temperatura en la mañana es 25.600000 grados F
la temperatura en la mañana es 33.700000 grados F
04 archivos .m
50
04. Archivos m.
Lic. Amado Malca Villalobos
la temperatura en la mañana es 34.100000 grados F
la temperatura en la mañana es 35.600000 grados F
la temperatura en la mañana es 36.800000 grados F
la temperatura en la mañana es 25.6 grados F
la temperatura en la mañana es 33.7 grados F
la temperatura en la mañana es 34.1 grados F
la temperatura en la mañana es 35.6 grados F
la temperatura en la mañana es 36.8 grados F
la temperatura en la mañana es
25.6 grados F
la temperatura en la mañana es
33.7 grados F
la temperatura en la mañana es
34.1 grados F
la temperatura en la mañana es
35.6 grados F
la temperatura en la mañana es
36.8 grados F
w=
Columns 1
1.0000 2.0000 3.0000 4.0000
8.0000 9.0000 10.0000
through 10
5.0000 6.0000 7.0000
1.0000 1.4142 1.7321
2.8284 3.0000 3.1623
2.2361
Un entero es
Un entero es
Un entero es
Un entero es
Un entero es
Un entero es
Un entero es
Un entero es
Un entero es
Un entero es
1
2
3
4
5
6
7
8
9
10
2.0000
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
y su raíz cuadrada es
2.4495
2.6458
1
1.41421
1.73205
2
2.23607
2.44949
2.64575
2.82843
3
3.16228
z = 1.0e+003 *
0.0010 0.0020 0.0030 0.0040 0.0050 0.0060 0.0070
0.0080 0.0090 0.0100
0.0010 0.0014 0.0017 0.0020 0.0022 0.0024 0.0026
0.0028 0.0030 0.0032
0.0010 0.0040 0.0090 0.0160 0.0250 0.0360 0.0490
0.0640 0.0810 0.1000
0.0010 0.0080 0.0270 0.0640 0.1250 0.2160 0.3430
0.5120 0.7290 1.0000
n=1 sqrt(n)=1
n=2 sqrt(n)=1.41421
n^2=1
n^2=4
n^3=1
n^3=8
04 archivos .m
51
04. Archivos m.
n=3
n=4
n=5
n=6
n=7
n=8
n=9
n=10
sqrt(n)=1.73205
sqrt(n)=2
sqrt(n)=2.23607
sqrt(n)=2.44949
sqrt(n)=2.64575
sqrt(n)=2.82843
sqrt(n)=3
sqrt(n)=3.16228
Lic. Amado Malca Villalobos
n^2=9
n^2=16
n^2=25
n^2=36
n^2=49
n^2=64
n^2=81
n^2=100
n^3=27
n^3=64
n^3=125
n^3=216
n^3=343
n^3=512
n^3=729
n^3=1000
z = 1.0e+006 *
1.0006
0.0010
1.0006
0.0010
1.0006
0.0010
1.0006
0.0010
1.0006
0.0010
1.0006
0.0010
n=1e+006
sqrt(n)=1000.277462
n=1e+006
sqrt(n)=1000.277961
n=1e+006
sqrt(n)=1000.278461
n=1e+006
sqrt(n)=1000.278961
n=1e+006
sqrt(n)=1000.279461
n=1e+006
sqrt(n)=1000.279961
n=1.00056e+006
sqrt(n)=1000.277462
n=1.00056e+006
sqrt(n)=1000.277961
n=1.00056e+006
sqrt(n)=1000.278461
n=1.00056e+006
sqrt(n)=1000.278961
n=1.00056e+006
sqrt(n)=1000.279461
n=1.00056e+006
sqrt(n)=1000.279961
n=1.00056e+006
sqrt(n)=1000.277462
n=1.00056e+006
sqrt(n)=1000.277961
n=1.00056e+006
sqrt(n)=1000.278461
n=1.00056e+006
sqrt(n)=1000.278961
n=1.00056e+006
sqrt(n)=1000.279461
n=1.00056e+006
sqrt(n)=1000.279961
>>
IMPORTACION Y EXPORTACION DE DATOS
Procesando datos de fuentes externas (Importación)
Escribiendo datos en un manejador de datos (Exportación)
DE EXCEL A MATLAB (xlsread)
Importando datos desde Excel a Matlab.
04 archivos .m
52
04. Archivos m.
Lic. Amado Malca Villalobos
Para esto contamos con un comando llamado xlsread y su sintaxis es:
xlsread (' NombreArchivo ')
[num, text ]
xlsread ( NombreArchivo, Hoja, Rango)
donde:
num: Es una matriz de tipo numérico en el cual serán guardados todos los datos
numéricos encontrados dentro de la hoja y rango especificado.
text: Matriz de tipo celda donde se guardaran todos las cadenas que sean encontradas
dentro de la hoja y rango especificado. Cada cadena se guarda en una celda dentro de
la matriz.
NombreArchivo: El nombre o ruta del archivo a leer. Este parámetro debe ser una
cadena.
Ejemplo: Ahora se leerá un archivo en Excel, llamado datos.xlsx
Aquí vemos una hoja de datos en formato Excel
datos1.xlsx
Leyendo ahora con el comando xlsread
>> [A,B]=xlsread('datos.xlsx')
A=
1 2 3 4 5 6 7
180 156 147 206 210 235 222
NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
B=
'Mes'
'LLuvia'
04 archivos .m
53
04. Archivos m.
Lic. Amado Malca Villalobos
''
''
'numero'
'cuadrado'
'cubo'
>>
Leyendo por separado la información
>> [A,B]=xlsread('datos.xlsx','hoja2','c2:j3')
A=
1 2 3 4 5 6 7
180 156 147 206 210 235 222
B=
'Mes'
'LLuvia'
>>
>> [C,D]=xlsread('datos.xlsx','hoja2','c6:j8')
C=
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
D=
'numero'
'cuadrado'
'cubo'
>>
>> xlsread('datos.xlsx','hoja2','c6:j8')
ans =
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
>>
DE MATLAB A EXCEL (xlswrite)
Esta vez veremos cómo exportar datos desde MatLab a una hoja de datos de Excel.
Lo primero que debemos conocer es la función y la sintaxis necesaria para realizar esta
operación; Esta se llama xlswrite y su sintaxis es la siguiente:
xlswrite( NombreArchivo, Datos)
04 archivos .m
54
04. Archivos m.
[estado]
Lic. Amado Malca Villalobos
xlswrite( NombreArchivo, Datos, Hoja, CeldaInicial )
Donde:
Estado= regresa 1 cuando la operación de escritura ha sido un éxito, 0 en caso
contrario.
NombreArchivo: El nombre o ruta del archivo al que se escribirá, si no se escribe la
ruta completa, tomara por deafult que el archivo se encuentra en el current directory,
si el archivo no existe lo creará. Este parámetro debe ser una cadena.
Datos: Son los datos que se escribirán en el archivo, pueden ser numéricos o
caracteres.
Hoja: Es la hoja en la que se escribirá, por default Hoja1, este parámetro debe ser una
cadena.
CeldaInicial: A partir de esta se empezara la escritura de los datos, este parámetro
debe ser una cadena.
Ejemplo: Ahora se creara una matriz A, y luego se grabara en un archivo de Excel
Creando la matriz y escribiendo en la hoja de calculo
>> A=[1 7 -2;4 -5 6;8 5 -9]
A=
1 7 -2
4 -5 6
8 5 -9
>> xlswrite('arch_datos.xlsx',A)
Archivo en la PC, en la carpeta de trabajo de MatLab
Archivo de excel
04 archivos .m
55
04. Archivos m.
Lic. Amado Malca Villalobos
Ejemplo: Ahora la matriz A se grabara en un archivo llamado “arch_datos2.xlsx”, en la
hoja llamada “matriz” en los rangos especificados
Creando la matriz y escribiendo en la hoja de calculo
>> A=[1 7 -2;4 -5 6;8 5 -9]
A=
1 7 -2
4 -5 6
8 5 -9
>> [estado]=xlswrite('arch_datos2.xlsx',A,'matriz','C1:E3')
Warning: Added specified worksheet.
> In xlswrite>activate_sheet at 294
In xlswrite>ExecuteWrite at 249
In xlswrite at 207
estado = 1
>> [estado]=xlswrite('arch_datos2.xlsx',A,'matriz','A5:C7')
estado = 1
Archivo en la PC, en la carpeta de trabajo de MatLab
Archivo de excel
04 archivos .m
56
04. Archivos m.
Lic. Amado Malca Villalobos
EJEMPLOS ADICIONALES
El area de un triangulo
area.m
function [A] = area(a,b,c)
% Calcula el area de un triangulo
cualquiera
% se tienen las longitudes de los lados
a, b y c
% Ingreso: a,b,c: Longitudes de los
lados
% Salida: A: area del triangulo
%
p = (a+b+c)/2;
A = sqrt(p*(p-a)*(p-b)*(p-c));
La ejecución en Matlab
>> help area
Calcula el area de un triangulo cualquiera
se tienen las longitudes de los lados a, b y c
Ingreso: a,b,c: Longitudes de los lados
Salida: A: area del triangulo
>> area(5,7,12)
ans = 0
>> area(3,4,5)
ans = 6
>> area(3,4,50)
ans =
0 +6.1872e+002i
>> area(13,45,50)
ans = 282.3190
>>
Los términos de la sucesión de Fibonacci
Fibo1.m
function f = Fib1(n)
% Retorna el n-esimo numero
% de la Sucesion de Fibonacci.
% 1, 1, 2, 3, 5, 8, . . .
% F(1)=1, F(2)=1,
% F(n+2)=F(n+1)+F(n), si n entero
positivo
F=zeros(1,n);
F(1)=1;
F(2) = 1;
for i = 3:n
F(i) = F(i-1) + F(i-2);
end
f = F(n);
La ejecución en Matlab
04 archivos .m
57
04. Archivos m.
Lic. Amado Malca Villalobos
>> help Fib1
Retorna el n-esimo numero
de la Sucesion de Fibonacci.
1, 1, 2, 3, 5, 8, . . .
F(1)=1, F(2)=1,
F(n+2)=F(n+1)+F(n), si n entero positivo
>> Fib1(1)
ans = 1
>> Fib1(11)
ans = 89
>> Fib1(-11)
??? Attempted to access F(-11); index must be a positive
integer or logical.
Error in ==> Fib1 at 14
f = F(n);
>> Fib1(16)
ans = 987
>>
Los términos de la sucesión de Fibonacci
Fibo2.m
function f = Fib2(n)
% Retorna el n-esimo termino
% de la sucesion de Fibonacci.
if n==1
f = 1;
elseif n==2
f = 1;
else
f1 = 1; f2 = 1;
for i = 2:n-1
f = f1 + f2;
f1=f2; f2 = f;
end
end
La ejecución en Matlab
>> Fib2(4)
ans = 3
>> Fib2(40)
ans = 102334155
>>
Los términos de la sucesión de Fibonacci con matrices
Fibo3.m
function f = Fib3(n)
% Retorna los terminos de la
04 archivos .m
58
04. Archivos m.
Lic. Amado Malca Villalobos
% Sucesion de Fibonacci
% Usando matrices
A = [0 1;1 1];
y = A^n*[0;1];
f=y(1);
La ejecución en Matlab
>> Fib3(6)
ans = 8
>> Fib3(16)
ans = 987
>>
Promedio de un arreglo de numeros
promedio.m
function p = promedio(x)
% Calcula el promedio de
de un vector x
% y dibuja dicho vector,
% Sintaxis : promedio(x)
vector a promediar
n=length(x);
p=0;
for i=1:n
p=p+x(i);
end
p=p/n;
plot(x);
La ejecución en Matlab
>> x=[3 4 8 2 7 10 18 45 78 3 2 9]
x = 3 4 8 2 7 10 18
>> promedio(x)
ans = 15.7500
>>
La grafica de los valores de x
los elementos
ploteando
donde x es el
45
78
3
2
9
80
70
60
50
40
30
20
10
0
0
2
4
6
8
10
04 archivos .m
12
59
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
05 GRÁFICOS CON MATLAB
Como la mayor parte de las ecuaciones matemáticas expresa relaciones entre una, dos, tres o más
variables, tratar de entender las relaciones existentes entre ellas es algo un poco menos que
imposible. Por ello el empleo de gráficas es importante en este tipo de casos.
Así desde la educación primaria hasta la superior en el área de matemática, ingeniera, biología,
humanidades o ciencias económicas, se hace necesario la inclusión de relaciones graficas entre las
variables. De este modo se convierten en algo necesario, y para ello tenemos el entorno de
computación con MATLAB, en donde la relación grafica de los resultados efectuarse con algunos
comandos.
Asi veremos que entender las ecuaciones matemáticas con graficas es una forma agradable y
eficiente de aprender matemáticas. Por lo que el objetivo de esta unidad es ayudar a los estudiantes
a efectuar graficas, por ahora, en dos dimensiones de diversas funciones.
GRAFICAS EN DOS DIMENSIONES
Graficar: suponga que desea graficar una relación entre dos variables x e y, donde
y  f  x  , x   a, b , para ello se hace necesario conocer algunos pares de valores de estas
variables, siguiendo para ello un cierto protocolo:
i) Indicar un conjunto finito de puntos (pares ordenados): pi   xi , yi  ; i  1, n
Donde se tiene que: x1  x2  x3 
 xn1  xn
ii) Luego se traza (plotear) unas líneas entre los puntos consecutivos pi y pi 1 , esta poligonal
será un esbozo de la relación entre las variables x e y
Estas líneas se grafican con el comando plot.
Ejemplo 01: Consideraremos los puntos: (1,1), (2,4), (3,9), (4,16), (5,25), (6,36), (7,49). Que
representan la relación entre un entero y su cuadrado.
En la ventana de comandos de MatLab
>> x=1:12
x= 1 2 3 4 5 6 7 8
9 10 11 12
>> y=x.^2
y = 1 4 9 16 25 36 49
64 81 100 121 144
>> plot(x,y)
>>
Grafica de MatLab
150
100
50
0
0
2
05 gráficos 2D
4
6
60
8
10
12
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Ejemplo 02: En realidad el comando plot, tiene una versatilidad increíble, pues si ingresamos un
conjunto de puntos en un determinado orden, exactamente en ese orden plotea las líneas.
Así tenemos el conjunto de puntos: p1=(1,5), p2=(7,5), p3=(2,2), p4=(4,7), p5=(6,2), p6=(1,5),
forman curiosamente una estrella de cinco puntas.
En la ventana de comandos de MatLab
>> x=[1 7 2 4 6 1]
x= 1 7 2 4 6 1
>> y=[5 5 2 7 2 5]
y= 5 5 2 7 2 5
>> plot(x,y)
>> plot(x,y,'r:d')
>> plot(x,y,'k+--')
>>
Grafica de MatLab
En la ventana de comandos de MatLab
>> x=[1 7 2 4 6 1]
x= 1 7 2 4 6 1
>> y=[5 5 2 7 2 5]
y= 5 5 2 7 2 5
>> plot(x,y)
>> plot(x,y,'r:d')
>> plot(x,y,'k+--')
>>
Grafica de MatLab
En la ventana de comandos de MatLab
>> x=[1 7 2 4 6 1]
x= 1 7 2 4 6 1
>> y=[5 5 2 7 2 5]
y= 5 5 2 7 2 5
>> plot(x,y)
>> plot(x,y,'r:d')
>> plot(x,y,'k+--')
>>
Grafica de MatLab
7
6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
1
2
3
4
5
6
7
7
6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
1
2
3
4
5
4
5
6
7
7
6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
1
2
3
6
7
Sean los siguientes datos tomados en un día de la temperatura ambiente. En la estación
meteorológica de la FACFYM-UNPRG.
Nº
01 02 03 04 05 06 07 08 09 10 11 12
Orden
Xx
02 04 06 08 10 12 14 16 18 20 22 24
(horas)
Yy(
22.
21
27 28 30 32 31 30 27 26 24 20
ºC)
4
05 gráficos 2D
61
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Trabajando en la ventana de comandos de Matlab, tenemos:
En la ventana de comandos de MatLab Grafica de MatLab
>> x=[2 4 6 8 10 12 14 16 18 20 22 24];
>> y=[21 22.4 27 28 30 32 31 30 27 26 24 20];
>> plot(x,y)
32
30
28
26
24
22
20
0
5
10
15
20
25
Ahora también se le puede agregar una malla al grafico con grid.
En la ventana de comandos de MatLab Grafica de MatLab
>> x=[2 4 6 8 10 12 14 16 18 20 22 24];
>> y=[21 22.4 27 28 30 32 31 30 27 26 24 20];
>> plot(x,y)
>> grid
32
30
28
26
24
22
20
0
5
10
15
20
25
Ahora agregaremos rótulos en las graficas de la siguiente forma:
Para el rotulo del cuadro
title(' titulo ')
El comando: title.
Para el rotulo del eje de las abscisas
xlabel(' titulo ')
El comando: xlabel
Para el rotulo del eje de las ordenadas
ylabel(' titulo ')
El comando: ylabel
>> x=[2 4 6 8 10 12 14 16 18 20 22 24];
>> y=[21 22.4 27 28 30 32 31 30 27 26 24 20];
>> plot(x,y)
>> grid
>> title('Registro diario de la temperatura en la
estación meteorológica de la FACFYM-
UNPRG')
>> xlabel('horas')
>> ylabel('temperatura')
Grafica de MatLab
Registro diario de la temperatura en la estación meteorológica de la FACFYM-UNPRG
32
30
28
temperatura
En la ventana de comandos de MatLab
26
24
22
20
0
5
10
15
horas
05 gráficos 2D
62
20
25
05 GRAFICOS EN 2D
y  f  x   e0.4x sen  x  en el intervalo [0,10].
En la ventana de comandos de
MatLab
>> x=0:0.05:10;
>> y=sin(x).*exp(-0.4*x);
>> plot(x,y)
>> grid
>> title('grafico de ejemplo')
>> xlabel('eje x')
>> ylabel('eje y')
Grafica de MatLab
Tobogan
0.6
0.5
0.4
0.3
eje y
Ejemplo 01: Para graficar
Lic. Amado Malca Villalobos
0.2
0.1
0
-0.1
-0.2
0
2
4
6
8
10
eje x
Respecto de la función plot, las diferentes formas de escribirla, son:
plot  x, y 
plot  x1, y1, x2, y 2, x3, y3,

plot  x, y, s 
plot  x1, y1, s1, x2, y 2, s 2, x3, y3, s3,

plot  x, y,' abc '
donde: s, s1, s2, s3, … . Toman dos valores que van entre comillas: ‘ab’
a: indica el color de la línea ( por defecto azul).
b: indica la forma de la línea ( por defecto son líneas rectas que unen dos puntos de la grafica).
El formato general de este comando es:
plot(x,y,’especificadores de línea’,’propiedades’,’valores’)
Los especificadores de línea: definen el color, estilo de línea y el tipo de marcador (opcional).
COLOR DE LINEA
ESTILO DE LINEA
Rojo
r
Solida (por defecto) __
Verde
g
Discontinua
-Azul
b
Punteada
:
Cian
c
Rayas y puntos
-.
Magenta
m
Amarillo
y
Negro
k
Blanco
w
TIPO DE MARCADOR
Signo mas
+
Círculo
asterisco
*
punto
cuadrado
s
diamante
Estrella de cinco
p
Estrella de seis
puntas
puntas
o
.
d
h
Ejemplos de plot
05 gráficos 2D
63
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
plot ( x, y)
plot ( x, y, ' r ')
plot ( x, y,'  y ')
plot ( x, y,' *')
plot ( x, y,' g : d ')
Propiedades y valores
Forman parte de la sintaxis de plot y son opcionales, se usan para modificar el:
- Grueso de la línea
- El tamaño de los marcadores
- Los colores de relleno
- Los colores del borde del marcador
Mas sobre los especificadores de línea y propiedades
Estos también pueden ser asignados usando propiedades
Especificad
Propiedad
Posible valor d la propiedad
or
Especificador de estilo de
Estilo de
LineStyle o
línea, de la tabla anterior, en
línea
linestyle
forma de cadena
Especificador de color, de
Color de
Color o color
la tabla anterior, en forma
línea
de cadena
Especificador de marcador,
Marker o
Marcador
de la tabla anterior, en
marker
forma de cadena
Propiedades y valores de las líneas
Propiedad
Descripcion
Posible valor de la
propiedad
LineWidth o
Indica el grosor de la
Un numero
linewidth
línea
representado en
unidades de puntos (por
defecto 0,5)
MarkerSize o
Especifica el tamaño de
Un numero
markersize
las marcas
representado en
unidades de puntos
MarkerEdgeColor Especifica el color del
Especificadores de
o markeredgecolor marcador, o el color del
color, introducidos en
borde de la línea para
forma de cadena
marcadores con relleno
MarkerFaceColor Especifica el color del
Especificadores de
o markerfacecolor relleno de los marcadores color, introducidos en
forma de cadena
05 gráficos 2D
64
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Ejemplo: Usando la mayoría de opciones en el comando plot, crearemos un grafico el cual tiene las
siguientes características:
Una línea solida de color magenta une puntos que se representan mediante marcadores en forma de
círculo.
El grosor de línea es de dos puntos.
El tamaño de los círculos utilizados como marcadores es de 12 puntos.
Además los marcadores (círculos) tienen bordes de color verde.
Los los marcadores con relleno amarillo.
En la ventana de comandos de MatLab
>> x=[1:0.4:5];
>> y=x.^3-9*x.^2+26*x-24;
>> plot(x,y,'mo','linewidth',2,'markersize',12,'markeredgecolor','g','markerfacecolor','y')
>>
Grafica de MatLab
6
4
2
0
-2
-4
-6
1
1.5
2
2.5
3
3.5
4
4.5
Ejemplo : Veamos algunos ejemplos adicionales sobre estas opciones.
05 gráficos 2D
65
5
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
En la ventana de comandos de MatLab
>> x=1:0.8:10;y=1./(x.^2+1);
>> plot(x,y)
>> plot(x,y,'LineWidth',4)
>> plot(x,y,'-r*','LineWidth',2)
>> plot(x,y,'-rs','LineWidth',3,'markersize',10,'markeredgecolor','k','markerfacecolor','g')
>> plot(x,y,'-ro','LineWidth',2,'markersize',10,'markeredgecolor','k','markerfacecolor','g')
>> plot(x,y,':md','LineWidth',2,'markersize',10,'markeredgecolor','b','markerfacecolor','r')
>>
Grafica de MatLab
0.5
0.5
0.45
0.45
0.4
0.4
0.35
0.35
0.3
0.3
0.25
0.25
0.2
0.2
0.15
0.15
0.1
0.1
0.05
0.05
0
1
2
3
4
5
6
7
8
9
10
0.5
0
1
3
4
5
2
3
4
5
6
7
8
9
10
0.5
0.45
0.45
0.4
0.4
0.35
0.35
0.3
0.3
0.25
0.25
0.2
0.2
0.15
0.15
0.1
0.1
0.05
0.05
0
2
1
2
3
4
5
6
7
8
9
0
10
1
6
7
8
9
10
0.5
0.5
0.45
0.45
0.4
0.4
0.35
0.35
0.3
0.3
0.25
0.25
0.2
0.2
0.15
0.15
0.1
0.1
0.05
0.05
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
USO DE LINSPACE PARA GEBNERAR INTERVALOS EQUIESPACIADOS
05 gráficos 2D
66
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Es muy común en matemática usar intervalos, divididos en partes iguales. De donde si queremos
dividir el intervalo  2,8 , en 10 partes iguales, tenemos que cada parte será de longitud 0,6. Lo
cual genera usa sucesión de 11 términos: 2, 2.6, 3.2, 3.8, 4.4, 5, 5.6, 6.2, 6.8, 7.4, 8.
Así tenemos que en un intervalo [a,b], el cual se divide en n  1 
ba
partes iguales. Esta matriz
h
de n puntos x se obtiene de la forma siguiente:
x  linspace(a, b, n)
También con:
x  a :h:b
Ejemplo: Dividiendo el intervalo [2, 5], en 10 partes iguales origina una sucesión de 11 terminos.
Lo cual equivale a un incremento de 0.3.
>> x=linspace(2,5,11)
x = 2.0000 2.3000 2.6000 2.9000 3.2000 3.5000
5.0000
>> y=2:0.3:5
y = 2.0000 2.3000 2.6000 2.9000 3.2000 3.5000
5.0000
3.8000
4.1000
4.4000
4.7000
3.8000
4.1000
4.4000
4.7000
Ejemplo: Graficando una función cubica, en el intervalo [-20, 20], creando una sucesión de
números con un incremento de uno.
Ademas en el grafico se reemplaza la línea por el símbolo “**”, y es de color verde.
En la ventana de comandos de MatLab
>> x=-20:1:20;
>> y=x.^3+6*x-7;
>> plot(x,y,'g*')
>> grid
>> title('grafico con linea verde, en vez de línea va **')
Grafica de MatLab
1
x 10
4
grafico con linea verde, en vez de línea va **
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-20
-15
-10
-5
0
5
05 gráficos 2D
10
15
67
20
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
LIMPIANDO LA VENTANA DE GRAFICOS
El comando clf limpia la ventana de graficos, para evitar algo que ya estuviere escrito.
>> clf
>>
GRAFICANDO VARIAS FUNCIONES A LA VEZ
Puede realizarse la grafica de varias funciones a la vez, en un solo grafico. Sobreponiendo las
graficas. Para esto tenemos tres opciones:
- Con el comando plot,
- Usando los comandos hold on y hold off.
- Usando el comando line.
Opción 01: Uso de plot
Graficando tres funciones: y  2 x  3 , z  x 2  6 , w  sin  x  , en el intervalo  2,4
En la ventana de comandos de MatLab
>> x=-2:0.1:4;
>> y=2*x-3;z=x.^2-6;w=sin(x);
>> plot(x,y,x,z,x,w)
>>
Grafica de MatLab
10
8
6
4
2
0
-2
-4
-6
-8
-2
-1
0
1
2
3
4
Variando el tipo de línea, para que haya una mejor diferenciación entre las graficas.
En la ventana de comandos de MatLab
>> x=-2:0.1:4;
>> y=2*x-3;z=x.^2-6;w=sin(x);
>> plot(x,y,':r',x,z,'--k',x,w,'-g')
>>
Grafica de MatLab
10
8
6
4
2
0
-2
-4
-6
-8
-2
-1
0
1
2
3
Ahora graficaremos una cubica, así como su derivada y la segunda derivada.
05 gráficos 2D
68
4
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
y  f  x   x  15x  66 x  80 , para 0  x  10
3
2
z  f '  x   3x 2  30 x  66
w  f ''  x   6 x  30
En la ventana de comandos de MatLab
>> x=0:0.1:10;
>> y=x.^3-15*x.^2+66*x-80;
>> dy=3*x.^2-30*x+66;
>> ddy=6*x-ç30;
>> plot(x,y,'-r',x,dy,':k',x,ddy,'--g')
>> grid
>>
Grafica de MatLab
80
60
40
20
0
-20
-40
-60
-80
8
6
4
2
0
10
Opción 02: Uso de hold on
Si se quiere graficar varias funciones en un mismo cuadro, se ejecuta la primera grafica con plot,
luego se ingresa el comando hold on, el cual deja abierto la pantalla de gráficos, a continuación
se agregan el resto de gráficos siempre con plot. Finalmente cuando ya no hay mas gráficos se
ingresa el comando hold off.
En la ventana de comandos de MatLab
>> x=0:0.1:10;y=x.^3-15*x.^2+66*x-80;dy=3*x.^2-30*x+66;ddy=6*x-30;
>> plot(x,y,'-r')
>> hold on
>> plot(x,dy,':k')
>> plot(x,ddy,'--g')
>> grid
>> hold on
>>
Grafica de MatLab, con los diferentes momentos en esta grafica.
80
80
60
60
40
40
20
20
0
0
-20
-20
-40
-40
-60
-60
-80
0
1
2
3
4
5
6
7
8
9
10
-80
0
80
80
60
60
40
40
20
20
0
0
-20
-20
-40
-40
-60
-60
-80
0
1
2
3
4
5
6
7
8
9
10
-80
0
1
1
2
3
2
3
4
4
05 gráficos 2D
5
5
6
6
69
7
7
8
8
9
9
10
10
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Ejemplo: Ahora se graficaran dos funciones en un solo grafico. El seno y el coseno en el intervalo
[0, 10], para lo cual se usara la opción “hold on”, que no cierra la ventana de gráficos y permite
sobrescribir un grafico.
En la ventana de comandos de
Grafica de MatLab
MatLab
Grafico de y=Seno(x) y z=Coseno(x) en [0,10]
1
0.8
0.6
z( --- )
0.4
y( ___ )
>> x=0:0.005:10;
>> y=sin(x).*exp(-0.4*x);
>> x=0:0.005:10;
>> y=sin(x);
>> plot(x,y)
>> hold on
>> z=cos(x);
>> plot(x,z,'--')
>> grid
>> xlabel('eje x')
>> ylabel('y( ___ ) z( --- )')
>> title('Grafico de y=Seno(x) y
z=Coseno(x) en [0,10]')
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
2
4
6
8
10
eje x
Opción 03: Uso de line
Ahora usaremos el comando line. Con este comando se puede añadir curvas (líneas) adicionales a
un grafico que ya existe, hecho obviamente con plot.
Sintaxis del comando:
line(x, y, propiedades, valores)
En la ventana de comandos de MatLab
>> x=0:0.1:10;
>> y=x.^3-15*x.^2+66*x-80;
>> dy=3*x.^2-30*x+66;
>> ddy=6*x-30;
>> plot(x,y)
>> line(x,dy)
>> line(x,ddy)
>> grid
>>
Grafica de MatLab
80
60
40
20
0
-20
-40
-60
-80
En la ventana de comandos de MatLab
>> x=0:0.5:10;
>> y=x.^3-15*x.^2+66*x-80;
>> dy=3*x.^2-30*x+66;
>> ddy=6*x-30;
>> plot(x,y)
>> line(x,dy,'linestyle',':','color','g','marker','o')
>> line(x,ddy,'linestyle','-','color','r','marker','*')
>> grid
>>
0
1
2
3
4
5
6
7
8
9
10
Grafica de MatLab
Ejemplo 10
80
60
40
20
0
-20
-40
-60
-80
0
05 gráficos 2D
1
2
3
70
4
5
6
7
8
9
10
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
FORMATO DE UNA REPRESENTACIÓN GRAFICA
Ahora agregaremos titulo, leyendas, nombres a los ejes, etc. Esto se puede hacer mediante
comandos o también usando el editor de gráficos de la ventana de gráficos. Pero todos ellos se
agregaran después de usar plot y/o fplot.
Comando
xlabel
ylabel
title
text
gtext
legend
Formato
xlabel(‘texto’)
ylabel(‘texto’)
title(‘texto’)
text(x,y,’texto’)
Explicación
Agrega una etiqueta al eje x (eje de abscisas)
Agrega una etiqueta al eje y (eje de ordenadas)
Agrega una titulo al grafico en la parte superior
Permite colocar una etiqueta en el punto (x,y)
Permite colocar una etiqueta en un lugar especificada
gtext(‘texto’)
por el usuario con el mouse.
legend(’cadena1’,’cadena2’,…..
Posibles valores de posición de
,’cadena-n’, posición de leyenda)
legenda: -1, 0, 1, 2, 3, 4.
Formateando el texto introducido anteriormente
Los modificadores son caracteres que se insertan dentro de la cadena.
Especificador
\bf
\it
\rm
\fontname{fuente}
\fontsize{tamaño}
Efecto sobre el texto
Negrita
Italica
Normal
Cambia la fuente
Cambia el tamaño de
letra
Subíndice
_6
_{texto}
Superíndice
^6
^{texto}
Ejemplo: En el siguiente caso se graficara una función cubica con su primera y segunda derivada,
además de algunos cambios en el tipo de letra. Ademas se ha agregado una leyenda para las
graficas.
En la ventana de comandos de MatLab
x=0:0.5:10;y=x.^3-15*x.^2+66*x-80;dy=3*x.^2-30*x+66;ddy=6*x-30;
plot(x,y)
line(x,dy,'linestyle',':','color','g','marker','o')
line(x,ddy,'linestyle','--','color','r','marker','*')
grid
xlabel('\bfEje de las equis'),ylabel('\itEje de las yes')
title('\fontsize{20}Chicle adams "3 en 1"')
text(0.5,-60,'\bf\fontsize{16}Funcion')
gtext('\bf\fontsize{16}Primera Derivada')
gtext('\bf\fontsize{16}Segunda Derivada')
legend('Funcion','Primera derivada','Segunda Derivada',0)
text(2,63,'\fontsize{16}f(x)=x.^3-15*x.^2+66*x-80')
text(2,45,'\fontsize{16}sub_{indice}')
text(6,45,'\fontsize{16}super^{indice}')
05 gráficos 2D
71
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Chicle adams "3 en 1"
Eje de las yes
80
60
f(x)=x.3-15*x.2+66*x-80
40
subindice
20
Primera Derivada
superindice
0
Segunda Derivada
-20
-40
-80
Funcion
Primera derivada
Segunda Derivada
Funcion
-60
0
1
2
3
4
5
6
Eje de las equis
7
8
9
10
Caracteres Griegos
Letra
Caráct
grieg
er
a
Caráct
er
Letra
griega
\Alpha
\Beta
\Gam
ma


\alpha
\beta
\gam
ma

\theta

\
\pi

\
\sigm
a

\


Caráct
er
Letra
grieg
a
Caráct
er
\Phi
\Delta
\Gam
ma
\Lamb
da
\Omeg
a
\Sigma
Letr
a
Grie
ga






El comando axis:
Al momento de ejecutar el comando plot o similares, la grafica se da en un rectángulo que tiene
por limites los valores máximos y mínimos de las variables x e y. Pero con el comando axis puede
modificarse esto en aras de una mayor conveniencia, según sea el caso.
Comando
Explicación
axis([xmin, xmax, ymin, ymax]) Modifica los limites de los ejes
axis equal
Establece la misma escala para los ejes
axis square
Establece la región de los ejes en un cuadrado
Establece la limites de los ejes en función del
axis tight
rango de los datos
05 gráficos 2D
72
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Ejemplo: Ahora veamos un ejemplo para explorar el comando axis, en sus diferentes opciones que
se pueden dar en ella.
En la ventana de comandos de MatLab
Grafica de MatLab
x=[-15:0.1:15];
x1=[-15:0.1:15];
y=sin(x);
x2=[-10:0.1:20];
plot(x,y)
y=sin(x1);
z=cos(x2);
plot(x1,y,x2,z)
axis([-10,15,-10,10])
grid on
1
10
0.8
8
0.6
6
0.4
4
0.2
2
0
0
-0.2
-2
-0.4
-4
-0.6
-6
-8
-0.8
-10
-1
-15
-10
-5
0
5
10
15
-10
En la ventana de comandos de MatLab
x1=[-15:0.1:15];
x2=[-10:0.1:20];
y=sin(x1);
z=cos(x2);
plot(x1,y,x2,z)
grid on
1
10
8
0.6
6
0.4
4
0.2
2
0
0
-0.2
-2
-0.4
-4
-0.6
-6
-1
-15
0
5
10
15
Grafica de MatLab
x1=[-15:0.1:15];
x2=[-10:0.1:20];
y=sin(x1);
z=cos(x2);
plot(x1,y,x2,z)
axis([-10,15,-10,10])
grid on
0.8
-0.8
-5
-8
-10
El comando
Comando
grid on
grid off
-5
0
5
10
15
20
-10
-10
-5
0
grid:
Explicación
Añade una cuadricula a la representación grafica
Elimina la cuadricula de la representación grafica
05 gráficos 2D
73
5
10
15
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Ejemplo: Graficando la Lemniscata de Bernoulli, cuya ecuación parametrica es:
a cos t
a sen t cos t
t
,
2
1 sen t
1 sen 2 t
En la ventana de comandos de MatLab
t=-10*pi:pi/100:10*pi;
x=(3*cos(t))./(1+(sin(t)).^2);
y=(3*sin(t).*cos(t))./(1+(sin(t)).^2);
x1=(2*cos(t))./(1+(sin(t)).^2);
y1=(2*sin(t).*cos(t))./(1+(sin(t)).^2);
x2=(cos(t))./(1+(sin(t)).^2);
y2=(sin(t).*cos(t))./(1+(sin(t)).^2);
plot(x,y)
line(x1,y1,'color','r')
line(x2,y2,'color','g')
grid
gtext('Sigue la linea')
text(2,0,'hola')
legend('radio 3','radio 2','radio 1',4)
1.5
1
Sigue la linea
0.5
0
hola
-0.5
-1
-1.5
-3
radio 3
radio 2
radio 1
-2
-1
0
05 gráficos 2D
1
2
74
3
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
GRAFICAS CON ASINTOTAS
Uno de los problemas que se tiene en las graficas es cuando aparecen las asintotas verticales, estas
rectas aparecen cuando hay un denominador que no puede ser cero en una expresión algebraica.
x3 2
Ejemplo: Por ejemplo si queremos graficar la función: y f x
,x
10,10
x
En la ventana de comandos de MatLab
Grafica de MatLab
>> x=-10:0.01:10;
250
>> y=(x.^3+2)./x;
200
Warning: Divide by zero.
150
>> plot(x,y)
100
>> grid
50
>>
0
-50
-100
-150
-200
-10
-5
0
5
10
Para que esta grafica se vea mucho mejor podemos acotar el eje y, dándole limites con la funcion
axis. Su formato:
axis ( [ xmin xmax ymin ymax ] )
En la ventana de comandos de MatLab
Grafica de MatLab
>> x=-10:0.01:10;
40
>> y=(x.^3+2)./x;
30
>> plot(x,y)
20
>> grid
10
>> axis([-10 10 -40 40])
>>
0
-10
-20
-30
-40
-10
-5
0
5
10
Ejemplo: Otro ejemplo clásico es el de la función tangente:
En la ventana de comandos de MatLab
Grafica de MatLab
f(x)=tan(x)
x 10
>> x=-3*pi:0.001:3*pi;
1
>> y=tan(x);
0
>> plot(x,y)
-1
>> grid
>> title('f(x)=tan(x)')
-2
>>
-3
4
-4
-5
-6
-10
-5
05 gráficos 2D
0
75
5
10
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Agregando ahora el comando axis, con los limites de la grafica adecuados.
En la ventana de comandos de MatLab
Grafica de MatLab
>> x=-3*pi:0.001:3*pi;
>> y=tan(x);
>> plot(x,y)
>> grid
>> title('f(x)=tan(x)')
>> axis([-3*pi 3*pi -10 10])
>>
f(x)=tan(x)
10
8
6
4
2
0
-2
-4
-6
-8
-10
-8
-6
-4
-2
0
2
4
6
8
GRAFICAS PARAMETRICAS
Explicaremos el procedimiento para la creación de las graficas “paramétricas” en dos dimensiones,
de la forma:
z
x t , y t ,t
a, b
Usando los comandos en MatLab, como en los casos anteriores.
Ejemplo: Ahora graficaremos las curvas de Lissajous o también llamada curva de Bowditch.
En la ventana de comandos de MatLab
Grafica de MatLab
t=0:0.01:8*pi;
x=sin(3*t)+t/(20*pi);
y=sin(2*t);
plot(x,y)
title('x(t)=sin(3t)+t/(20pi)
[0,8pi]')
xlabel('x=x(t)')
ylabel('y=y(t)')
y(t)=sin(2t),
x(t)=sin(3t)+t/(20pi)
y(t)=sin(2t), t en [0,8pi]
1
0.8
0.6
0.4
y=y(t)
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0
0.5
1
x=x(t)
05 gráficos 2D
76
1.5
t
en
05 GRAFICOS EN 2D
Ejemplo: Ahora la función x 2/3
y
2/3
En la ventana de comandos de MatLab
Lic. Amado Malca Villalobos
1
Grafica de MatLab
t=0:pi/20:2*pi;
x=(cos(t)).^3;y=(sin(t)).^3;
plot(x,y)
grid
title('x^2/3 + y^2/3 =1');
x2/3 + y2/3 =1
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0
0.5
1
Ejemplo: Ahora una epicicloide
En la ventana de comandos de MatLab
Grafica de MatLab
t=0:pi/1000:2*pi;
x=15*cos(t)-3*cos(5*t);
y=15*sin(t)-3*sin(5*t);
x1=12*cos(t);
y1=12*sin(t);
plot(x,y,x1,y1)
grid
title('Epicicloide')
Epicicloide
20
15
10
5
0
-5
-10
-15
-20
-20
-15
-10
-5
0
5
10
15
20
GRAFICAS EN DOS DIMENSIONES CON COORDENADAS POLARES
Para la grafica de una función en coordenadas polares, debemos tener en cuenta que un punto en el
plano cartesiano se puede escribir en coordenadas cartesianas o en coordenadas polares, esto es
como sigue:
Eje y
p
y
x, y
r cos , sen
r
x
Eje x
Para graficar una función en coordenadas polares se hara con el comando polar. Ahora se
explicara el procedimiento para la creación de los graficas “polares” en dos dimensiones;
identificando cada uno de los comandos en los programas en MATLAB con lo siguiente:
Indica el rango del parámetro “  ”
Indica la función que se desea graficar r  r ()
Grafica la función predefinida con la función polar, que reemplaza a plot. El resto de opciones
funciona igual como de costumbre.
Indica el titulo de la grafica con title.
05 gráficos 2D
77
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Activa y desactiva la retícula alternadamente con grid.
Ejemplo: graficando una roseta de radio 6 y de 5 hojas: r
En la ventana de comandos de MatLab
6cos(5 ) .
Grafica de MatLab
Grafica en Coord. Polares
90
t=0:0.05:pi+0.01;
r=6*cos(5*t);
polar(t,r)
title('Grafica en Coord. Polares')
grid
6
60
120
4
30
150
2
0
180
330
210
300
240
270
Ejemplo: graficando una cardioide: r
En la ventana de comandos de MatLab
12
20cos( ) .
Grafica de MatLab
t=0:pi/1000:4*pi;
r=20*cos(t)+12;
polar(t,r)
grid
title('r=20cos t +12')
r=20cos t +12
90
40
120
60
30
20
150
30
10
180
0
210
330
240
300
270
Ejemplo: graficando un caracol: r
En la ventana de comandos de MatLab
4 2sen ( ) .
Grafica de MatLab
t=0:pi/1000:4*pi;
r=4-2*sin(t);
polar(t,r)
grid
title('r=4-2sin t ')
r=4-2sin t
90
6
120
60
4
150
30
2
180
0
210
330
240
300
270
05 gráficos 2D
78
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
4
2 cos(t ) .
Ejemplo: graficando una elipse en coordenadas polares: r
En la ventana de comandos de MatLab
Grafica de MatLab
t=0:0.1:2*pi;
r=4./(2-cos(t));
polar(t,r)
grid
title('r=4/(2-cos t)')
r=4/(2-cos t)
90
4
120
60
3
2
150
30
1
180
0
210
330
240
300
270
Ejemplo: graficando una parábola en forma polar: r
En la ventana de comandos de MatLab
4
1 cos(t ) .
Grafica de MatLab
t=0:0.1:2*pi;
r=4./(1-cos(t));
polar(t,r)
grid
title('r=4/(1-cos t)')
r=4/(1-cos t)
90
1500
120
60
1000
150
30
500
180
0
210
330
240
300
270
MÁXIMOS Y MINIMOS DE UNA FUNCION
De acuerdo al curso de Calculo Diferencial sabemos que si una función es continua en un intervalo
cerrado y acotado, entonces alcanza un valor mínimo y un valor máximo la función en algún punto
de este dominio. Pero este teorema nos indica solamente la existencia de tal valor, el problema es
hallar estos valores, para ello tenemos una función en MatLab, llamada: fminbnd
Para hallar el mínimo:
[x,fval] = fminbnd(‘f’,a,b)
Para hallar el máximo de una función, se procede hallando el mínimo de y= - f(x)
Ejemplo: Consideraremos el polinomio
f x
x4
2 x3
23x 2
10,10 .
Para determinar en una forma preliminar en que intervalo del dominio se encuentran estos valores
mínimos y máximos de la función, graficaremos tal función.
05 gráficos 2D
79
2x
24, x
05 GRAFICOS EN 2D
En la ventana de comandos de MatLab
Lic. Amado Malca Villalobos
Grafica de MatLab
x=-10:0.001:10;
f=x.^4-2*x.^3-23*x.^2-2*x-24;
plot(x,f)
grid
10000
8000
6000
4000
2000
0
-2000
-10
-5
0
5
10
Restringiendo el dominio de la grafica, para una mejor observación. Esto se puede hacer las veces
que sea necesario.
En la ventana de comandos de MatLab
Grafica de MatLab
x=-6:0.001:8;
f=x.^4-2*x.^3-23*x.^2-2*x-24;
plot(x,f)
grid
1600
1400
1200
1000
800
600
400
200
0
-200
-400
-6
-4
-2
0
2
4
6
8
Ahora vemos claramente que hay mínimos en los intervalos: [-6,0] y en [0,6].
Además encontramos un valor máximo relativo en el intervalo: [-2,2]
Para hallar estos valores usaremos el comando: fminbnd
Hallando mínimo en [-6,0]
Hallando el mínimo en [0,6]
f='x^4-2*x^3-23*x^2-2*x+24';
f='x^4-2*x^3-23*x^2-2*x+24';
[x,fval] = fminbnd(f,-6,0)
[x,fval] = fminbnd(f,0,6)
Resultado en MatLab
x = -2.6963
fval = -45.7604
Resultado en MatLab
x = 4.2400
fval = -227.2207
Hallando el mínimo de “-f”’, en [-2,2]
f='-x^4+2*x^3+23*x^2+2*x-24';
[x,fval] = fminbnd(f,-2,2)
Resultado en MatLab
x = -0.0437
fval = -24.0436
05 gráficos 2D
80
05 GRAFICOS EN 2D
Ejemplo: Considerando la función f x
En la ventana de comandos de MatLab
Lic. Amado Malca Villalobos
10 x
,x
x2 1
20,20
Grafica de MatLab
x=-20:0.01:20;
y=(10*x)./(x.^2+1);
plot(x,y)
axis([-20 20 -10 10])
grid
10
8
6
4
2
0
-2
-4
-6
-8
-10
-20
-15
-10
-5
0
5
10
15
20
Donde la grafica tiene un máximo en [ 0 , 5 ], y un mínimo en [ -5 , 0 ], ahora procedemos a hallar
estos valores.
Hallando mínimo en [-5,0]
Hallando el máximo en [0,5]
f='(10*x)/(x^2+1)';
g='-(10*x)/(x^2+1)';
[x,fval] = fminbnd(f,-5,0)
[x,fval] = fminbnd(g,0,5)
Resultado en MatLab
x = -1.0000
fval = -5.0000
Resultado en MatLab
x = 1.0000
fval = -5.0000
Ahora con el comando gtext(‘comentario’), agregaremos algún comentario en la grafica. El
cual funciona así:
Se ejecuta la grafica, luego el comando gtext, y luego aparece en la grafica un cursor. Con el
mouse, se elige una posición en la grafica y una vez elegida se hace un clic con el botón izquierdo
y aparece el comentario en la posición indicada.
También podemos hacer lo mismo con el comando: text(a,b,’texto’)
Ejemplo:
En la ventana de comandos de MatLab
clf
x=-20:0.01:20;
y=(10*x)./(x.^2+1);
plot(x,y)
axis([-20 20 -10 10])
grid
gtext('Máximo en x=1')
gtext('Mínimo en x =-1')
Grafica de MatLab
10
8
6
Máximo en x=1
4
2
0
-2
-4
Mínimo en x =-1
-6
-8
-10
-20
-15
05 gráficos 2D
-10
-5
81
0
5
10
15
20
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
COMANDO SUBPLOT
Este comando lo que hace es dividir la pantalla de graficos en m x n sectores para graficar. Su
sintaxis es como sigue:
subplot(m,n,p)
Donde p varia desde 1 hasta m x n, y nos indica donde ira la siguiente grafica.
x4
Ejemplo: Graficando ahora la función f x
40 x 2
144, x
10,10 . Junto a sus tres
primeras derivadas. Esto nos indica como están variando estas funciones en el mismo intervalo.
En la ventana de comandos de MatLab
x=-10:0.01:10;
y=x.^4-40*x.^2+144; z=4*x.^3-80*x;
w=12*x.^2-80; m=24*x;
subplot(2,2,1)
plot(x,y), title(‘Función’), grid
subplot(2,2,2)
plot(x,z), title(‘Primera derivada’), grid
subplot(2,2,3)
plot(x,w), title(‘Segunda derivada’), grid
subplot(2,2,4)
plot(x,m), title(‘Tercera derivada’), grid
Resultados en la ventana grafica de MatLab
Función
Primera derivada
8000
4000
6000
2000
4000
0
2000
-2000
0
-2000
-10
-5
0
5
10
-4000
-10
Segunda derivada
400
1000
200
500
0
0
-200
-5
0
5
0
5
10
Tercera derivada
1500
-500
-10
-5
10
-400
-10
05 gráficos 2D
-5
0
82
5
10
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
x3
Ejemplo: Graficando ahora la función cubica f x
30 x 2
275, x
0,20 . Junto a sus tres
primeras derivadas. Esto nos indica como están variando estas funciones en el mismo intervalo.
En la ventana de comandos de MatLab
x=[0:0.01:20];y=x.^3-30*x.^2+275.*x-750;
dy=3*(x.^2)-60*x+275; ddy=6*x-60; dddy=6;
subplot(2,2,1)
plot(x,y),grid
xlabel('tiempo'),ylabel('y'),title('funcion cubica')
subplot(2,2,2)
plot(x,dy),grid
xlabel('tiempo'),ylabel('dy'),title('Primera derivada de y')
subplot(2,2,3)
plot(x,ddy),grid
xlabel('tiempo'),ylabel('ddy'),title('Segunda derivada de y')
subplot(2,2,4)
plot(x,dddy,'r'),grid
xlabel('tiempo'),ylabel('dddy'),title('Tercera derivada de y')
Resultados en la ventana grafica de MatLab
funcion cubica
Primera derivada de y
300
500
200
dy
1000
y
0
100
-500
0
10
20
tiempo
Segunda derivada de y
-100
100
7
50
6.5
dddy
ddy
-1000
0
0
-50
-100
0
10
20
tiempo
Tercera derivada de y
6
5.5
0
10
tiempo
20
5
0
05 gráficos 2D
10
tiempo
83
20
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
PLOTEANDO FUNCIONES CON fplot
Ahora veremos el comando fplot
Este comando es más directo en el caso de funciones ya sean de MatLab o funciones pre definidas
por el ussuario, pero no puede ser usado para datos aislados sin relación funcional explicita. En
cambio el comando plot sirve en ambos casos.
Este comando se usa para graficar funciones en un intervalo determinado
y f x , x a, b
La sintaxis es:
fplot ' funcion ',limites,especificadores_de_linea
Los límites tienen el formato siguiente:
x min, x max
x min, x max, y min, y max
Los especificadores de línea son iguales que plot.
Ejemplo: Graficando la función: y
f x
En la ventana de comandos de MatLab
sen x exp
x , x, y
3,10
8,1
Grafica de MatLab
fplot('sin(x)*exp(-x)',[3 10 -8 1])
grid
xlabel('eje de las x')
ylabel('eje de las y')
title('montaña rusa')
montaña rusa
1
0
-1
eje de las y
-2
-3
-4
-5
-6
-7
-8
f x
En la ventana de comandos de MatLab
fplot('exp(0.25*x)*sin(6*x)',[-2,4])
grid
xlabel('eje de las x')
ylabel('eje de las y')
title('Saltinbanqui')
0
2
sen 6 x exp
4
eje de las x
6
0.25x , x
8
10
2,4
Grafica de MatLab
Saltinbanqui
2
1.5
1
eje de las y
Ejemplo: Graficando la función: y
-2
0.5
0
-0.5
-1
-1.5
-2
-1
05 gráficos 2D
0
84
1
eje de las x
2
3
4
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Graficando una function en coordenadas polares con el commando: ezpolar
En la ventana de comandos de MatLab
syms t;
g = 100/(100 + (t - pi/2).^8);
ezpolar(g.*(2 - sin(7*t) - cos(30*t)/2), [-pi/2, 3*pi/2])
grid off
Resultados en la ventana grafica de MatLab
90
4
120
60
3
2
150
30
1
180
0
210
330
240
300
270
r = -(100 (cos(30 t)/2 + sin(7 t) - 2))/((/2 - t)8 + 100)
05 gráficos 2D
85
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
COMANDO EZPLOT
La instrucción “plot” es muy útil para hacer lo que uno quiere, pero si queremos producir una
grafica estándar que represente una sola curva sin complicarnos generando una tabla de valores,
disponemos del comando “ezplot”, que traza la curva correspondiente a una expresión funcional
que se introduce como una cadena de caracteres.
Ejemplo: ibujar la función f(x) = exp(sen(x)) - 1 en el intervalo [0; 10]
Solucion:
>> ezplot('exp(sin(x))-1',[0,10])
exp(sin(x))-1
1.5
1
0.5
0
-0.5
0
2
4
6
8
10
x
La expresión:
'exp(sin(x))-1' es una cadena de caracteres que MATLAB ha de interpretar
como la expresión analítica de una función. Las cadenas de caracteres (strings) han de introducirse
entre apostrofes. Una de las ventajas de ezplot es que también puede utilizarse para dibujar graficas
de curvas definidas implícitamente (curvas en el plano). Por ejemplo, representamos la cónica de
ecuación
x 2 2 xy 3x 1 0 (el conjunto de puntos (x; y) del plano que satisfacen esa
ecuación):
>> ezplot('x^2+2*x*y-3*x+1',[-4 4 -4 4])
>> grid
>>
x2+2 x y-3 x+1 = 0
4
3
2
y
1
0
-1
-2
-3
-4
-4
-3
-2
-1
0
x
1
2
3
4
donde los cuatro números indican el recuadro del plano donde debe graficarse la curva que nos
interesa, en este caso
4,4
4,4
05 gráficos 2D
86
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
VECTORES EN EL PLANO BIDIMENSIONAL R2
Para graficar un vector en el plano R2, se usara el comando de MatLab: “quiver”, a modo de
ejemplo tenemos:
Este comando en su forma más simple:
quiver(u,v)
Grafica los vectores en los puntos (k,1), y cuyas coordenadas del vector son: (u(k),v(k)), donde k
varía desde 1 hasta n, n es tanto la longitud de u y de v, que deben ser iguales.
>> u=-5:5
u = -5 -4 -3 -2 -1
>> v=2*u
v = -10 -8 -6 -4 -2
>> quiver(u,v)
>>
0
1
2
3
4
5
0
2
4
6
8
10
3.5
4
3
3.5
2.5
2
3
1.5
1
2.5
0.5
2
0
-0.5
1.5
-1
-1.5
-2
0
2
4
6
8
10
12
14
Grafico 1
>> u=-5:5
u = -5 -4 -3 -2 -1 0 1
>> v=u.^2
v = 25 16 9 4 1 0 1
>> quiver(u,v)
>>
Ahora veremos una variante de este comando:
1
0
2
4
6
8
10
12
Grafico 2
2
3
4
5
4
9
16
25
quiver(x,y,u,v)
Grafica los vectores en los puntos (x(k),y(k)), y cuyas coordenadas del vector son: (u(k),v(k)),
donde k varía desde 1 hasta n, n es tanto la longitud de x, y, u y v, que deben ser iguales.
>> t=0:0.6:2*pi;
>> x=sin(t)
x=
0 0.5646 0.9320 0.9738 0.6755 0.1411 -0.4425 -0.8716 -0.9962 -0.7728 -0.2794
>> y=cos(t)
y = 1.0000 0.8253 0.3624 -0.2272 -0.7374 -0.9900 -0.8968 -0.4903 0.0875 0.6347 0.9602
>> u=-sin(t) % derivada de x, respecto de t
u=
0 -0.5646 -0.9320 -0.9738 -0.6755 -0.1411 0.4425 0.8716 0.9962 0.7728 0.2794
>> v=cos(t) % derivada de y respecto de t
v = 1.0000 0.8253 0.3624 -0.2272 -0.7374 -0.9900 -0.8968 -0.4903 0.0875 0.6347 0.9602
>> quiver(x,y,u,v)
>>
05 gráficos 2D
87
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-1
-0.5
0
0.5
1
Ahora se considerara una opción adicional de “quiver”, la escala del vector, en el grafico anterior
la escala por defecto es 1:
quiver(x,y,u,v,escala)
>> quiver(x,y,u,v,0.5) % escala 0.5
>> quiver(x,y,u,v,2) % escala 2
1.5
3
1
2
0.5
1
0
0
-0.5
-1
-1
-2
-1.5
-1
-0.5
0
0.5
-3
-1
1
>> quiver(x,y,u,v,1) % escala 1
-0.5
0
0.5
1
0.5
1
>> quiver(x,y,u,v,0) % escala 0
2
2
1.5
1.5
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
-1
-1.5
-2
-1
-1.5
-0.5
0
0.5
-2
-1
1
Tambien se puede midificar el color:
>> quiver(x,y,u,v,0.5,'color','r')
-0.5
0
>> quiver(x,y,u,v,0.5,'color','m')
1.5
1.5
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
-1.5
-1
-1
-0.5
0
0.5
1
-1.5
-1
05 gráficos 2D
-0.5
88
0
0.5
1
05 GRAFICOS EN 2D
Lic. Amado Malca Villalobos
Veamos ahora la grafica de una función, con algunos vectores tangentes:
Consideremos la función: y = cos(x).
Parametrizando esta curva por defecto tenemos:
(x,y) = (x,cos(x)), para x en [0,2*pi]
Ahora consideremos los vectores tangente a esta curva:
(u,v) = (x’,y’) = (1,-sin(x)), para x en [0,2*pi]
La curva se puede graficar en forma completa, pero los vectores tangentes solo graficaremos
algunos, por cuestiones de estética, y con rojo para que haya una diferenciación.
>> x=0:0.1:2*pi;
>> y=cos(x);
>> x2=0:2*pi;
>> y2=cos(x2);
>> plot(x,y)
>> hold on
>> u=1*ones(1,length(x2));
>> v=-sin(x2);
>> quiver(x2,y2,u,v,0.5,'color','r')
>> grid
>>
1.5
1
0.5
0
-0.5
-1
-1.5
0
1
2
3
4
5
6
7
Animacion con matlab
function prueba
M=moviein(30)
x=[-2*pi:0.2:2*pi];
for j=1:30
y=sin(x+j*pi/8);
plot(x,y);
M(:,j)=getframe;
end
movie(M,10,15)
05 gráficos 2D
89
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
CAPITULO 09: GRAFICOS ESTADISTICOS
ESTADISTICA DESCRIPTIVA
% ESTADISTICA DESCRIPTIVA
clear
x=1:1:100;
w=100:-1:1;
MA=mean(x)
% media aritmetica
MAP=mean(x.*w)
% media aritmetica
MG=geomean(x)
% media geometrica
MH=harmmean(x) % Media armonica
M=median(x)
% mediana
CA=skewness(x)
% coeficiente de asimetria
CC=kurtosis(x)
% coeficiente de curtosis
DS=std(x)
% desviacion tipica o estandar
%
considerese las puntuaciones: 1 2 4 4 4 5 8 8 8 6 6 6 7
D=[1 2 4 4 4 5 8 8 8 6 6 6 7];
tabulate(D)
W=[6 5 8 4 5 3 8 2 1 7 7 8 9];
cv=var(D)
% cuasivarianza
VA=var(D,1)
% varianza
VAP=var(D,W)
% varianza ponderada
Generación de números aleatorios
rand
Genera un numero
aleatorio entre 0 y 1.
rand(1,n)
Genera una fila de n
números aleatorios
entre 0 y 1.
rand(n)
Genera una matriz de
orden nxn de números
aleatorios entre 0 y 1.
rand(m,n)
Genera una matriz de
orden mxn de números
aleatorios entre 0 y 1.
randperm(n)
Genera un vector de n
elementos que son
permutaciones
aleatorias de enteros
entre 1 y n.
(bGenera una fila de n
a)*rand(1,n)+a números aleatorios
entre a y b.
clear
rand
05 gráficos estadísticos
90
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
A=rand(1,10)
B=rand(5)
C=rand(4,5)
D=randperm(4)
E=(8-5)*rand(1,6)+5
% COMANDO randn
% GENERA NUMEROS ALEATORIOS CON DISTRIBUCION NORMAL
% ES DECIR MEDIA 0 Y DESVIACION ESTANDAR O TIPICA 1
F=randn(3,4)
% SI SE DESEA QUE TENGA UNA MEDIA DE 50 Y DESVIACION ESTANDAR 5
G=round(5*randn(1,15)+50) % 15 numeros enteros con tal condicion
REPRESENTACION DE GRAFICOS ESPECIALES
En el area de estadística se tiene la necesidad de representar datos de una manera muy especial,
para lo cual se tienen algunos comandos especiales
Para ello considere las siguientes ventas de una compañía desde el año 1988 a 1994
Año
1988 1989 1990 1991 1992 1993 1994
Ventas
8
12
20
22
18
24
27
(millones)
Grafico de barras verticales
t=[1988:1994]
vent=[8 12 20 22 18 24 27]
bar(t,vent,'c')
title('Gráfico de barras verticales')
xlabel('años')
ylabel('ventas (en millones)')
Gráfico de barras verticales
30
ventas (en millones)
25
20
15
10
5
0
1988
1989
1990
1991
años
1992
1993
1994
Gráfico de barras horizontales
t=[1988:1994]
vent=[8 12 20 22 18 24 27]
barh(t,vent,'m')
title('Gráfico de barras horizontales')
xlabel('años')
ylabel('ventas (en millones)')
05 gráficos estadísticos
91
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
Gráfico de barras horizontales
1994
ventas (en millones)
1993
1992
1991
1990
1989
1988
0
5
10
15
años
20
25
30
Gráfico de escaleras
t=[1988:1994]
vent=[8 12 20 22 18 24 27]
stairs(t,vent)
title('Gráfico de escaleras')
xlabel('años')
ylabel('ventas (en millones)')
Gráfico de escaleras
28
26
24
ventas (en millones)
22
20
18
16
14
12
10
8
1988
1989
1990
1991
años
1992
1993
1994
Grafico de tallo o líneas verticales
t=[1988:1994]
vent=[8 12 20 22 18 24 27]
stem(t,vent)
title('Gráfico de tallo o Lineas verticales')
xlabel('años')
ylabel('ventas (en millones)')
Gráfico de tallo o Lineas verticales
30
ventas (en millones)
25
20
15
10
5
0
1988
1989
1990
1991
años
1992
1993
1994
Grafico de tarta o circular
Las siguiente tabla muestra las notas (en letras: A, B, C, D y E)
Nota
A
B
C
D
E
Numero de 11
18
26
9
5
alumnos
nalumnos=[11 8 26 9 5]
pie(nalumnos) %,{'A','B','C','D','E'})
title('Notas de clase')
05 gráficos estadísticos
92
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
Notas de clase
8%
19%
15%
14%
44%
nalumnos=[11 8 26 9 5]
pie(nalumnos,{'A','B','C','D','E'})
title('Notas de clase')
Notas de clase
E
A
D
B
C
HISTOGRAMAS
Son gráficos que muestran la distribución de una serie de datos. Para ello, el rango completo de
los datos se subdivide en subrangos menores denominados intervalos de forma que el
histograma muestra cuantos puntos hay en cada intervalo.
El comando para este caso es: hist
Donde la sintaxis es:
hist y
hist y, numero _ int ervalos
hist y, x
% n indica el número de puntos por cada intervalo
n
hist y
n
hist y, numero _ int ervalos
n
hist y, x
% xout representa los centros de los intervalos.
[n xout ]
hist y
[n xout ]
hist y, numero _ int ervalos
[n xout ]
hist y, x
Ejemplo: Los siguientes datos representan la temperatura máxima diaria (en grados Farenheit) en
la ciudad de Tumbes, durante el mes de Abril del 2012:
58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59 69 56 64 63 66 64 74 63 69.
Datos del Senamhi. Se puede obtener un histograma para la representación de estos datos.
y=[58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59
69 56 64 63 66 64 74 63 69];
hist(y)
% por defecto es 10 intervalos
xlabel('Temperatura (ºF)')
ylabel('Numero de dias')
title('Histograma de temperaturas')
05 gráficos estadísticos
93
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
Histograma de temperaturas
7
6
Numero de dias
5
4
3
2
1
0
45
50
55
60
65
70
75
Temperatura (ºF)
80
85
90
95
y=[58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59
69 56 64 63 66 64 74 63 69];
hist(y,6)
% seis intervalos
xlabel('Temperatura (ºF)')
ylabel('Numero de dias')
title('Histograma de temperaturas')
Histograma de temperaturas
7
6
Numero de dias
5
4
3
2
1
0
45
50
55
60
65
70
75
Temperatura (ºF)
80
85
90
95
y=[58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59
69 56 64 63 66 64 74 63 69];
x=[45:10:95]
hist(y,x)
% x es el vector de los centros de intervalos
xlabel('Temperatura (ºF)')
ylabel('Numero de dias')
title('Histograma de temperaturas')
colormap([1 0 0])
Histograma de temperaturas
10
9
8
Numero de dias
7
6
5
4
3
2
1
0
45
55
65
75
Temperatura (ºF)
85
95
y=[58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59
69 56 64 63 66 64 74 63 69];
x=[45:10:95]
n=hist(y,x)
% n indica el numero de puntos
xlabel('Temperatura (ºF)')
ylabel('Numero de dias')
title('Histograma de temperaturas')
05 gráficos estadísticos
94
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
colormap([1 0 0])
Resultado:
n =
2
>>
5
10
7
3
3
Histograma de temperaturas
10
9
8
Numero de dias
7
6
5
4
3
2
1
0
45
55
65
75
Temperatura (ºF)
85
95
y=[58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 91 93 89 91 80 59
69 56 64 63 66 64 74 63 69];
x=[45:10:95]
[n xout]=hist(y,x)
% xout indica los centros de los intervalos
xlabel('Temperatura (ºF)')
ylabel('Numero de dias')
title('Histograma de temperaturas')
colormap([1 0 0])
Resultados:
n = 2 5 10 7 3 3
xout = 45 55 65 75 85 95
>>
Histograma de temperaturas
10
9
8
Numero de dias
7
6
5
4
3
2
1
0
45
55
65
75
Temperatura (ºF)
85
95
Grafico de barras en 3D
Y=[1 6.5 7;2 6 7;3 5.5 7;4 5 7;3 4 7;2 3 7;1 2 7]
bar3(Y)
8
6
4
2
0
1
2
3
4
5
6
7
2
3
1
05 gráficos estadísticos
95
05 GRAFICOS ESTADISTICOS EN 2D
Lic. Amado Malca Villalobos
Grafico de Tallo o Lineas verticales 3D
t=0:0.1:20;
x=t;
y=sin(t);
z=t.^1.5;
stem3(x,y,z,'fill')
grid on
xlabel('x'),ylabel('y'),zlabel('z')
100
80
z
60
40
20
0
1
0.5
20
15
0
10
-0.5
5
-1
y
0
x
Grafico de dispersión 3D
t=0:0.2:20;
x=t;
y=sin(t);
z=t.^1.5;
scatter3(x,y,z,'filled')
grid on
colormap([0.1 0.1 0.1])
xlabel('Eje x');
ylabel('Eje y'),
zlabel('Eje z')
100
80
Eje z
60
40
20
0
1
0.5
20
15
0
10
-0.5
5
-1
Eje y
0
Eje x
Grafico de tarta 3D
X=[5 9 14 20 10 20]
% frecuencias simples
explode=[1 1 0 0 1 0] % es un vector de la misma longitud de X
con unos y seros
% Un uno indica que la porcion de la tarta
% estara separada del resto secciones
pie3(X,explode)
26%
6%
13%
12%
18%
26%
05 gráficos estadísticos
96
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
FUNCIONES Y FICHEROS DE FUNCION
Considere una función usual, con una variable de entrada (independiente, y una
variable de salida (dependiente). Lo que varia es la cantidad de argumentos que pueden
tener estas variables.
Ejemplo:
y  f  x   2 x  6 , una variable de entrada, y una de salida.
z  F  x, y   2 x 2  6 xy  y 3  8 , dos variables de entrada, y una de salida.
 u, v   G  x, y, z    2 x  5 y  z, x  3 y  5z  ,
tres variables de entrada, y dos de salida.
Para realizar estas funciones se usaran archivos script de extensión: ****.m. En el
desarrollo de estas funciones es posible usar funciones predefinidas por MatLab,
también se pueden usar funciones definidas por el usuario, las cuales deben ubicarse
siempre en la carpeta de trabajo de MatLab.
Funciones predefinidas:
cos(x), sqrt(x), exp(x), det(A), etc.
Funciones definidas por el usuario; generalmente para representar una función que se
usara en varios programas adicionales.
y  f  x
FUNCIÓN
x
CREACIÓN DE UN ARCHIVO DE FUNCIÓN
Básicamente un archivo de función, es un archivo tipo .m, visto en el capitulo tres. Pero
la diferencia está en la primera línea, que lleva una forma especial, para indicar lo de
función.
Ejemplo: Vamos a construir una función cuadrática, de la forma
y  f  x   3x 2  6 x  8, x  R
funcuad.m
function
y =funcuad(x)
% Cálculo del valor de una
función cuadrática
%
% El argumento de entrada es:
%
x: un numero real
%
% El argumento de salida es:
%
y = 3x^2+6x-8, tambien real
y=3*x.^2+6*x-8;
Ejecución en la ventana de comandos de
MatLab
>> y=funcuad(1),z=funcuad(2),w=funcuad(3)
y= 1
z = 16
w = 37
>> y=funcuad([1,2,3])
y = 1 16 37
>> y=funcuad([1;2;3])
y=
1
16
37
>>
06 archivos de función
97
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
Archivo script: funcuad.m
Con esta función se podrían hacer muchas cosas, como: graficar, derivar, integrar, etc.
Veamos una de ellas, grafiquemos en el intervalo [-10,10]
En la ventana de comandos de MatLab.
>> x=-10:0.1:10; y=funcuad(x); plot(x,y),grid
>>
Grafico Resultante:
400
350
300
250
200
150
100
50
0
-50
-10
-5
0
06 archivos de función
5
98
10
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
Ejemplo: Cálculo de la altura y la distancia máximas que alcanzan un proyectil, cuando
se lanza con un ángulo determinado, y con una velocidad inicial dada.
funcuad.m
Function
[hmax,dmax]=trayectoria(v0,theta)
% Cálculo de la altura y la distancia máximas, que alcanzan un
proyectil
%
% Los argumentos de entrada son:
%
v0: velocidad inicial en m/s
%
theta: ángulo en grados sexagesimales.
%
% Los argumentos de salida son:
%
hmax: altura máxima en metros
%
dmax: distancia máxima en metros
g=9.81;
v0x=v0*cos(theta*pi/180);
v0y=v0*sin(theta*pi/180);
thmax=v0y/g;hmax=v0y^2/(2*g);
ttot=2*thmax;dmax=v0x*ttot;
%Creación de un grafico de la trayectoria
tplot=linspace(0,ttot,200);
x=v0x*tplot;;
y=v0y*tplot-0.5*g*tplot.^2;
plot(x,y), grid
xlabel('DISTANCIA (m)')
ylabel('ALTURA (m)')
title('TRAYECTORIA DE UN PROYECTIL')
Ejecución en la ventana de comandos de MatLab
>> [hmax,dmax]=trayectoria(120,30)
hmax = 183.4862
dmax = 1.2712e+003
>> [hmax,dmax]=trayectoria(80,60)
hmax = 244.6483
dmax = 564.9911
>>
Grafico resultante
TRAYECTORIA DE UN PROYECTIL
250
ALTURA (m)
200
150
100
50
0
0
100
200
300
400
DISTANCIA (m)
500
600
06 archivos de función
99
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
Ventana del programa: trayectoria.m
LAS PARTES DE UN FICHERO DE FUNCIÓN
Línea de definición de la función
Aquí tenemos la expresión: “function”, que define el fichero como una función.
También se define el nombre de la función. Y finalmente se define el número y orden
de los argumentos de entrada y salida. Siempre va en la primera línea.
El esquema de esta línea es:
f unction [argumentos de salida]  nombre_funcion  argumentos de entrada 
O también
f unction argumento de salida  nombre_funcion  argumentos de entrada 
La línea H1 y las líneas de texto de ayuda
Inmediatamente después de la línea de definición de función, están la llamada línea H1
y las líneas de texto de ayuda, que siempre empiezan con el símbolo “%”. Y
proporcionan información descriptiva sobre la función. La línea H1 es la que Matlab
busca en algunos casos de búsqueda de algunas palabras relacionadas con funciones.
Además esto se muestra con el comando “help nombre_funcion”
>> help trayectoria
Calculo de la la altura y la distancia máximas que alcanzan un proyectil
06 archivos de función
100
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
Los argumentos de entrada son:
v0: velocidad inicial en m/s
theta: ángulo en grados.
Los argumentos de salida son:
hmax: altura máxima en metros
dmax: distancia máxima en metros
Cuerpo de la función
Aquí se tiene el código del programa mismo, que incluirá operaciones de entrada y/o
salida, también salida de gráficos si el problema lo amerita.
FUNCIONES EN LINEA
Se usan para realizar funciones simples, que también pueden tener una o más variables
de entrada.
nombre  inline  'exp resion matematica en forma de cadena '
nombre  inline  'exp resion matematica ','arg1','arg 2',
Ejemplo: Considerando la función cuadrática:
,'arg n ' 
y  f  x   3x 2  6 x  8
>> f=inline('3*x^2+6*x-8') % definiendo una function en linea
f = Inline function:
f(x) = 3*x^2+6*x-8
>> f=inline('3*x^2+6*x-8','x') % agregando la variable
f = Inline function:
f(x) = 3*x^2+6*x-8
>> f(1)
ans = 1
>> f(2)
ans = 16
Ejemplo: Ahora consideraremos una función real de dos variables:
>> G=inline('3*x+6*y+9*x*y-6','x','y')
G = Inline function:
G(x,y) = 3*x+6*y+9*x*y-6
>> G(1,2)
ans = 27
>> G(1,2),G(6,8)
ans = 27
ans = 492
>> [G(1,2), G(3,5), G(8,1), G(3,7)]
ans = 27 168 96 234
>> x=[1 2 3],y=[7 6 4]
x= 1 2 3
y= 7 6 4
>> G(x,y)
??? Error using ==> inlineeval at 15
06 archivos de función
101
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
Error in inline expression ==> 3*x+6*y+9*x*y-6
Inner matrix dimensions must agree.
Error in ==> inline.subsref at 27
INLINE_OUT_ = inlineeval(INLINE_INPUTS_,
INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Como aparece un error debemos redefinir la función, para cuando los argumentos son
vectores o matrices.
>> G=inline('3*x+6*y+9*x.*y-6','x','y') % véase la diferencia
G = Inline function:
G(x,y) = 3*x+6*y+9*x.*y-6
>> G(x,y)
ans = 102 144 135
>>
Ahora una función de dos variables de entrada y dos de salida
>> g=inline('[3*x+6*y+9,x+y-6]','x','y')
g = Inline function:
g(x,y) = [3*x+6*y+9,x+y-6]
>> g(2,3)
ans = 33 -1
>> x=[1 3 5],y=[9 8 4]
x= 1 3 5
y= 9 8 4
>> g(x,y)
ans = 66 66 48 4 5 3
>> g(1,9),g(3,8),g(5,4)
ans = 66 4
ans = 66 5
ans = 48 3
>>
Ejemplos 02: g  x, y   4 x5 y  7 x3 y 2  8x 2 y 4  6 x  29 y 6
>> G=inline('4*(x.^5).*y+7*(x.^3).*(y.^2)-8*(x.^2).*(y.^4)+6*x-29*(y.^6)')
G = Inline function:
G(x,y) = 4*(x.^5).*y+7*(x.^3).*(y.^2)-8*(x.^2).*(y.^4)+6*x-29*(y.^6)
>> G(5,6),G(8,7),G(9,1)
ans = -1505694
ans = -3547965
ans = 240676
>> x=[-2 -1 0 1 2 3 4 5],y=[-3 -2 -1 0 1 2 3 4]
x = -2 -1 0 1 2 3 4 5
y = -3 -2 -1 0 1 2 3 4
>> G(x,y)
ans = -23865 -2010
-29 6 135 -290 -15165 -105954
06 archivos de función
102
06 Funciones y ficheros de función
Lic. Amado Malca Villalobos
EL COMANDO “feval”
Este comando evalúa el valor de una función, en algún o algunos valores dados. La
diferencia con el caso anterior, está en que aquí se da la función, solo el nombre, y se
evalúa en el valor dado.
variable = feval(‘nombre_funcion’,valor_argumento)
Se tiene que seguir ciertos lineamientos, como son:
-El nombre de la función debe introducirse en forma de cadena.
-La función puede ser una de MATLAB, o alguna definida por el usuario.
- Los argumentos de entrada se separan por comas, y después del nombre de la función.
-Los argumentos de salida van entre corchetes, y separados por comas.
Ejemplo 01: Aquí vamos a definir una función H, y luego la evaluamos en x=1.
>> H=inline('exp(x.^2)./(1+x.^4)')
H = Inline function: H(x) = exp(x.^2)./(1+x.^4)
>> feval(H,1)
ans = 1.3591
>>
Ejemplo 02:
>> D=feval(inline('exp(x.^2)./(1+x.^4)'),1)
D = 1.3591
>> H=inline('exp(x.^2)./(1+x.^4)')
H = Inline function: H(x) = exp(x.^2)./(1+x.^4)
>> feval(H,1)
ans = 1.3591
>> G=inline('exp(x.^2)./(y+x.^4)')
G = Inline function: G(x,y) = exp(x.^2)./(y+x.^4)
>> feval(G,1,1)
ans = 1.3591
>> feval(G,4,5)
ans = 3.4046e+004
>> D=feval(inline('exp(x.^2)./(1+x.^4)'),1)
D = 1.3591
>> D=feval('sin',0)
D= 0
>> D=feval('sin',pi/6)
D = 0.5000
>> D=feval(inline('cos(x)+tan(x)'),pi/7)
D = 1.3825
06 archivos de función
103
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION
MATLAB trabaja indistintamente con números reales o complejos, pero hay algunas propiedades
específicas de estos últimos que hay que tener en cuenta. Polinomios son vectores cuyas componentes son
los coeficientes del polinomio. Sumar polinomios es como sumar vectores, pero también se puede
multiplicar y dividir polinomios. MATLAB tiene una serie de funciones que ayudan a trabajar con
polinomios cómodamente.
Números Complejos
El comando abs(a) devuelve el valor absoluto o el modulo del numero a según que este sea real o
complejo. De la misma forma abs(A) devuelve una matriz cuyos elementos son los módulos o los valores
absolutos de los elementos de A según que estos sean números complejos o reales. Además, hay que tener
en cuenta que MATLAB no produce un error si se le pide la raíz cuadrada o el logaritmo de un numero
negativo sino que devuelve el correspondiente numero complejo. La unidad imaginaria es una constante
predefinida en MATLAB. Las letras que la designan son bien i, bien j.
Hay que tener cuidado con la trasposición. Si A es una matriz de números complejos entonces A’ es la
transpuesta conjugada de A (lo que nosotros solemos designar como A*). Si queremos la transpuesta de A
debemos usar A.’. Por ejemplo
>> A=[1-i 2+i; 3+i i]
A=
1.0000 - 1.0000i 2.0000 + 1.0000i
3.0000 + 1.0000i 0.0000 + 1.0000i
>> Atc=A'
Atc =
1.0000 + 1.0000i 3.0000 - 1.0000i
2.0000 - 1.0000i 0.0000 - 1.0000i
>> At=A.'
At =
1.0000 - 1.0000i 3.0000 + 1.0000i
2.0000 + 1.0000i 0.0000 + 1.0000i
>>
Finalmente, el comando plot cuando se emplea con números complejos tiene un significado especial: Si y
es un vector de números complejos la sentencia plot(y) es equivalente a plot(real(y),imag(y)).
>> y=[1+i 6+4i 4i 5+i 3+6i 1+i]
y=
Columns 1 through 5
1.0000 + 1.0000i 6.0000 + 4.0000i 0.0000 + 4.0000i 5.0000 + 1.0000i 3.0000 + 6.0000i
Column 6
1.0000 + 1.0000i
>> plot(y)
>>
6
5.5
5
4.5
4
3.5
3
2.5
2
1.5
1
0
1
2
3
08 polinomios
4
5
104
6
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
Calculo con Polinomios
Los polinomios son herramientas matemáticas muy fáciles de manipular, ya sea derivando y/o
integrando. Por lo cual los hace ideales para representar algún suceso discreto o también una
función cuya integral sea imposible de hallar o muy difícil de calcular.
La idea es que el error que se pueda dar con esta aproximación polinomial, a una función
desconocida o una expresión complicada, sea el mínimo. Tendiendo hacia cero. Este
procedimiento de aproximar una función se denomina interpolación.
Un polinomio es una expresión de la forma:
p x an x n an 1 x n 1
a1 x a0 , n Z
Polinomio
En Matlab
p x
2x
5
q x
6 x3
7 x2
r x
4 x5
6x2
p
2 5
2
q
6
8
r
4 0 0 6 0
7 0 2
8
VALOR DE UN POLINOMIO
Para evaluar un polinomio en la variable x, se realiza con el siguiente comando:
polyval p, x
Donde p es el vector con los coeficientes del polinomio, y x es el valor para el cual se debe
evaluar el polinomio. Este comando evalúa el polinomio como si fuera una función.
x5 12,1x 4 40,59 x3 17,015x 2
Ejemplo: Dado el polinomio p x
a) Hallar p(5), p(9), p(-1)
b) Representar gráficamente el polinomio p(x), con 1,5 x 6,7
Solución:
>> p=[1 -12.1 40.59 -17.015 -71.95 35.88]
p = 1.0000 -12.1000 40.5900 -17.0150 -71.9500 35.8800
>> polyval(p,5)
ans = -112.9950
>> polyval(p,9)
ans = 7.2611e+003
>> polyval(p,-1)
ans = 37.1250
>> x=-1.5:0.1:6.7;
>> y=polyval(p,x);
>> plot(x,y)
>> grid
>>
150
100
50
0
-50
-100
-150
-200
-2
-1
0
1
2
3
08 polinomios
4
5
105
6
7
71,95x
35,88
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
RAICES DE UN POLINOMIO
Siempre es necesario hallar los valores reales x, para los cuales un polinomio es cero.
Resolviendo la ecuación: p x 0
Para este cometido será necesario utilizar la función roots de MatLab, cuya sintaxis es:
r roots p
p es un vector fila con los coeficientes del polinomio
r es un vector columna con las raíces del polinomio.
Ejemplo: En el polinomio del ejemplo anterior calculando las raíces del polinomio dado:
>> r=roots(p)
r = 6.5000
4.0000
2.3000
-1.2000
0.5000
>>
Ejemplo: También tenemos el siguiente polinomio:
>> p=[1 0 0 0 -1]
p= 1 0 0 0
>> r=roots(p)
r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
>>
p x
x4 1
-1
Ejemplo: También podemos hacerlo directamente:
>> r=roots([1 0 0 0 -1])
r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
>>
Ahora veamos el proceso inverso, es decir dadas las raíces debemos encontrar el polinomio
correspondiente. Para ello usaremos el comando poly, la sintaxis de este comando es como sigue:
p poly r
r es un vector fila o columna con las raíces del polinomio
p es un vector con los coeficientes del polinomio.
Ejemplo: Hallar el polinomio cuyas raíces son:
a) 1, 2, 3, 4 y 5.
b)
1+4i, 1-4i, 2+sqrt(5), 2-sqrt(5).
>> r=[1 2 3 4 5]
r= 1 2 3 4 5
>> p=poly(r)
p = 1 -15 85 -225 274 -120
>> r=[1+4i 1-4i 2+sqrt(5) 2-sqrt(5)]
r = 1.0000 + 4.0000i 1.0000 - 4.0000i 4.2361 -0.2361
>> p=poly(r)
p = 1.0000 -6.0000 24.0000 -66.0000 -17.0000
>>
08 polinomios
106
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
SUMA DE POLINOMIOS
Para sumar polinomios solo se debe tener en cuenta que los vectores asociados tengan la misma
dimensión. Si fuera el caso deberá completarse con ceros a la izquierda.
Ejemplo: Sumar
p x
x4
6 x3
5x
7
y q x
3x 2
8x 5
>> p=[1 6 0 -5 7]
p = 1 6 0 -5 7
>> q=[0 0 3 8 -5]
q = 0 0 3 8 -5
>> p+q
ans = 1 6 3 3 2
>> 2*p-3*q
ans = 2 12 -9 -34 29
>>
MULTIPLICACIÓN DE POLINOMIOS
Para el producto de polinomios no es necesario completar, y se utiliza el comando conv, de
MatLab.
c conv p, q
p y q son los polinomios a multiplicar.
c es el vector que contiene los coeficientes del producto
Ejemplo: Multiplicar
p x
4 x3
5x2
6x
2
x2
y q x
7x
3
>> p=[4 -5 6 2]
p = 4 -5 6 2
>> q=[3 8 -5]
q = 3 8 -5
>> c=conv(p,q)
c = 12 17 -42 79 -14 -10
>>
DIVISIÓN DE POLINOMIOS
Para la división, se usa el comando deconv, de MatLab.
q, r deconv u, v
u y v son los polinomios a dividir.
q es el cociente de la división y r es el residuo.
Ejemplo: Dividir u x
6 x5
3x 2
8x
20
y v x
2x2
8x 3
>> u=[6 0 0 3 -8 20]
u = 6 0 0 3 -8 20
>> v=[2 8 -3]
v = 2 8 -3
>> [q,r]=deconv(u,v)
q = 1.0e+002 *
0.030000000000000 -0.120000000000000 0.525000000000000 -2.265000000000000
r = 1.0e+003 *
0
0
0
0 1.961500000000000 -0.659500000000000
>>
08 polinomios
107
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
DERIVADA DE UN POLINOMIO
Para calcular en forma específica la derivada de un polinomio, se usa el comando polyder.
Sea que p y q son vectores de los polinomios
k polyder p
p' x
Donde k x
Derivada de un producto de polinomios
k polyder p, q
Donde k x
p x q x '
Derivada de una división de polinomios
n x
n, d
polyder p, q Donde
d x
Ejemplo: Considere los polinomios:
p x 16 x6 12 x 2
p( x) q( x) '
5x 13
>> p=[16 0 0 0 12 -5 13]
p = 16 0 0 0 12 -5 13
>> q=[5 18 -23]
q = 5 18 -23
>> m=polyder(p)
m = 96 0 0 0 24 -5
>> g=polyder(p,q)
640
2016
-2208
0
240
>> [n,d]=polyder(p,q)
n=
320
1440
-2208
0
0
d = 25 180 94 -828 529
>>
5x2
y q x
573
241
-602
-682
18x 23
349
-119
EVALUACIÓN DE UN POLINOMIO EN UNA MATRIZ
>> A
A=
1.0000 - 1.0000i 2.0000 + 1.0000i
3.0000 + 1.0000i 0.0000 + 1.0000i
>> p=[1 2 5 7 9]
p=
1 2 5 7 9
>> polyvalm(p,A)
ans =
88.0000 +49.0000i 46.0000 +63.0000i
77.0000 +79.0000i 25.0000 +95.0000i
>>
08 polinomios
108
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
CURVAS DE AJUSTE
REGRESION POLINOMIAL
Este tema también llamado regresión, muy utilizado para modelar una función de la cual solo se
conoce una cantidad finita de valores. El polinomio puede ser lineal, cuadrático, cubico, etc.
xi , yi es posible hallar un
La teoría matemática nos dice que, dados n puntos del tipo
polinomio de grado n-1, que pase por tales puntos.
Pero si se tiene muchos datos es preferible buscar un polinomio de grado menor, así tendremos
que posiblemente la curva de ajuste no pase por todos los puntos, pero el error tiende a ser menor.
Esta metodología se llama de “Mínimos Cuadrados”.
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit x, y, n
p es el vector de los coeficientes del polinomio de ajuste
x es el vector de las abscisas de los puntos
y son las ordenadas de los puntos
n es el grado de la curva de ajuste
Ejemplo: Ahora tenemos los valores de la temperatura en un espacio de 12 horas.
T 28 28 29 30 31 32 34 34 34 33 31 30
Hallaremos una curva de ajuste, de cuarto grado
Solucion:
Programa:
curvatemp.m
Ejecución en MatLab
x=[1 2 3 4 5 6 7 8 9 10 11 12]
T=[28 28 29 30 31 32 34 34 34 33
31 30]
p=polyfit(x,T,4)
t=1:0.01:12;
w=polyval(p,t);
plot(x,T,' *')
hold on
plot(t,w)
grid
hold on
>> curvatemp
x = 1 2 3 4 5 6 7 8 9 10
11 12
T = 28 28 29 30 31 32 34 34 34
33 31 30
p = 0.002585955710956 -0.092875874125877
0.939284673659698 -2.356861888111967
29.613636363636434
34
33
32
31
30
29
28
27
0
2
4
6
8
10
12
REGRESION POTENCIAL
El modelo matemático es: y
bx m , convertible a un polinomio lineal, siguiendo la formula:
ln( y) m ln( x) ln(b)
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit log( x),log( y),1
Donde resulta que p, es un vector con los coeficientes del polinomio:
p = [ p(1) p(2)] = [m ln(b)]
08 polinomios
109
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
REGRESION EXPONENCIAL
El modelo matemático es: y bemx , convertible a un polinomio lineal, siguiendo la formula:
ln( y) mx ln(b)
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit x,log( y),1
p es el vector de los coeficientes del polinomio lineal: p(1)=m, p(2)=ln(b)
b 10mx , convertible a un polinomio lineal, siguiendo la formula:
log( y) mx log(b)
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit x,log10( y),1
p es el vector de los coeficientes del polinomio lineal: p(1)=m y p(2)=log(b)
El modelo matemático es:
y
REGRESION LOGARITMICA
El modelo matemático es: y m ln( x) b
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit log( x), y,1
p es el vector de los coeficientes del polinomio lineal: p(1)=m, y p(2)=b
El modelo matemático es: y m log( x) b
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit log10( x), y,1
p es el vector de los coeficientes del polinomio lineal: p(1)=m, y p(2)=b
REGRESION RECIPROCA
1
1
mx b
, convertible a un polinomio lineal:
mx b
y
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p polyfit x,1. / y,1
El modelo matemático es:
y
p es el vector de los coeficientes del polinomio lineal: p(1)=m, p(2)= b
Ejemplo: Considere la función dada por la siguiente tabla:
x
y
x
y
0
1.0000
6
9.6120
1
-0.6242
7
2.3363
2
-1.4707
8
-24.5438
3
3.2406
9
25.3848
4
-0.7366
10
23.5321
5
-6.3717
Solución:
Programa:
ajustecurv.m
Ejecución en MatLab
t =[0 1 2 3 4 5 6 7 8 9 10]
w = [6.00 4.83 3.70 3.15 2.41
1.83 1.49 1.21 0.96 0.73 0.64]
plot(x,y,' *')
p=polyfit(t,log(w),1);
m=p(1)
b=exp(p(2))
tm=0:0.1:10;
wm=b*exp(m*tm);
plot(t,w,' *',tm,wm)
>> ajustecur
t= 0 1 2 3 4 5 6 7 8 9
10
w = 6.0000 4.8300 3.7000 3.1500
2.4100 1.8300 1.4900 1.2100 0.9600
0.7300 0.6400
m = -0.2290
b = 5.9889
>>
08 polinomios
110
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
6
5
4
3
2
1
0
0
1
2
3
4
5
6
7
8
9
10
INTERPOLACION
Esta palabra significa encontrar un valor intermedio de una función y f x , dado un conjunto
de valores de ella, la cual está definida en un dominio determinado. Este valor corresponde a un
elemento intermedio en el dominio.
Dado un conjunto de valores: xi , yi , i 1, n ; donde xi xi 1 , i 1, n 1
Para hallar este valor intermedio: se usa las curvas halladas en el tema de curvas de ajuste.
xi , yi , i 1, n
Para este procedimiento se usa el comando de interp1, con la siguiente estructura:
yi interp1 x, y, xi,' metodo '
x es el vector de abscisas de los puntos
y es el vector de ordenadas de los puntos
xi es la abscisa de punto a interpolar
yi es el valor interpolado
Por defecto el método es ' linear ' , los otros métodos son:
' nearest ' Devuelve el valor del punto más cercano al interpolado.
' linear ' Utiliza interpolación segmentaria lineal.
' spline ' Utiliza interpolación segmentaria cubica.
' pchip ' o ' cubic ' utiliza interpolación de Hermite cubica
Ejemplo: Interpolar los valores de la función dada por la siguiente tabla:
x 0
1
2
3
4
5
y 1,0
-0,6242
-1,4707
3,2406
-0,7366
-6,3717
x
Que corresponden a la función: f x 1,5 cos 2 x
Solución:
interpolf.m
Ejecución en
MatLab
x=0:1:5;
>> interpolf
y=[1.0 -0.6242 -1.4707 3.2406
>>
-0.7366 -6.3717];
xi=0:0.1:5;
yilin=interp1(x,y,xi,'linear');
yispl=interp1(x,y,xi,'spline');
yipch=interp1(x,y,xi,'pchip');
yfun=1.5.^xi.*cos(2*xi);
subplot(1,3,1)
08 polinomios
111
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
plot(x,y,'o',xi,yfun,xi,yilin,'-');
subplot(1,3,2)
plot(x,y,'o',xi,yfun,xi,yispl,'-');
subplot(1,3,3)
plot(x,y,'o',xi,yfun,xi,yipch,'-');
4
4
4
2
2
2
0
0
0
-2
-2
-2
-4
-4
-4
-6
-6
-6
-8
0
1
2
3
4
5
-8
0
1
2
3
4
5
-8
0
1
2
08 polinomios
3
4
112
5
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
CAPITULO 09: GRAFICOS TRIDIMENSIONALES
Los graficos en 3D, son aquellas expresiones de la forma:
E x, y , z
0,
x, y , z
D
3
Donde D es un cierto dominio en R3, Esta grafica puede ser una curva o una superficie.
GRAFICO DE LINEA
Ahora vamos a graficar algunas curvas que deben estar parametrizadas, se hara con el comando de MatLab:
plot3, la sintaxis es como sigue.
plot 3( x, y, z,' especificaciones linea ',' propiedades ',' valores ')
- Las variables x, y, z representan los vectores con las coordenadas de los puntos.
- Los especificadores de línea es opcional, definen el tipo y el color de línea, y los marcadores.
- Las propiedades y valores se usan para especificar el grosor de línea, el tamaño y los colores del borde y el
relleno de los marcadores.
- Los especificadores de línea, las propiedades y los marcadores son los mismos que para gráficos en 2D.
Ejemplo01: Graficar
x
t sen 2t
y
z
t cos 2t
0,5t
0
t
x2
y2
2 z , la cual puede ser parametrizada mediante las ecuaciones:
6
Solución:
Curva3d01.m
En MatLab
>> curva3d01
t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'r','LineWidth',1)
grid on
xlabel('x');
ylabel('y');
zlabel('z');
10
8
z
6
4
2
0
5
5
0
0
-5
-5
x
y
f (t ) ( Aeb t cos(t ), Aeb t sen(t ), C t ), t
(e0.2t sin(0.8 t ), e0.2t cos(0.8 t ),t ), t [0,20]
Ejemplo 02: Graficar la espiral logarítmica:
f (t )
Curva3d02.m
clear,clf
% borra curvas
t = 0:0.1:20;
% rango de ‘t’
r = exp(0.2*t); % parte de función
th=pi*t*0.8;
% cambio de variable
z=t;
% coordenada “x”
x=r.*sin(th);
% coordenada “y”
y=r.*cos(th);
% coordenada “z”
plot3(x,y,z)
% Grafica la función
grid
xlabel('x');ylabel('y');zlabel('z');
En MatLab
>> curva3d02
20
15
z
Donde
R
10
5
0
100
40
50
20
0
0
-50
y
09 gráficos en 3D
-20
113
-40
-60
x
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Ejemplo 03: La posición de una partícula en el tiempo viene dada por:
x
z
t
2
4 cos t cos t
2
4 cos t sin t
0
t
20
2
Curva3d03.m
t=0:0.1:200;
x=(2+cos(t)).*cos(t);
y=(2+cos(t)).*sin(t);
z=t.^2;
plot3(x,y,z,'r','LineWidth',1)
grid on
xlabel('x');
ylabel('y');
zlabel('z');
En MatLab
>> curva3d03
x 10
4
4
3
2
z
x
1
0
4
2
3
2
0
1
-2
0
-4
y
-1
x
Ejemplo 04: Curva que describe el movimiento de un objeto sobre un toro:
A cos a t
A sen a t
z
B sen b t
B cos b t
0
t
100
Curva3d04.m
function w=curva3d04(A,B,a,b)
t=0:0.1:300*pi;
x=A*cos(a*t)+B*cos(b*t);
y=A*sin(a*t);
z=B*sin(b*t);
plot3(x,y,z,'r','LineWidth',1)
grid on
xlabel('x');
ylabel('y');
zlabel('z');
En MatLab
>> curva3d04(1,2,2,1)
2
1
0
z
x
y
-1
-2
1
0.5
3
2
0
1
0
-0.5
y
>> curva3d04(3,2,0.2,1)
-1
-1
-2
x
>> curva3d04(5,17,0.2,0.7)
20
2
10
z
z
1
0
0
-10
-1
-20
5
-2
4
40
2
5
20
0
0
-20
0
0
-2
y
-4
-5
y
x
09 gráficos en 3D
114
-5
-40
x
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Ejemplo 05: Graficaremos ahora la curva de Viviani, que es la intersección de un cilindro y una esfera.
a
2
y2
x2
a2
y2
x
Una parametrización de esta curva es:
a 1
y
z
z2
4a 2
cos t
a sen t
2a sen t / 2
Curva3d05.m
t=-2*pi:0.1:2*pi;
x=1+cos(t);
y=sin(t);
z=2*sin(t/2);
plot3(x,y,z,'r','LineWidth',1)
grid on
xlabel('x');
ylabel('y');
zlabel('z');
2
t
2
En MatLab
>> curva3d05
2
1
z
x
0
-1
-2
1
0.5
2
1.5
0
1
-0.5
0.5
-1
y
0
x
Ejemplo 06: Ahora veremos una espiral esférica:
cos t cos 24t
cos t sen 24t
z
0
t
4
sen t
Curva3d06.m
t=0:0.1:2*pi;
x=cos(t).*cos(24*t);
y=cos(t).*sin(24*t);
z=sin(t);
plot3(x,y,z,'r','LineWidth'
,1)
grid on
xlabel('x');
ylabel('y');
zlabel('z');
En MatLab
>> curva3d06
1
0.5
z
x
y
0
-0.5
-1
1
0.5
1
0.5
0
0
-0.5
y
09 gráficos en 3D
115
-0.5
-1
-1
x
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
GRAFICA DE UNA CURVA EN R3, Y SUS VECTORES TANGENTES.
Ejemplo01: Graficar
x
t sen 2t
y
z
t cos 2t
0,5t
x
2
y2
2 z , la cual puede ser parametrizada mediante las ecuaciones:
x'
0
t
Derivando:
6
y'
z'
1
sen 2t
2 t
1
cos 2t
2 t
0,5
2 t cos 2t
2 tsen 2t
0
t
6
Para graficar un vector tangente en una curva tridimensional, se usa el comando:
Solución:
Programa:
grafico3d.m
quiver3
Ejecucion en MatLab
>> grafico3d
t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'r','LineWidth',1)
hold on
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Espiral con sus vectores
tangentes')
t2=0:6*pi;
x2=sqrt(t2).*sin(2*t2);
y2=sqrt(t2).*cos(2*t2);
z2=0.5*t2;
u2=sin(2*t2)./(2*sqrt(t2))+2*sq
rt(t2).*cos(2*t2);
v2=cos(2*t2)./(2*sqrt(t2))2*sqrt(t2).*sin(2*t2);
w2=0.5*ones(1,length(z2));
quiver3(x2,y2,z2,u2,v2,w2,1)
grid
Espiral con sus vectores tangentes
10
Eje z
8
6
4
2
0
5
5
0
0
-5
-10
Eje y
-5
Eje x
Espiral con sus vectores tangentes
6
4
Eje y
2
0
-2
-4
-6
-5
0
Eje x
5
Ahora configurando la presentación de los vectores tangentes, para ello se agrega una línea adicional con el
comando: set
Espiral con sus vectores tangentes
Espiral con sus vectores tangentes
10
10
8
6
Eje z
Eje z
8
4
6
4
2
2
0
5
0
5
5
0
-10
-5
0
-5
0
-5
Eje y
5
0
Eje y
Eje x
09 gráficos en 3D
116
-10
-5
Eje x
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Programa:
grafico3d.m
Linea punteada y color negro
t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'r','LineWidth',1)
hold on
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Espiral con sus vectores
tangentes')
t2=0:6*pi;
x2=sqrt(t2).*sin(2*t2);
y2=sqrt(t2).*cos(2*t2);
z2=0.5*t2;
u2=sin(2*t2)./(2*sqrt(t2))+2*sqrt(t
2).*cos(2*t2);
v2=cos(2*t2)./(2*sqrt(t2))2*sqrt(t2).*sin(2*t2);
w2=0.5*ones(1,length(z2));
h=quiver3(x2,y2,z2,u2,v2,w2,1);
set(h,'LineStyle',':','Color','k');
grid
Ejecucion en MatLab
Linea punteada y color cyan.
t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'r','LineWidth',1)
hold on
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Espiral con sus vectores
tangentes')
t2=0:6*pi;
x2=sqrt(t2).*sin(2*t2);
y2=sqrt(t2).*cos(2*t2);
z2=0.5*t2;
u2=sin(2*t2)./(2*sqrt(t2))+2*sqrt(t2)
.*cos(2*t2);
v2=cos(2*t2)./(2*sqrt(t2))2*sqrt(t2).*sin(2*t2);
w2=0.5*ones(1,length(z2));
h=quiver3(x2,y2,z2,u2,v2,w2,1);
set
(h,'LineStyle',':','Color','g','Marke
r','*');
grid
09 gráficos en 3D
117
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
GRAFICOS DE MALLA Y DE SUPERFICIE
Se usan para representar una función de la forma z
f x, y , x, y
a, b
c, d
Creación de una rejilla en el plano xy
Lo primero es crear una malla de puntos (x,y) en el plano xy. Es decir dos matrices, en la primera las abscisas de los puntos
y en la segunda las ordenadas. Según el grafico siguiente:
ym
y2
y1
y0
x0
x1
x2
x3
xn
Con el comando en MatLab: meshgrid
X ,Y
Programa:
superficier3.m
x=1:1:5;
y=-4:1:3;
[X,Y]=meshgrid(x,y)
meshgrid x, y
En MatLab
>> superficier3
X= 1 2 3
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Y = -4 -4 -4
-3 -3 -3 -3
-2 -2 -2 -2
-1 -1 -1 -1
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
>>
4 5
5
5
5
5
5
5
5
-4 -4
-3
-2
-1
0
1
2
3
Calculo del valor z en cada punto de la rejilla
El siguiente paso es evaluar la función en cada punto de esta malla
xy 2
Ejemplo con la función: z
2
x
y2
09 gráficos en 3D
118
1
xn
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Programa:
superficier3.m
x=1:1:5;
y=-4:1:3;
[X,Y]=meshgrid(x,y)
z=X.*Y.^2./(X.^2+Y.^2)
En MatLab
>> superficier3
X=
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Y=
-4 -4 -4 -4 -4
-3 -3 -3 -3 -3
-2 -2 -2 -2 -2
-1 -1 -1 -1 -1
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
z=
0.9412 1.6000 1.9200
0.9000 1.3846 1.5000
0.8000 1.0000 0.9231
0.5000 0.4000 0.3000
0
0
0
0
0.5000 0.4000 0.3000
0.8000 1.0000 0.9231
0.9000 1.3846 1.5000
>>
2.0000
1.4400
0.8000
0.2353
0
0.2353
0.8000
1.4400
1.9512
1.3235
0.6897
0.1923
0.1923
0.6897
1.3235
Creación de gráficos de malla y de superficie
Para graficar con MatLab tenemos dos opciones:
Un grafico de malla, con el comando mesh. Lo que realiza aquí es levantar las líneas que están en plano xy
mesh X , Y , Z
Grafico de superficie con el comando surf. Aquí se levanta el plano que está en xy.
surf X , Y , Z
Ahí van los ejemplos
Programa:
mallar3.m
x=1:1:5;
y=-4:1:3;
[X,Y]=meshgrid(x,y);
Z=X.*Y.^2./(X.^2+Y.^2);
mesh(X,Y,Z)
Grafico asociado
Programa:
superficier3.m
x=1:1:5;
y=-4:1:3;
[X,Y]=meshgrid(x,y);
Z=X.*Y.^2./(X.^2+Y.^2);
surf(X,Y,Z)
Grafico asociado
2
2
1.5
1.5
1
1
0.5
0.5
0
4
2
5
4
0
3
-2
2
-4
1
0
4
2
5
4
0
3
-2
2
-4
09 gráficos en 3D
119
1
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Modificando el color del grafico
Los colores de este grafico son en base a los valores que asume la función en los puntos del plano xy. Se podría volver
constante el color.
Para el color se puede modificar con el comando en MatLab colormap, cuya sintaxis es:
colormap C
Donde C es un vector de tres elementos, y estos elementos tienen una variación de 0 a 1.
Ejemplo: C [0 0 0] Negro
Rojo
Verde
C [1 0 0]
C [0 1 0]
C
Amarillo
Magenta
Gris
C [1 1 0]
C [1 0 1]
C [0.5 0.5 0.5]
Ejemplo
Programa:
mallar3.m
Programa:
superficier3.m
x=1:1:5;
x=1:1:5;
y=-4:1:3;
y=-4:1:3;
[X,Y]=meshgrid(x,y);
[X,Y]=meshgrid(x,y);
Z=X.*Y.^2./(X.^2+Y.^2);
Z=X.*Y.^2./(X.^2+Y.^2);
surf(X,Y,Z)
mesh(X,Y,Z)
colormap([0.8 0.9 0.6])
colormap([0.9 0.1 0.7])
Grafico asociado
Grafico asociado
2
2
1.5
1.5
1
1
0.5
0.5
0
4
[0 0 1]
Azul
0
4
2
5
2
4
0
5
4
0
3
-2
2
-4
3
-2
2
1
-4
1
Precisiones sobre el comando mesh:
- Cuando se ejecuta el comando mesh, la rejilla se activa por defecto. Para ocultarla se teclea: grid off . Para volver a
activar la rejilla: grid on
- Para dibujar una caja que rodee el grafico se usa el comando: box on
- Los comandos mesh y surf se pueden utilizar de la forma mesh Z
1,8
1,5 x
y
2
sen x cos 0,5 y
Solucion: Graficando la superficie en formato malla.
Programa:
malla02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
mesh(X,Y,Z)
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
surf Z
en [-3, 3] x [-3, 3].
Programa:
malla02.m
Altibajos
0.4
0.2
Eje z
Ejemplo: Graficar la función: z
2
0
-0.2
-0.4
4
2
4
2
0
0
-2
09 gráficos en 3D
-2
-4
Eje y
120
-4
Eje x
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
superficie02.m
Altibajos
Eje z
Solución: Graficando la superficie en formato superficie.
Programa:
superficie02.m
Programa:
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
0.4
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
0.2
Z=E.*sin(X).*cos(0.5*Y);
0
surf(X,Y,Z)
xlabel('Eje x')
-0.2
ylabel('Eje y')
-0.4
zlabel('Eje z')
80
60
title('Altibajos')
80
60
40
40
20
Programa:
0
superficie02.m
0.4
0.2
0
-0.2
-0.4
4
2
4
2
0
0
-2
Programa:
-2
-4
Eje y
-4
superficie02.m
0.4
0.2
0
-0.2
-0.4
4
2
4
2
0
0
-2
Programa:
-2
-4
Eje y
-4
Eje x
superficie02.m
Altibajos
0.4
0.2
Eje z
Grafico de superficie con contorno
Programa:
superficie02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
surfc(X,Y,Z)
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
Eje x
Altibajos
Eje z
Solución: Grafico de malla con contorno
Programa:
superficie02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
meshc(X,Y,Z)
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
Eje x
Altibajos
Eje z
Solución: Grafico de malla con cortina
Programa:
superficie02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
meshz(X,Y,Z)
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
20
0
Eje y
0
-0.2
-0.4
80
60
80
60
40
40
20
09 gráficos en 3D
20
0
Eje y
121
0
Eje x
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Programa:
superficie02.m
Altibajos
0.4
0.2
Eje z
Grafico de superficie con alumbrado
Programa:
superficie02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
surfl(X,Y,Z)
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
0
-0.2
-0.4
80
60
80
60
40
40
20
20
0
Eje y
Programa:
Eje x
superficie02.m
Altibajos
0.4
0.2
Eje z
Grafico de cascada
Programa:
superficie02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
waterfall(X,Y,Z)
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
0
0
-0.2
-0.4
4
2
4
2
0
0
-2
-2
-4
Eje y
Programa:
Eje x
superficie02.m
Altibajos
0.4
0.2
Eje z
Grafico de contorno 3D
Programa:
superficie02.m
x=-3:0.1:3;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y);
Contour3(X,Y,Z,15) % el 15,
% indica el numero de
% niveles, opcional
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Altibajos')
-4
0
-0.2
-0.4
2
0
-2
-3
Eje y
-2
0
-1
1
3
2
Eje x
Eje y
Grafico de contorno 2D. Dibuja proyecciones de niveles de contorno sobre el plano xy
Programa:
superficie02.m
Programa:
superficie02.m
Altibajos
x=-3:0.1:3;
3
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
2
E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
1
Z=E.*sin(X).*cos(0.5*Y);
Contour(X,Y,Z,15) % el 15,
0
% indica el numero de
% niveles, opcional
-1
xlabel('Eje x')
-2
ylabel('Eje y')
zlabel('Eje z')
-3
-3
-2
-1
0
1
title('Altibajos')
Eje x
09 gráficos en 3D
122
2
3
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Ejemplo: Ahora se construirá la esfera bidimensional de radio 5 2 , con seis paños, que resultan ser la imagen de las
funciones: z
x
50
y2
Programa:
50 x 2
y2 , z
50 x 2
z 2 , en el dominio
5,5
y2 , y
50 z 2
x2 , y
5,5
cubresfera.m
% Cubriendo arriba y abajo
x=-5:0.3:5;
y=-5:0.3:5;
[X,Y]=meshgrid(x,y);
Z=sqrt(50-X.^2-Y.^2);
surf(X,Y,Z),hold on
Z=-sqrt(50-X.^2-Y.^2);
surf(X,Y,Z),hold on
% cubriendo derecha e izquierda
x=-5:0.3:5;
z=-5:0.3:5;
[X,Z]=meshgrid(x,z);
Y=sqrt(50-X.^2-Z.^2);
surf(X,Y,Z), hold on
Y=-sqrt(50-X.^2-Z.^2);
surf(X,Y,Z),hold on
% Cubriendo atrás y adelante.
y=-5:0.3:5;
z=-5:0.3:5;
[Y,Z]=meshgrid(y,z);
X=sqrt(50-Y.^2-Z.^2);
surf(X,Y,Z),hold on
X=-sqrt(50-Y.^2-Z.^2);
surf(X,Y,Z),hold off
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Cubriendo la Esfera')
Cubriendo la Esfera
10
Eje z
5
0
-5
-10
10
5
10
5
0
0
-5
Eje y
-5
-10
-10
Eje x
09 gráficos en 3D
123
50 z 2
x2 , x
50
y2
z2 ,
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
SUPERFICIES PARAMETRIZADAS
Graficando F X (u, v), Y (u, v), Z (u, v)
0,
% Un cilindro
clear
u=(0:0.1:3*pi)';
v=0:0.1:4;
X=sin(u)*ones(size(v));
Y=cos(u)*ones(size(v));
Z=ones(1,size(u))'*v;
surf(X,Y,Z)
GRAFICOS ESPECIALES
He aquí algunos opciones diferentes para una mejor comprensión de los comandos teclear:
help nombre_comando
Esfera
[ X Y Z]=sphere(30); % esfera unitaria
surf(X,Y,Z)
1
0.5
0
-0.5
-1
1
0.5
1
0.5
0
0
-0.5
-0.5
-1
-1
Cilindro
t=linspace(0,2*pi,30);
r=2+sin(t);
[ X Y Z]=cylinder(r);
surf(X,Y,Z)
axis square
1
0.8
0.6
0.4
0.2
0
4
2
4
2
0
0
-2
-2
-4
-4
09 gráficos en 3D
124
Descargar