Está en la página 1de 124

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 signo Tecla abreviada
Asignación = Alt 61
Relación “Menor que” < Alt 60
Relación “Mayor que” > Alt 62
Relación “Menor o igual que” <= Alt 60,Alt 61
Relación “Mayor o igual que” >= Alt 60, alt 61
Relación “Igual que” == Alt 61, alt 61
Relación “Distinto que” ~= Alt 126, alt 61
Producto lógico (Operación “y”) & Alt 38
Suma lógica (Operación “o”) | Alt 124
Negacion (Operación “no”) ~ Alt 126
Fin de expresión sin escritura en pantalla ; Alt 59
Fin de expresión con escritura en pantalla , Alt 44
Potenciación ^ alt 94
Multiplicación * alt 42
División / alt 47
División inversa \ alt 92
Suma + alt 43
Resta - alt 45

ORDEN DE PRECEDENCIA
Precedencia Operación Matemática
Primero Paréntesis
Segundo Exponenciación
Tercero Multiplicación y división (igual precedencia)
Cuarto Suma y resta

01 MatLab básico 3
01 – PRIMEROS PASOS CON MATLAB Lic. Amado Malca Villalobos

Símbolos útiles
Nombre Símbolo Código ascci
Paréntesis ( Alt + 40
) Alt + 41
Corchete [ Alt + 91
] Alt + 93
llaves { 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
inf Representa al infinito.
i Es la unidad imaginaria, la raíz cuadrada de -1.
j Equivale a i
NaN abreviatura de Not a Number(no numérico)
valor indeterminado

Comandos útiles sobre variables


clc Limpia la ventana de comandos
clear Borra todas las variables de memoria
clear x y z Borra solo las variables x, y, z
who Muestra un listado de variables
whos Muestra un listado de variables con
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)
Verificar dicha identidad para x /3

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:
nt
r
M t C 1
n
Si los intereses se capitalizan anualmente, el monto esta dado por la función
t
M t C1 r
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 Descripcion
u=[7 3 6 4 9] Vector fila
u=[7,3,6,4,9] Vector fila
v=[7;1;5;9;12] Vector columna
v=[7,1,5,9,12]’ Vector columna
v=[7 3 6 4 9]’ Vector columna
V=[7 Vector columna. Se ingresa un elemento y se
1 presiona la tecla enter, se ingresa el siguiente
5 valor luego enter, . . ., todo ello entre los dos
9 corchetes.
12]

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]
ba
De donde b  a  r  n  1 (si se conoce a, r y n) r ( si se conoce a, b y n)
n 1
Así podemos ver que es un vector donde el primer elemento es a , el espacio o distancia es r , y el último
término es b , se crea con la siguiente sintaxis:
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 -9 -12 -15 -18
>> x=[8:-3:20]
x = Empty matrix: 1-by-0
>>

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
ba
distancia entre elemento y elemento esta dado por: r  .
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 Descripcion
A=zeros(m,n) Crea una matriz de orden m  n , con ceros
B=zeros(n) Crea una matriz de orden n  n , con ceros
C=ones(m,n) Crea una matriz de orden m  n , con unos

02 Arrays 15
02 – ARRAYS Lic. Amado Malca Villalobos

D=ones(n) Crea una matriz de orden n  n , con unos


E=eye(n) Crea la matriz de orden n  n , con unos en la
diagonal, y ceros en el resto de lugares
F=eye(m,n) Crea la matriz de orden m  n , con unos en
la diagonal principal, y ceros en el resto

>> 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 0
0 1 0 0 0
0 0 1 0 0
>> D=ones(3,5)
D= 1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>>

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] >> M'


A= ans =
6 8 -4 3 3.0000 - 4.0000i 4.0000 - 7.0000i
5 2 1 0 8.0000 + 6.0000i 9.0000 - 2.0000i
6 9 2 -5 >> transpose(M)
>> A' ans =
ans = 3.0000 + 4.0000i 4.0000 + 7.0000i
6 5 6 8.0000 - 6.0000i 9.0000 + 2.0000i
8 2 9
-4 1 2 >> M.'
3 0 -5 ans =
>> M=[3+4i 8-6i;4+7j 9+2i] 3.0000 + 4.0000i 4.0000 + 7.0000i
M= 8.0000 - 6.0000i 9.0000 + 2.0000i
3.0000 + 4.0000i 8.0000 - 6.0000i
4.0000 + 7.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 Lic. Amado Malca Villalobos

v1 = 6 8 -4 3 2 12 0 9 2 -5
>> v1(3)+5*v1(7)-6*v1(2)
ans = -52
>> 8*v1(2)+7*v1(5)-(v1(7)+2)^2
ans = 74
>>

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:
A   ai j  Matriz de orden m  n
mn

A  i, j  Elemento de A, ubicado en la fila i y columna j.


A(k ) k-esimo elemento deA, considerando a la matriz como un vector
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 Lic. Amado Malca Villalobos

ans = Columns 1 through 7


21 85 90 94 93 63 16
Columns 8 through 12
75 52 67 16 78
>>

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 Descripcion
v : 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.
v  m : k : 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

>> 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 Descripcion
A :, n  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.
A  m : n,: Indica los elementos de las filas m hasta la 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 Lic. Amado Malca Villalobos

2
>> A(3,:)
ans = 6 9 2 -5 7 0
>> 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 5
0 7 -5 2 9 6
>> 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
>>

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 2
>> p(3)=[]
p= 6 8 3 2
>> p(1)=[]
p= 8 3 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 Ejemplo
length  v  Devuelve el número de >> v=[6 8 -4 3 2]
elementos del vector v. v = 6 8 -4 3 2
>> length(v)
ans = 5
>> w=[]
w = []
>> length(w)
ans = 0
length  A Devuelve el valor máximo >> A=[6 8; 3 6;5 1]
de {m,n}, siendo m  n A= 6 8
el orden de la matriz A. 3 6
5 1
>> length(A)
ans = 3
size  A Devuelve un vector fila >> A
[m,n], donde m y n A= 6 8

02 Arrays 20
02 – ARRAYS Lic. Amado Malca Villalobos
representan el tamaño de la 3 6
matriz A 5 1
>> size(A)
ans = 3 2
reshape  A, m, n  Reordena una matriz A, de >> A
orden r  s a una de orden A= 6 8
m  n . Siempre que 3 6
r  s  m n 5 1
0 9
>> reshape(A,2,4)
ans = 6 5 8 1
3 0 6 9
diag  v  Si v es un vector, se crea >> v=[6 8 2]
una matriz cuadrada con v= 6 8 2
los elementos de v en la >> diag(v)
diagonal ans =
6 0 0
0 8 0
0 0 2
diag  A Si A es una matriz, se crea >> A=[120 56 80 78;13 450
un vector a partir de los 67 45;89 56 610 56]
elementos de la diagonal A = 120 56 80 78
de A 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
0 0 0 0 0 0
>> D(3:4,:)=ones(2,6)
D=
0 0 0 0 0 0
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 0 0 0
>> D(:,3:4)=ones(6,2)
D=
0 0 1 1 0 0
0 0 1 1 0 0
1 1 1 1 1 1
1 1 1 1 1 1
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 Lic. Amado Malca Villalobos

