Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
01 MatLab básico 2
01 – PRIMEROS PASOS CON MATLAB Lic. Amado Malca Villalobos
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
01 MatLab básico 5
01 – PRIMEROS PASOS CON MATLAB Lic. Amado Malca Villalobos
>> 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
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.
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
01 MatLab básico 7
01 – PRIMEROS PASOS CON MATLAB Lic. Amado Malca Villalobos
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
>> 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
01 MatLab básico 8
01 – PRIMEROS PASOS CON MATLAB Lic. Amado Malca Villalobos
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')
Solución:
>> x=pi/3
x = 1.0472
>> 2*sin(x)*cos(x)
ans = 0.8660
>> sin(2*x)
ans = 0.8660
>>
01 MatLab básico 9
01 – PRIMEROS PASOS CON MATLAB Lic. Amado Malca Villalobos
B
C
A
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
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
>>
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
>>
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
mn
Los arrays también pueden estar compuestos por caracteres no numéricos, llamados cadenas o strings.
>> 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
>>
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
>>
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
>>
>> 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
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 ]
También una matriz se puede crear fila por fila con el comando linspace y el operador dos puntos, ya descritos
anteriormente.
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
>> 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
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
mn
02 Arrays 17
02 – ARRAYS Lic. Amado Malca Villalobos
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
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.
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
>>
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
>>
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
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
>>
02 Arrays 23
02 – ARRAYS Lic. Amado Malca Villalobos
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.
02 Arrays 24
02 – ARRAYS Lic. Amado Malca Villalobos
02 Arrays 25
02 – ARRAYS Lic. Amado Malca Villalobos
02 Arrays 26
03 OPERACIONES MATEMATICAS CON ARRAYS Lic. Amado Malca Villalobos
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
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:
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:
Ann X n1 Bn1 Y1n Ann C1n
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.
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
>>
División de arrays
La división izquierda \:
La división izquierda se usa en forma equivalente a resolver la ecuación matricial
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.
>>
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
mn y mn
Entonces
A.* B ai j bi j
mn
A. / B ai j / bi j
mn
A. ^ B ai j j
bi
mn
A. \ B ai j \ bi j
mn
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
>>
600
400
200
-200
-400
-600
-800
-1000
-10 -8 -6 -4 -2 0 2 4 6 8 10
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
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.
04 archivos .m 35
04. Archivos m. Lic. Amado Malca Villalobos
>> 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.
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
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
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
04 archivos .m 40
04. Archivos m. Lic. Amado Malca Villalobos
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
04 archivos .m 41
04. Archivos m. Lic. Amado Malca Villalobos
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
>>
04 archivos .m 42
04. Archivos m. Lic. Amado Malca Villalobos
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
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
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')
04 archivos .m 46
04. Archivos m. Lic. Amado Malca Villalobos
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
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.
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.
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
04 archivos .m 50
04. Archivos m. Lic. Amado Malca Villalobos
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
z = 1.0e+003 *
04 archivos .m 51
04. Archivos m. Lic. Amado Malca Villalobos
z = 1.0e+006 *
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
>>
04 archivos .m 52
04. Archivos m. Lic. Amado Malca Villalobos
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
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
>>
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
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
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
>>
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
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
>>
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
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.
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.
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.
x= 1 7 2 4 6 1 6.5
y= 5 5 2 7 2 5 4.5
5
>> plot(x,y) 4
>> 2
1 2 3 4 5 6 7
x= 1 7 2 4 6 1 6.5
y= 5 5 2 7 2 5 5
4.5
>> plot(x,y) 4
>> 2
1 2 3 4 5 6 7
6.5
x= 1 7 2 4 6 1 6
5
y= 5 5 2 7 2 5 4.5
>> plot(x,y) 4
3.5
>> plot(x,y,'r:d') 3
>> 1 2 3 4 5 6 7
Nº
01 02 03 04 05 06 07 08 09 10 11 12
Orden
Xx
02 04 06 08 10 12 14 16 18 20 22 24
(horas)
Yy( 22.
21 27 28 30 32 31 30 27 26 24 20
ºC) 4
05 gráficos 2D 61
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos
Trabajando en la ventana de comandos de Matlab, tenemos:
En la ventana de comandos de MatLab Grafica de MatLab
>> x=[2 4 6 8 10 12 14 16 18 20 22 24]; 32
>> plot(x,y)
28
26
24
22
20
0 5 10 15 20 25
26
24
22
20
0 5 10 15 20 25
>> grid
28
>> title('Registro diario de la temperatura en la
temperatura
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
eje y
>> xlabel('eje x') 0.2
-0.1
-0.2
0 2 4 6 8 10
eje x
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
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.
-2
-4
-6
1 1.5 2 2.5 3 3.5 4 4.5 5
05 gráficos 2D 65
05 GRAFICOS EN 2D Lic. Amado Malca Villalobos
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
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.
ba
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
>>
>> 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
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
>> -40
-60
-80
0 2 4 6 8 10
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
-1
0 2 4 6 8 10
eje x
>> 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
>> -60
-80
0 1 2 3 4 5 6 7 8 9 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
','color','r','marker','*') -60
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.
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
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
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
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
>> 0
-10
-20
-30
-40
-10 -5 0 5 10
>> 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.
>> 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.
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
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.5 0 0.5 1
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
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.
r=6*cos(5*t); 4
150 30
polar(t,r) 2
240 300
270
210 330
240 300
270
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
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
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
grid 0
-2
-4
-6
-8
-10
-20 -15 -10 -5 0 5 10 15 20
Ejemplo:
x=-20:0.01:20; 8
plot(x,y) 4
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.
0 -2000
-2000 -4000
-10 -5 0 5 10 -10 -5 0 5 10
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.
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
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.
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
0.25*x)*sin(6*x)',[-2,4])
grid 1.5
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
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.
>> ezplot('exp(sin(x))-1',[0,10])
exp(sin(x))-1
1.5
0.5
-0.5
0 2 4 6 8 10
x
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
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
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
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
05 gráficos 2D 89
05 GRAFICOS ESTADISTICOS EN 2D Lic. Amado Malca Villalobos
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
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
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)
25
20
ventas (en millones)
15
10
0
1988 1989 1990 1991 1992 1993 1994
años
05 gráficos estadísticos 91
05 GRAFICOS ESTADISTICOS EN 2D Lic. Amado Malca Villalobos
Gráfico de barras horizontales
1994
1993
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
25
20
ventas (en millones)
15
10
0
1988 1989 1990 1991 1992 1993 1994
años
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 definidas por el usuario; generalmente para representar una función que se
usara en varios programas adicionales.
x FUNCIÓN y f x
06 archivos de función 97
06 Funciones y ficheros de función Lic. Amado Malca Villalobos
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]
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
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;
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
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:
>> 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
Como aparece un error debemos redefinir la función, para cuando los argumentos son
vectores o matrices.
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
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)
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
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
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)).
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
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.
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
>>
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.
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
>> 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.
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
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
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)
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
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
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
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
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
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
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
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
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
,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
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
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
09 gráficos en 3D 116
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
09 gráficos en 3D 117
CAPITULO 09: GRAFICOS EN 3D Lic. Amado Malca Villalobos
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
>>
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
>>
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
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
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
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
title('Altibajos') 60
60
80
40
40
20 20
Eje y 0 0
Eje x
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
title('Altibajos') 2
2
4
0
0
-2 -2
Eje y -4 -4
Eje x
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
title('Altibajos') 2
2
4
0
0
-2 -2
Eje y -4 -4
Eje x
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
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
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
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
ylabel('Eje y') 2
0 1
2
3
zlabel('Eje z') -2 -2
-1
0
title('Altibajos') Eje y -3
Eje x
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