2 5 811 14 17 
   5 10 15 20 25 30 
3 6 9 12 15 18 
 
A  4 7 10 13 16 19  B   30 35 40 45 50 55 
   55 60 65 70 75 80 
5 8 11 14 17 20   
6 
 9 12 15 18 21 
v   99 98 97 96 95 94 93 92 91
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 Cambios con tres comandos
>>A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21] >>A([1 3],[3 4 5 6])=B([1 2],[1 2 3 4])
A= A=
2 5 8 11 14 17 2 5 5 10 15 20
3 6 9 12 15 18 3 6 9 12 15 18
4 7 10 13 16 19 4 7 30 35 40 45
5 8 11 14 17 20 5 8 11 14 17 20
6 9 12 15 18 21 6 9 12 15 18 21
>> B=[5:5:30;30:5:55;55:5:80] >> A(4,[3:6])=v([5:8])
B= A=
5 10 15 20 25 30 2 5 5 10 15 20
30 35 40 45 50 55 3 6 9 12 15 18
55 60 65 70 75 80 4 7 30 35 40 45
>> v=[99:-1:91] 5 8 95 94 93 92
v = 99 98 97 96 95 94 93 92 91 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 Con un solo comando


>> A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21]; >> A([1 3 4 5],[3:6])=[B([1
>> B=[5:5:30;30:5:55;55:5:80]; 2],[1:4]);v([5:8]);B(3,[2:5])]
>> v=[99:-1:91]; 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) devuelve la longitud del vector x
[vM,pM]=max(x) Máximo elemento de un vector. Devuelve el valor máximo vM
y la posición que ocupa pM en el vector
[vm, pm]=min(x) Mínimo elemento de un vector. Devuelve el valor mínimo y la
posición que ocupa
sum(x) suma de los elementos de un vector
cumsum(x) 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
mean(x) valor medio de los elementos de un vector
std(x) desviación típica
prod(x) producto de los elementos de un vector
cumprod(x) devuelve el vector producto acumulativo de los elementos de
un vector (como en cumsum pero respecto al producto)
[y,i]=sort(x) 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' calcula la traspuesta (conjugada) de la matriz A
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.
trace(A) devuelve la traza de la matriz cuadrada A
[m,n] = size(A) devuelve el numero de filas m y de columnas n de una matriz
rectangular A
numel(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) Si 𝐴 = [𝑎𝑖𝑗 ] devuelve la matriz cuyos elementos son 𝑎𝑖𝑗
𝑎𝑖𝑗
power(b,A) Devuelve la matriz cuyos elementos son 𝑏 .
𝑎𝑖𝑗
exp(A) Devuelve una matriz cuyos elementos son exp(𝑎𝑖𝑗 ) = 𝑒 .
sqrt(A) Devuelve una matriz cuyos elementos son √𝑎𝑖𝑗
log(A) Devuelve una matriz cuyos elementos son ln(𝑎𝑖𝑗 ).
mpower(A,n) Devuelve la matriz A ∙ … ∙ A n veces, si n es un entero.
expm(A) Devuelve la exponencial de A; i.e. eA
sqrtm(A) Devuelve √A; i.e. una matriz que multiplicada por si misma
da A.
logm(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) 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
reshape(A,m,n) cambia el tamaño de A a una matriz m x n
diag dependiendo del argumento se emplea para construir una
matriz diagonal o para extraer la diagonal de una matriz
blkdiag(A,B) construye una matriz diagonal por bloques
tril(A) extrae la parte triangular inferior de A
triu(A) extrae la parte triangular superior de A
fliplr(A) Permuta las columnas de A: la ultima pasa a ser la primera,
la anteúltima pasa a ser la segunda, etc..
flipud(A) lo mismo que fliplr pero por filas
rot90(A) rota A 90 grados
[I,J,V]= find(A) 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.
end(A) devuelve el ultimo índice de A

FUNCIONES DE AN_ALISIS MATRICIAL


n=norm(v) Norma l2 del vector v o de la matriz, si el argumento es una
matriz. Hay variantes para otras normas
n=normest(A) 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)
r=rank(A) rango de la matriz A
d=det(A) determinante de A
t=trace(A) traza de A
N=null(A) las columnas de N forman una base del núcleo de A
Q=orth(A) las columnas de Q forman una base ortonormal del espacio
imagen de A
subspace1(A,B) 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 \ solución de sistemas lineales (ver la ayuda \help slash")
B = inv(A) inversa de A
c = cond(A) Numero de condición de A en la norma l2. Hay una variante
para otras normas
U = chol(A) descomposición de Cholesky de una matriz definida positiva
[L,U] = lu(A) 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.
[Q,R]=qr(A) descomposición QR de A
d = det(A) Determinante de la matriz cuadrada A
E = rref(A) reducción a forma de escalera por _las de una matriz
rectangular A
U = chol(A) descomposición de Cholesky de una matriz definida positiva
P=pinv(A) pseudoinversa (o inversa de Moore-Penrose) de A

FUNCIONES PARA CALCULO DE VALORES PROPIOS Y SINGULARES

E=eig(A) devuelve el vector E con los valores propios de A


[U,S,V]=svd(A) descomposición de A en valores singulares: A = USV*
P=poly(X) 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
H=hess(A) forma Hessenberg de A
[U,S]=schur(A) forma de Schur de A. U es la matriz unitaria tal que A =USU*
[U,S]=rsf2csf(U,R) 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.
[U,S]=cdf2rdf(U,R) 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 ,


n
Donde ci k  (Fila i de A) (Columna j de B)= 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
De donde podemos ver que :
XA B
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

De donde podemos ver que :


Y  C A1
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 1 1


>> 20/4
ans = 5
>> 20/10
ans = 2
>> 20\10
ans = 0.5000
>>

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   4 2 6
      
 2 8 2  y    4 
o también x y z   2 8 10    8 4 0 
 6 10 3  z   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  B  bi j 
mn y mn
Entonces
A.* B  ai j  bi j 
mn

A. / B  ai j / bi j 
mn

A. ^ B  ai j j 
bi

mn

A. \ B  ai j \ bi j 
mn

A.^ k  ai j k


mn

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

-200

-400

-600

-800

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

Ejemplo: Evaluar y graficar la función y  x  5x , x   10,10


2

4 x  10
2

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 -5.0000 -
4.5000 -4.0000 -3.5000 -3.0000 -2.5000 -2.0000 -1.5000 -1.0000 -0.5000 0 0.5000 1.0000
1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 6.0000 6.5000 7.0000
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 -
0.0247 -0.0541 -0.0890 -0.1304 -0.1786 -0.2308 -0.2763 -0.2857 -0.2045 0 0.2500 0.4286
0.5132 0.5385 0.5357 0.5217 0.5042 0.4865 0.4698 0.4545 0.4408 0.4286 0.4176 0.4078
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.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 2.8284 3.0000 3.1623
>>

03 operaciones con arrays 32


03 OPERACIONES MATEMATICAS CON ARRAYS Lic. Amado Malca Villalobos

FUNCIONES PREDEFINIDAS PARA TRABAJAR CON ARRAYS


Función Descripción Ejemplo
mean(A) Retorna el valor >> A=[4 8 10;6 11 10;8 14 10]
medio del array A A = 4 8 10
6 11 10
8 14 10
>> mean(A)
ans = 6 11 10
C=max(A) Retorna el valor >> max(A)
máximo de un ans = 8 14 10
vector o matriz
[d,n]=max(A) Retorna el valor >> [d,n]=max(A)
máximo de una d = 8 14 10
matriz . por n= 3 3 1
columnas. n es un
vector de las
ubicaciones
C=min(A) Retorna el valor >> min(A)
[d,n]=min(A) máximo de un ans = 4 8 10
vector o matriz
sum(A) Suma los >> sum(A)
elementos del ans = 18 33 30
vector A
sort(A) Ordena los >> sort(A)
elementos del ans = 4 8 10
vector A 6 11 10
8 14 10
median(A) Devuelve la >> median(A)
mediana de los ans = 6 11 10
elementos del
vector A
std(A) Devuelve la >> std(A)
desviación ans = 2 3 0
estándar de los
elementos del
vector A
det(A) Devuelve el >> det(A)
determinante de la ans = 0
matriz cuadrada A
dot(u,v) Calcula el >> u=[1 4 7]
producto escalar >> v=[5 8 2]
de los vectores u >> dot(u,v)
y v. ans = 51

>> A=[4 8 10;6 1 10;8 14 10];


>> dot(A,A)
ans = 116 261 300
cross(u,v) Calcula el >> cross(u,v)
producto cruz de ans = -48 33 -12
los vectores u y
v en R3.
inv(A) Devuelve la >> A=[4 8 1;6 1 1;8 14 1]
inversa de la A= 4 8 1
matriz cuadrada A 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 Lic. Amado Malca Villalobos

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.
(b- Genera una fila de n
a)*rand(1,n)+a 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 Ejecucucion
% programa que resuelve una >> solcuad
ecuación cuadrática sol_1 = 1.2899

04 archivos .m 37
04. Archivos m. Lic. Amado Malca Villalobos

% 5x2-8x+2=0 sol_2 = 0.3101


>> help solcuad
sol_1=(8+sqrt(8^2-4*5*2))/10 programa que resuelve una
sol_2=(8-sqrt(8^2-4*5*2))/10 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 Ejecucucion
function y=fun(x) >> fun(3),fun(1),fun(7),fun(13)
ans = 34
% programa que calcula el valor ans = 0
de ans = 438
% una función dado el valor de x. ans = 2604
>>
y=x.^3+3*x.^2-8*x+4; >> 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

-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:

' mensaje que se muestra


nombre _ var iable input
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:
disp fprintf
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 cubo'),disp(P)
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
>>

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
0 Añade ceros si el numero es más pequeño que
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)
E Notación exponencial en mayúsculas (ej:
2.456E+002)
f Notación de punto fijo (ej: 245.6)
g Representación en formato corto de e o f
G Representación en formato corto de E o f
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. Lic. Amado Malca Villalobos

>> ej5
w=
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000
8.0000
1.0000 4.0000 9.0000 16.0000 25.0000 36.0000 49.0000
64.0000
1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458
2.8284
el numero 1 su cuadrado 1 su raíz 1.000000
el numero 2 su cuadrado 4 su raíz 1.414214
el numero 3 su cuadrado 9 su raíz 1.732051
el numero 4 su cuadrado 16 su raíz 2.000000
el numero 5 su cuadrado 25 su raíz 2.236068
el numero 6 su cuadrado 36 su raíz 2.449490
el numero 7 su cuadrado 49 su raíz 2.645751
el numero 8 su cuadrado 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. Lic. Amado Malca Villalobos

fprintf('n=%2.6g sqrt(n)=%1.10g\n',z)
fprintf('n=%2.6g 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 through 10
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000
8.0000 9.0000 10.0000

1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458


2.8284 3.0000 3.1623

Un entero es 1 y su raíz cuadrada es 1


Un entero es 2 y su raíz cuadrada es 1.41421
Un entero es 3 y su raíz cuadrada es 1.73205
Un entero es 4 y su raíz cuadrada es 2
Un entero es 5 y su raíz cuadrada es 2.23607
Un entero es 6 y su raíz cuadrada es 2.44949
Un entero es 7 y su raíz cuadrada es 2.64575
Un entero es 8 y su raíz cuadrada es 2.82843
Un entero es 9 y su raíz cuadrada es 3
Un entero es 10 y su raíz cuadrada es 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=1 n^3=1


n=2 sqrt(n)=1.41421 n^2=4 n^3=8

04 archivos .m 51
04. Archivos m. Lic. Amado Malca Villalobos

n=3 sqrt(n)=1.73205 n^2=9 n^3=27


n=4 sqrt(n)=2 n^2=16 n^3=64
n=5 sqrt(n)=2.23607 n^2=25 n^3=125
n=6 sqrt(n)=2.44949 n^2=36 n^3=216
n=7 sqrt(n)=2.64575 n^2=49 n^3=343
n=8 sqrt(n)=2.82843 n^2=64 n^3=512
n=9 sqrt(n)=3 n^2=81 n^3=729
n=10 sqrt(n)=3.16228 n^2=100 n^3=1000

z = 1.0e+006 *

1.0006 1.0006 1.0006 1.0006 1.0006 1.0006


0.0010 0.0010 0.0010 0.0010 0.0010 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. Lic. Amado Malca Villalobos

[estado] 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 los elementos
de un vector x
% y dibuja dicho vector, ploteando
% Sintaxis : promedio(x) donde x es el
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 45 78 3 2 9
>> promedio(x)
ans = 15.7500
>>
La grafica de los valores de x
80

70

60

50

40

30

20

10

0
0 2 4 6 8 10 12

04 archivos .m 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 Grafica de MatLab


>> x=1:12 150

x= 1 2 3 4 5 6 7 8
9 10 11 12 100

>> y=x.^2
y = 1 4 9 16 25 36 49
64 81 100 121 144 50

>> plot(x,y)
>> 0
0 2 4 6 8 10 12

05 gráficos 2D 60
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 Grafica de MatLab


>> x=[1 7 2 4 6 1] 7

x= 1 7 2 4 6 1 6.5

>> y=[5 5 2 7 2 5] 5.5

y= 5 5 2 7 2 5 4.5
5

>> plot(x,y) 4

>> plot(x,y,'r:d') 3.5

>> plot(x,y,'k+--') 2.5

>> 2
1 2 3 4 5 6 7

En la ventana de comandos de MatLab Grafica de MatLab


>> x=[1 7 2 4 6 1] 7

x= 1 7 2 4 6 1 6.5

>> y=[5 5 2 7 2 5] 5.5

y= 5 5 2 7 2 5 5

4.5

>> plot(x,y) 4

>> plot(x,y,'r:d') 3.5

>> plot(x,y,'k+--') 2.5

>> 2
1 2 3 4 5 6 7

En la ventana de comandos de MatLab Grafica de MatLab


>> x=[1 7 2 4 6 1] 7

6.5
x= 1 7 2 4 6 1 6

>> y=[5 5 2 7 2 5] 5.5

5
y= 5 5 2 7 2 5 4.5

>> plot(x,y) 4

3.5

>> plot(x,y,'r:d') 3

>> plot(x,y,'k+--') 2.5

>> 1 2 3 4 5 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.


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]; 32

>> y=[21 22.4 27 28 30 32 31 30 27 26 24 20]; 30

>> plot(x,y)
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]; 32

>> y=[21 22.4 27 28 30 32 31 30 27 26 24 20];


30
>> plot(x,y)
>> grid 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
El comando: title. title(' titulo ')
Para el rotulo del eje de las abscisas
El comando: xlabel xlabel(' titulo ')
Para el rotulo del eje de las ordenadas
El comando: ylabel ylabel(' titulo ')
En la ventana de comandos de MatLab Grafica de MatLab
>> x=[2 4 6 8 10 12 14 16 18 20 22 24]; Registro diario de la temperatura en la estación meteorológica de la FACFYM-UNPRG
32
>> y=[21 22.4 27 28 30 32 31 30 27 26 24 20];
>> plot(x,y) 30

>> grid
28
>> title('Registro diario de la temperatura en la
temperatura

estación meteorológica de la FACFYM- 26

UNPRG')
24
>> xlabel('horas')
>> ylabel('temperatura') 22

20
0 5 10 15 20 25
horas

05 gráficos 2D 62
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos

Ejemplo 01: Para graficar y  f  x   e0.4x sen  x  en el intervalo [0,10].

En la ventana de comandos de Grafica de MatLab


MatLab
>> x=0:0.05:10; 0.6
Tobogan

>> y=sin(x).*exp(-0.4*x); 0.5


>> plot(x,y) 0.4
>> grid
0.3
>> title('grafico de ejemplo')

eje y
>> xlabel('eje x') 0.2

>> ylabel('eje y') 0.1

-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 o
asterisco * punto .
cuadrado s diamante d
Estrella de cinco p Estrella de seis h
puntas puntas

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

-2

-4

-6
1 1.5 2 2.5 3 3.5 4 4.5 5

Ejemplo : Veamos algunos ejemplos adicionales sobre estas opciones.

05 gráficos 2D 65
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 0
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 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 0
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 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 0
1 2 3 4 5 6 7 8 9 10 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.

ba
Así tenemos que en un intervalo [a,b], el cual se divide en n  1  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 3.8000 4.1000 4.4000 4.7000
5.0000
>> y=2:0.3:5
y = 2.0000 2.3000 2.6000 2.9000 3.2000 3.5000 3.8000 4.1000 4.4000 4.7000
5.0000

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
4
x 10 grafico con linea verde, en vez de línea va **
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-20 -15 -10 -5 0 5 10 15 20

05 gráficos 2D 67
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 Grafica de MatLab
>> x=-2:0.1:4; 10

>> y=2*x-3;z=x.^2-6;w=sin(x); 8

>> plot(x,y,x,z,x,w) 6

>> 4

-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 Grafica de MatLab
>> x=-2:0.1:4; 10

>> y=2*x-3;z=x.^2-6;w=sin(x); 8

>> plot(x,y,':r',x,z,'--k',x,w,'-g') 6

>> 4

-2

-4

-6

-8
-2 -1 0 1 2 3 4

Ahora graficaremos una cubica, así como su derivada y la segunda derivada.


05 gráficos 2D 68
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 Grafica de MatLab
>> x=0:0.1:10; 80

>> y=x.^3-15*x.^2+66*x-80; 60

>> dy=3*x.^2-30*x+66; 40

>> ddy=6*x-ç30; 20

>> plot(x,y,'-r',x,dy,':k',x,ddy,'--g') 0

>> grid -20

>> -40

-60

-80
0 2 4 6 8 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 -80
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10

80 80

60 60

40 40

20 20

0 0

-20 -20

-40 -40

-60 -60

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

05 gráficos 2D 69
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
>> x=0:0.005:10; Grafico de y=Seno(x) y z=Coseno(x) en [0,10]
1
>> y=sin(x).*exp(-0.4*x);
>> x=0:0.005:10; 0.8
>> y=sin(x); 0.6
>> plot(x,y)
0.4
>> hold on

z( --- )
>> z=cos(x); 0.2

>> plot(x,z,'--') 0

y( ___ )
>> grid
-0.2
>> xlabel('eje x')
>> ylabel('y( ___ ) z( --- )') -0.4

>> title('Grafico de y=Seno(x) y -0.6


z=Coseno(x) en [0,10]')
-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 Grafica de MatLab
>> x=0:0.1:10; 80

>> y=x.^3-15*x.^2+66*x-80; 60

>> dy=3*x.^2-30*x+66;
40
>> ddy=6*x-30;
20
>> plot(x,y)
>> line(x,dy) 0

>> line(x,ddy) -20

>> grid -40

>> -60

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

En la ventana de comandos de MatLab Grafica de MatLab


>> x=0:0.5:10; 80
Ejemplo 10

>> y=x.^3-15*x.^2+66*x-80; 60

>> dy=3*x.^2-30*x+66; 40

>> ddy=6*x-30; 20

>> plot(x,y) 0

>> line(x,dy,'linestyle',':','color','g','marker','o') -20

>> line(x,ddy,'linestyle','-- -40

','color','r','marker','*') -60

>> grid -80


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

05 gráficos 2D 70
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 Formato Explicación


xlabel xlabel(‘texto’) Agrega una etiqueta al eje x (eje de abscisas)
ylabel ylabel(‘texto’) Agrega una etiqueta al eje y (eje de ordenadas)
title title(‘texto’) Agrega una titulo al grafico en la parte superior
text text(x,y,’texto’) Permite colocar una etiqueta en el punto (x,y)
Permite colocar una etiqueta en un lugar especificada
gtext gtext(‘texto’)
por el usuario con el mouse.
legend(’cadena1’,’cadena2’,….. Posibles valores de posición de
legend
,’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 Efecto sobre el texto Subíndice


\bf Negrita _6
\it Italica _{texto}
\rm Normal Superíndice
\fontname{fuente} Cambia la fuente ^6
Cambia el tamaño de ^{texto}
\fontsize{tamaño}
letra

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"
80

60 f(x)=x.3-15*x.2+66*x-80

40
subindice superindice

20 Primera Derivada
Eje de las yes

-20 Segunda Derivada


-40
Funcion
-60 Funcion Primera derivada
Segunda Derivada
-80
0 1 2 3 4 5 6 7 8 9 10
Eje de las equis

Caracteres Griegos
Caráct Letr
Letra Letra
Caráct Caráct Letra Caráct er a
grieg grieg
er er griega er Grie
a a
ga
\alpha  \Alpha  \Phi 
\beta  \Beta  \Delta 
\gam  \Gam \Gam
ma ma ma 
\Lamb
\theta  \ 
da
\Omeg
\pi  \ 
a
\sigm
 \ \Sigma 
a

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

0.8 10

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 -5 0 5 10 15

En la ventana de comandos de MatLab Grafica de MatLab


x1=[-15:0.1:15]; x1=[-15:0.1:15];
x2=[-10:0.1:20]; x2=[-10:0.1:20];
y=sin(x1); y=sin(x1);
z=cos(x2); z=cos(x2);
plot(x1,y,x2,z) plot(x1,y,x2,z)
grid on 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

-0.8 -8

-1 -10
-15 -10 -5 0 5 10 15 20 -10 -5 0 5 10 15

El comando grid:
Comando Explicación
grid on Añade una cuadricula a la representación grafica
grid off Elimina la cuadricula de la representación grafica

05 gráficos 2D 73
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 radio 3
radio 2
radio 1
-1.5
-3 -2 -1 0 1 2 3

05 gráficos 2D 74
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)
>> grid 20

>> axis([-10 10 -40 40]) 10

>> 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
>> x=-3*pi:0.001:3*pi; 1
x 10
4
f(x)=tan(x)

>> y=tan(x);
0
>> plot(x,y)
>> grid -1

>> title('f(x)=tan(x)') -2

>> -3

-4

-5

-6
-10 -5 0 5 10

05 gráficos 2D 75
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; 10
f(x)=tan(x)

>> y=tan(x); 8
>> plot(x,y) 6
>> grid 4
>> title('f(x)=tan(x)') 2
>> axis([-3*pi 3*pi -10 10]) 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) y(t)=sin(2t), t en
[0,8pi]')
xlabel('x=x(t)')
ylabel('y=y(t)')
x(t)=sin(3t)+t/(20pi) y(t)=sin(2t), t en [0,8pi]
1

0.8

0.6

0.4

0.2
y=y(t)

-0.2

-0.4

-0.6

-0.8

-1
-1 -0.5 0 0.5 1 1.5
x=x(t)

05 gráficos 2D 76
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos
Ejemplo: Ahora la función x 2/3 y 2/3
1
En la ventana de comandos de MatLab Grafica de MatLab
t=0:pi/20:2*pi; 1
x2/3 + y2/3 =1

x=(cos(t)).^3;y=(sin(t)).^3; 0.8

plot(x,y) 0.6

grid 0.4

title('x^2/3 + y^2/3 =1'); 0.2

-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; 20
Epicicloide

x=15*cos(t)-3*cos(5*t); 15

y=15*sin(t)-3*sin(5*t); 10
x1=12*cos(t); 5
y1=12*sin(t);
0
plot(x,y,x1,y1)
-5
grid
title('Epicicloide') -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 x, y
y
r r cos , sen

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 6cos(5 ) .


En la ventana de comandos de MatLab Grafica de MatLab
Grafica en Coord. Polares
90 6
t=0:0.05:pi+0.01; 120 60

r=6*cos(5*t); 4
150 30
polar(t,r) 2

title('Grafica en Coord. Polares')


180 0
grid
210 330

240 300
270

Ejemplo: graficando una cardioide: r 12 20cos( ) .


En la ventana de comandos de MatLab Grafica de MatLab
t=0:pi/1000:4*pi; r=20cos t +12
90 40
r=20*cos(t)+12; 120 60
30
polar(t,r)
150 20 30
grid 10
title('r=20cos t +12')
180 0

210 330

240 300
270

Ejemplo: graficando un caracol: r 4 2sen ( ) .


En la ventana de comandos de MatLab Grafica de MatLab
t=0:pi/1000:4*pi; r=4-2sin t
90 6
r=4-2*sin(t); 120 60

polar(t,r) 150
4
30
grid 2

title('r=4-2sin t ')
180 0

210 330

240 300
270

05 gráficos 2D 78
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos

4
Ejemplo: graficando una elipse en coordenadas polares: r
2 cos(t ) .
En la ventana de comandos de MatLab Grafica de MatLab
t=0:0.1:2*pi; r=4/(2-cos t)
90 4
r=4./(2-cos(t)); 120
3
60

polar(t,r) 150 2 30

grid 1

title('r=4/(2-cos t)') 180 0

210 330

240 300
270

4
Ejemplo: graficando una parábola en forma polar: r
1 cos(t ) .
En la ventana de comandos de MatLab Grafica de MatLab
t=0:0.1:2*pi; r=4/(1-cos t)
90 1500
120 60
r=4./(1-cos(t)); 1000

polar(t,r) 150
500
30

grid
180 0
title('r=4/(1-cos t)')
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 . 2x 24, x
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
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos
En la ventana de comandos de MatLab Grafica de MatLab
x=-10:0.001:10; 10000

f=x.^4-2*x.^3-23*x.^2-2*x-24;
8000
plot(x,f)
grid 6000

4000

2000

-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; 1600

f=x.^4-2*x.^3-23*x.^2-2*x-24; 1400

plot(x,f) 1200

1000
grid 800

600

400

200

-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 Resultado en MatLab
x = -2.6963 x = 4.2400
fval = -45.7604 fval = -227.2207
Hallando el mínimo de “-f”’, en [-2,2] Resultado en MatLab
f='-x^4+2*x^3+23*x^2+2*x-24'; x = -0.0437
[x,fval] = fminbnd(f,-2,2) fval = -24.0436

05 gráficos 2D 80
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos
10 x
Ejemplo: Considerando la función f x ,x 20,20
x2 1
En la ventana de comandos de MatLab Grafica de MatLab
x=-20:0.01:20; 10

y=(10*x)./(x.^2+1); 8

6
plot(x,y) 4

axis([-20 20 -10 10]) 2

grid 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 Resultado en MatLab
x = -1.0000 x = 1.0000
fval = -5.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 Grafica de MatLab


clf 10

x=-20:0.01:20; 8

y=(10*x)./(x.^2+1); 6 Máximo en x=1

plot(x,y) 4

axis([-20 20 -10 10]) 2

grid 0

-2
gtext('Máximo en x=1')
-4
gtext('Mínimo en x =-1') -6
Mínimo en x =-1

-8

-10
-20 -15 -10 -5 0 5 10 15 20

05 gráficos 2D 81
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.

Ejemplo: Graficando ahora la función f x x4 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

0 -2000

-2000 -4000
-10 -5 0 5 10 -10 -5 0 5 10

Segunda derivada Tercera derivada


1500 400

1000 200

500 0

0 -200

-500 -400
-10 -5 0 5 10 -10 -5 0 5 10

05 gráficos 2D 82
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos
Ejemplo: Graficando ahora la función cubica f x x3 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


1000 300

500 200
dy

0 100
y

-500 0

-1000 -100
0 10 20 0 10 20
tiempo tiempo
Segunda derivada de y Tercera derivada de y
100 7

50 6.5
dddy
ddy

0 6

-50 5.5

-100 5
0 10 20 0 10 20
tiempo tiempo

05 gráficos 2D 83
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 sen x exp x , x, y 3,10 8,1

En la ventana de comandos de MatLab Grafica de MatLab


fplot('sin(x)*exp(-x)',[- 1
montaña rusa

3 10 -8 1]) 0
grid -1
xlabel('eje de las x')
-2
ylabel('eje de las y')
eje de las y

title('montaña rusa') -3

-4

-5

-6

-7

-8
-2 0 2 4 6 8 10
eje de las x

Ejemplo: Graficando la función: y f x sen 6 x exp 0.25x , x 2,4


En la ventana de comandos de MatLab Grafica de MatLab
fplot('exp(- 2
Saltinbanqui

0.25*x)*sin(6*x)',[-2,4])
grid 1.5

xlabel('eje de las x') 1

ylabel('eje de las y')


eje de las y

0.5
title('Saltinbanqui')
0

-0.5

-1

-1.5
-2 -1 0 1 2 3 4
eje de las x

05 gráficos 2D 84
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

150 2 30

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

0.5

-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

0
y

-1

-2

-3

-4
-4 -3 -2 -1 0 1 2 3 4
x

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 0 1 2 3 4 5
>> v=2*u
v = -10 -8 -6 -4 -2 0 2 4 6 8 10
>> quiver(u,v)
>>
3.5 4

2.5 3.5

2
3
1.5

1 2.5

0.5
2
0

-0.5
1.5
-1

-1.5 1
-2 0 2 4 6 8 10 12 14 0 2 4 6 8 10 12

Grafico 1 Grafico 2
>> u=-5:5
u = -5 -4 -3 -2 -1 0 1 2 3 4 5
>> v=u.^2
v = 25 16 9 4 1 0 1 4 9 16 25
>> quiver(u,v)
>>
Ahora veremos una variante de este comando:
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

0.5

-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 -3
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

>> quiver(x,y,u,v,1) % escala 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
-1.5

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

Tambien se puede midificar el color:


>> quiver(x,y,u,v,0.5,'color','r') >> 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

-1.5 -1.5
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

05 gráficos 2D 88
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

0.5

-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.
(b- Genera 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

25

20
ventas (en millones)

15

10

0
1988 1989 1990 1991 1992 1993 1994
años

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

1993

ventas (en millones) 1992

1991

1990

1989

1988

0 5 10 15 20 25 30
años

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

22
ventas (en millones)

20

18

16

14

12

10

8
1988 1989 1990 1991 1992 1993 1994
años

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

25

20
ventas (en millones)

15

10

0
1988 1989 1990 1991 1992 1993 1994
años

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

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 hist y % n indica el número de puntos por cada intervalo
n hist y, numero _ int ervalos
n hist y, x
[n xout ] hist y % xout representa los centros de los intervalos.
[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

Numero de dias
4

0
45 50 55 60 65 70 75 80 85 90 95
Temperatura (ºF)

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

5
Numero de dias

0
45 50 55 60 65 70 75 80 85 90 95
Temperatura (ºF)

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

7
Numero de dias

0
45 55 65 75 85 95
Temperatura (ºF)

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

7
Numero de dias

0
45 55 65 75 85 95
Temperatura (ºF)

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

7
Numero de dias

0
45 55 65 75 85 95
Temperatura (ºF)

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)

1
2
3
4
5
6 3
7 2
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

60
z

40

20

0
1
0.5 20
0 15
10
-0.5 5
y -1 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

60
Eje z

40

20

0
1
0.5 20
0 15
10
-0.5 5
Eje y -1 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%

12% 13%

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.

x FUNCIÓN y  f  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 Ejecución en la ventana de comandos de
MatLab
function y =funcuad(x) >> y=funcuad(1),z=funcuad(2),w=funcuad(3)
y= 1
% Cálculo del valor de una
función cuadrática
z = 16
% w = 37
% El argumento de entrada es: >> y=funcuad([1,2,3])
% x: un numero real y = 1 16 37
% >> y=funcuad([1;2;3])
% El argumento de salida es:
y=
% y = 3x^2+6x-8, tambien real
1
y=3*x.^2+6*x-8; 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

-50
-10 -5 0 5 10

06 archivos de función 98
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

200
ALTURA (m)

150

100

50

0
0 100 200 300 400 500 600
DISTANCIA (m)

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', ,'arg n ' 

y  f  x   3x 2  6 x  8
Ejemplo: Considerando la función cuadrática:

>> 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

4.5

3.5

2.5

1.5

1
0 1 2 3 4 5 6

08 polinomios 104
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 p 2 5
q x 6 x3 7 x2 2 q 6 7 0 2
r x 4 x5 6x2 8 r 4 0 0 6 0 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.

Ejemplo: Dado el polinomio p x x5 12,1x 4 40,59 x3 17,015x 2 71,95x 35,88


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

-50

-100

-150

-200
-2 -1 0 1 2 3 4 5 6 7

08 polinomios 105
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 x x4 1


>> p=[1 0 0 0 -1]
p= 1 0 0 0 -1
>> r=roots(p)
r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
>>

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 y q x x2 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 Donde k x p' 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 p( x) q( x) '
d x

Ejemplo: Considere los polinomios:


p x 16 x6 12 x 2 5x 13 y q x 5x2 18x 23

>> 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 573 -602 349
>> [n,d]=polyder(p,q)
n= 320 1440 -2208 0 0 241 -682 -119
d = 25 180 94 -828 529
>>

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.
La teoría matemática nos dice que, dados n puntos del tipo xi , yi es posible hallar un
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] >> curvatemp
T=[28 28 29 30 31 32 34 34 34 33 x = 1 2 3 4 5 6 7 8 9 10
31 30] 11 12
p=polyfit(x,T,4) T = 28 28 29 30 31 32 34 34 34
t=1:0.01:12; 33 31 30
w=polyval(p,t); p = 0.002585955710956 -0.092875874125877
plot(x,T,' *') 0.939284673659698 -2.356861888111967
hold on 29.613636363636434
plot(t,w)
grid
hold on

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)

El modelo matemático es: yb 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)

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
El modelo matemático es: y , convertible a un polinomio lineal: mx b
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
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 0 1 2 3 4 5
y 1.0000 -0.6242 -1.4707 3.2406 -0.7366 -6.3717
x 6 7 8 9 10
y 9.6120 2.3363 -24.5438 25.3848 23.5321

Solución:
Programa: ajustecurv.m Ejecución en MatLab
t =[0 1 2 3 4 5 6 7 8 9 10] >> ajustecur
w = [6.00 4.83 3.70 3.15 2.41 t= 0 1 2 3 4 5 6 7 8 9
1.83 1.49 1.21 0.96 0.73 0.64] 10
plot(x,y,' *') w = 6.0000 4.8300 3.7000 3.1500
p=polyfit(t,log(w),1); 2.4100 1.8300 1.4900 1.2100 0.9600
m=p(1) 0.7300 0.6400
b=exp(p(2)) m = -0.2290
tm=0:0.1:10; b = 5.9889
wm=b*exp(m*tm); >>
plot(t,w,' *',tm,wm)

08 polinomios 110
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

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 -8 -8
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5

08 polinomios 112
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos

CAPITULO 09: GRAFICOS TRIDIMENSIONALES


Los graficos en 3D, son aquellas expresiones de la forma:
3
E x, y , z 0, x, y , z D
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 x2 y2 2 z , la cual puede ser parametrizada mediante las ecuaciones:
x t sen 2t
y t cos 2t 0 t 6
z 0,5t
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; 10

plot3(x,y,z,'r','LineWidth',1)
8
grid on
xlabel('x'); 6

ylabel('y');
z

4
zlabel('z');
2

0
5 5

0 0

-5 -5
y x

Ejemplo 02: Graficar la espiral logarítmica: f (t ) ( Aeb t cos(t ), Aeb t sen(t ), C t ), t R


Donde f (t ) (e0.2t sin(0.8 t ), e0.2t cos(0.8 t ),t ), t [0,20]

Curva3d02.m En MatLab
clear,clf % borra curvas >> curva3d02
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” 20
x=r.*sin(th); % coordenada “y”
y=r.*cos(th); % coordenada “z” 15

plot3(x,y,z) % Grafica la función 10


z

grid
xlabel('x');ylabel('y');zlabel('z'); 5

0
100

50 40
20
0
0 -20
-40
y -50 -60
x

09 gráficos en 3D 113
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 2 4 cos t cos t
x 2 4 cos t sin t 0 t 20
2
z t

Curva3d03.m En MatLab
t=0:0.1:200; >> curva3d03
x=(2+cos(t)).*cos(t);
y=(2+cos(t)).*sin(t);
z=t.^2; x 10
4

plot3(x,y,z,'r','LineWidth',1) 4

grid on
3
xlabel('x');
ylabel('y'); 2

z
zlabel('z');
1

0
4
2 3
0 2
1
-2 0
y -4 -1
x

Ejemplo 04: Curva que describe el movimiento de un objeto sobre un toro:


x A cos a t B cos b t
y A sen a t 0 t 100
z B sen b t
Curva3d04.m En MatLab
function w=curva3d04(A,B,a,b) >> curva3d04(1,2,2,1)
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); 2

plot3(x,y,z,'r','LineWidth',1)
1
grid on
xlabel('x'); 0
z

ylabel('y');
-1
zlabel('z');
-2
1
0.5 3
2
0 1
-0.5 0
-1
y -1 -2
x

>> curva3d04(3,2,0.2,1) >> curva3d04(5,17,0.2,0.7)

20
2

10
1

0
z

0
z

-10
-1
-20
5
-2 40
4 20
0
2 5 0
-20
0 -5
0 y -40
x
-2
y -4 -5
x

09 gráficos en 3D 114
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.
x a
2
y2 a2 x2 y2 z2 4a 2
x a 1 cos t
Una parametrización de esta curva es:
y a sen t 2 t 2
z 2a sen t / 2

Curva3d05.m En MatLab
t=-2*pi:0.1:2*pi; >> curva3d05
x=1+cos(t);
y=sin(t);
z=2*sin(t/2);
plot3(x,y,z,'r','LineWidth',1) 2

grid on
1
xlabel('x');
ylabel('y'); 0

z
zlabel('z');
-1

-2
1
0.5 2
0 1.5
1
-0.5 0.5
y -1 0
x

Ejemplo 06: Ahora veremos una espiral esférica:


x cos t cos 24t
y cos t sen 24t 0 t 4
z sen t
Curva3d06.m En MatLab
t=0:0.1:2*pi; >> curva3d06
x=cos(t).*cos(24*t);
y=cos(t).*sin(24*t);
z=sin(t);
plot3(x,y,z,'r','LineWidth' 1

,1) 0.5

grid on
xlabel('x'); 0
z

ylabel('y'); -0.5

zlabel('z');
-1
1
0.5 1
0 0.5
0
-0.5 -0.5
y -1 -1
x

09 gráficos en 3D 115
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos

GRAFICA DE UNA CURVA EN R3, Y SUS VECTORES TANGENTES.


2
Ejemplo01: Graficar x y2 2 z , la cual puede ser parametrizada mediante las ecuaciones:
1
x' sen 2t 2 t cos 2t
x t sen 2t 2 t
Derivando: 1
y t cos 2t 0 t 6 y' cos 2t 2 tsen 2t 0 t 6
z 0,5t 2 t
z' 0,5
Para graficar un vector tangente en una curva tridimensional, se usa el comando: quiver3
Solución:

Programa: grafico3d.m Ejecucion en MatLab


>> grafico3d
t=0:0.1:6*pi; Espiral con sus vectores tangentes

x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t); 10

z=0.5*t; 8

plot3(x,y,z,'r','LineWidth',1) 6

Eje z
hold on 4

xlabel('Eje x')
2

0
ylabel('Eje y') 5
5
zlabel('Eje z') 0

-5 0

title('Espiral con sus vectores Eje y -10 -5


Eje x
tangentes')
t2=0:6*pi; Espiral con sus vectores tangentes
x2=sqrt(t2).*sin(2*t2); 6

y2=sqrt(t2).*cos(2*t2); 4
z2=0.5*t2;
u2=sin(2*t2)./(2*sqrt(t2))+2*sq 2

rt(t2).*cos(2*t2);
Eje y

0
v2=cos(2*t2)./(2*sqrt(t2))-
2*sqrt(t2).*sin(2*t2); -2

w2=0.5*ones(1,length(z2));
-4
quiver3(x2,y2,z2,u2,v2,w2,1)
grid -6
-5 0 5
Eje x

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
8

6
6
Eje z
Eje z

4
4

2 2

0 0
5 5
5 0 5
0

-5 0 -5 0

Eje y -10 -5 Eje y -10 -5


Eje x Eje x

09 gráficos en 3D 116
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos

Programa: grafico3d.m Ejecucion en MatLab


Linea punteada y color negro Linea punteada y color cyan.
t=0:0.1:6*pi; t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t); x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t); y=sqrt(t).*cos(2*t);
z=0.5*t; z=0.5*t;
plot3(x,y,z,'r','LineWidth',1) plot3(x,y,z,'r','LineWidth',1)
hold on hold on
xlabel('Eje x') xlabel('Eje x')
ylabel('Eje y') ylabel('Eje y')
zlabel('Eje z') zlabel('Eje z')
title('Espiral con sus vectores title('Espiral con sus vectores
tangentes') tangentes')
t2=0:6*pi; t2=0:6*pi;
x2=sqrt(t2).*sin(2*t2); x2=sqrt(t2).*sin(2*t2);
y2=sqrt(t2).*cos(2*t2); y2=sqrt(t2).*cos(2*t2);
z2=0.5*t2; z2=0.5*t2;
u2=sin(2*t2)./(2*sqrt(t2))+2*sqrt(t u2=sin(2*t2)./(2*sqrt(t2))+2*sqrt(t2)
2).*cos(2*t2); .*cos(2*t2);
v2=cos(2*t2)./(2*sqrt(t2))- v2=cos(2*t2)./(2*sqrt(t2))-
2*sqrt(t2).*sin(2*t2); 2*sqrt(t2).*sin(2*t2);
w2=0.5*ones(1,length(z2)); w2=0.5*ones(1,length(z2));
h=quiver3(x2,y2,z2,u2,v2,w2,1); h=quiver3(x2,y2,z2,u2,v2,w2,1);
set(h,'LineStyle',':','Color','k'); set
grid (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 1 xn
Con el comando en MatLab: meshgrid
X ,Y meshgrid x, y
Programa: superficier3.m En MatLab
x=1:1:5; >> superficier3
y=-4:1:3; X= 1 2 3 4 5
1 2 3 4 5
[X,Y]=meshgrid(x,y)
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
>>

Calculo del valor z en cada punto de la rejilla


El siguiente paso es evaluar la función en cada punto de esta malla
Ejemplo con la función: z xy 2
2
x y2

09 gráficos en 3D 118
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Programa: superficier3.m En MatLab
x=1:1:5; >> superficier3
y=-4:1:3; X=
1 2 3 4 5
[X,Y]=meshgrid(x,y)
1 2 3 4 5
z=X.*Y.^2./(X.^2+Y.^2) 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 2.0000 1.9512
0.9000 1.3846 1.5000 1.4400 1.3235
0.8000 1.0000 0.9231 0.8000 0.6897
0.5000 0.4000 0.3000 0.2353 0.1923
0 0 0 0 0
0.5000 0.4000 0.3000 0.2353 0.1923
0.8000 1.0000 0.9231 0.8000 0.6897
0.9000 1.3846 1.5000 1.4400 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 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);
mesh(X,Y,Z) surf(X,Y,Z)
Grafico asociado Grafico asociado

2
2

1.5
1.5
1
1
0.5

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

09 gráficos en 3D 119
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 C [1 0 0] Rojo C [0 1 0] Verde C [0 0 1] Azul


C [1 1 0] Amarillo C [1 0 1] Magenta C [0.5 0.5 0.5] Gris
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
4
2 5
2 5
0 4
3 0 4
-2 2 3
-2 2
-4 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 surf Z
2 2
Ejemplo: Graficar la función: z 1,8 1,5 x y
sen x cos 0,5 y en [-3, 3] x [-3, 3].
Solucion: Graficando la superficie en formato malla.
Programa: malla02.m Programa: malla02.m
x=-3:0.1:3; Altibajos

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);
mesh(X,Y,Z)
Eje z

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
4

title('Altibajos') 2
2
4
0
0
-2 -2
Eje y -4 -4
Eje x

09 gráficos en 3D 120
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Solución: Graficando la superficie en formato superficie.
Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
surf(X,Y,Z)

Eje z
0

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
80

title('Altibajos') 60
60
80
40
40
20 20
Eje y 0 0
Eje x

Solución: Grafico de malla con cortina


Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
meshz(X,Y,Z)
Eje z

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
4

title('Altibajos') 2
2
4
0
0
-2 -2
Eje y -4 -4
Eje x

Solución: Grafico de malla con contorno


Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
meshc(X,Y,Z)
Eje z

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
4

title('Altibajos') 2
2
4
0
0
-2 -2
Eje y -4 -4
Eje x

Grafico de superficie con contorno


Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
surfc(X,Y,Z)
Eje z

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
80

title('Altibajos') 60
60
80
40
40
20 20
Eje y 0 0
Eje x

09 gráficos en 3D 121
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
Grafico de superficie con alumbrado
Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
surfl(X,Y,Z)

Eje z
0

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
80

title('Altibajos') 60
60
80
40
40
20 20
Eje y 0 0
Eje x

Grafico de cascada
Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
waterfall(X,Y,Z)
Eje z

xlabel('Eje x') -0.2


ylabel('Eje y')
zlabel('Eje z') -0.4
4

title('Altibajos') 2
2
4
0
0
-2 -2
Eje y -4 -4
Eje x

Grafico de contorno 3D
Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; Altibajos

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);
Contour3(X,Y,Z,15) % el 15,
Eje z

% indica el numero de -0.2


% niveles, opcional
xlabel('Eje x') -0.4

ylabel('Eje y') 2

0 1
2
3

zlabel('Eje z') -2 -2
-1
0

title('Altibajos') Eje y -3
Eje x

Grafico de contorno 2D. Dibuja proyecciones de niveles de contorno sobre el plano xy


Programa: superficie02.m Programa: superficie02.m
x=-3:0.1:3; 3
Altibajos

y=-3:0.1:3;
[X,Y]=meshgrid(x,y); 2

E=1.8.^(-1.5*sqrt(X.^2+Y.^2));
Z=E.*sin(X).*cos(0.5*Y); 1

Contour(X,Y,Z,15) % el 15,
Eje y

0
% indica el numero de
% niveles, opcional -1

xlabel('Eje x')
ylabel('Eje y') -2

zlabel('Eje z') -3
title('Altibajos') -3 -2 -1 0
Eje x
1 2 3

09 gráficos en 3D 122
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 50 x 2 y2 , z 50 x 2 y2 , y 50 z 2 x2 , y 50 z 2 x2 , x 50 y2 z2 ,
x 50 y2 z 2 , en el dominio 5,5 5,5
Programa: 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

5
Eje z

-5

-10
10
5 10
0 5
0
-5 -5
Eje y -10 -10
Eje x

09 gráficos en 3D 123
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)

0.5

-0.5

-1
1
0.5 1
0 0.5
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

0.8

0.6

0.4

0.2

0
4
2 4
0 2
0
-2
-2
-4 -4

09 gráficos en 3D 124

También podría gustarte