Está en la página 1de 77

Informática

Tema 1 - MATLAB

Ángela Muñoz de Yraola


Escuela Técnica Superior de Ingenieros Navales
Universidad Politécnica de Madrid
Programación

MATLAB

Vectores

Variables

Matrices

Gráficos
Programación

Programa
Secuencia de instrucciones

Compiladores
Lenguaje de o Intérpretes
programación
Programas
Herramienta de intermedios
comunicación
Ordenador
Lenguaje máquina o
Ideas ➽
lenguaje ensamblador
instrucciones
ejecutables ⬍
Usuario
Lenguaje alto nivel

MATLAB intérprete y entorno de programación


Análisis del problema
Fases en el desarrollo 1 conocer en qué consiste y saber qué
resultados se

de un programa desean obtener

2
Planificación
establecer la secuencia de
etapas a aplicar en la resolución

3
Edición
escritura del código fuente y empleo
del lenguaje de programación

Compilación y ejecución
del programa al lenguaje máquina 4
Comprobación y Corrección
5 de errores
del programa

Documentación
revisión del
código fuente, simpli cación e 6
inclusión de líneas de comentarios
fi
Datos
se almacenan como números:
Datos, Vectores, Matrices, …

Estructuras de Control
permiten modi car el orden de las
instrucciones de un programa
Condicionales o Bucles o
Bifurcaciones repeticiones
se ejecutan distintas permiten que se
instrucciones según ejecuten
se veri que o no repetidamente un
determinada conjunto de
condición instrucciones

Funciones
Inducen orden; separan las distintas
subrutinas que componen un programa
fi
fi
Entornos de Programación

MATLAB

Vectores

Variables

Matrices

Gráficos
MATLAB
Matrix Laboratory

Programa muy potente de cálculo técnico y


cientí co

vectores y matrices
escalares (reales y complejos)
cadenas de caracteres
grá cos 2D y 3D

lenguaje de programación propio: lenguaje


MATLAB o lenguaje “M”

GNU-OCTAVE: Alternativa de so ware libre Lenguaje


“M”
fi
fi
ft
MATLAB arranca con doble click en el
icono del escritorio o desde el menú Inicio
La ventana de comandos es donde se ejecutan los
comandos de MATLAB y se muestran los resultados

Las órdenes (comandos o datos) se introducen a


continuación del prompt; >> y se presiona “Intro”
para que se ejecuten

Desktop Layout/Default en el menú View mostrará


la vista por defecto
La sub-ventana
Desde el menú
Current Folder Home, desplegando
muestran los cheros
Layout, se pueden visualizar En workspace,
existentes en la carpeta
activa y personalizar otras sub- aparecen las variables
ventanas que vayamos creando
Por ejemplo, el histórico de
comandos que guarda todos
los comandos introducidos
para poder recuperarlos
y repetirlos
fi
Para volver a la situación inicial: Home/Layout/Default
Desde la ventana de
comandos introducimos las
operaciones como en
cualquier calculadora pero
empleando los comandos
admitidos en el lenguaje M

p
3 ⇤ 57 + log(89) >> sqrt (3*5^7+log(89))/cos(8)
Ejemplo:
cos(8) ans =
Para que MATLAB lo ejecute se pulsa “intro”
El resultado de la operación lo devuelve en -3.3273e+03
la variable ans.
Ejemplo: cos(5) · 27.3
>> cos (5)*2^7.3

ans =

44.7013

>> log (ans)

ans =

3.8000

El resultado, por defecto, se lo


asigna a la variable

ans
Operadores
Símbolos que permiten hacer
operaciones

+, *, /, ^, …

El resultado depende del tipo


de “actores” sobre los que
“operan”

División derecha División izquierda

>> 3/2 >> 3\2

ans = ans = La coma decimal en MATLAB


¡es un punto!
1.5000 0.6667
Operaciones MATLAB
respeta la jerarquía de operaciones habitual
en los cálculos aritméticos

Después
Primero las potencias,
luego los
productos y
se resuelven los
divisiones de
cálculos de los
izquierda a
paréntesis, desde
derecha, y
el más interno al
nalmente, las
más externo
sumas y restas de
izquierda a
derecha

>> -10+7*3^2 >> 4*3+5/2


ans = ans =
53 14.5000
fi
Funciones
Son aplicaciones prede nidas que reciben valores y
devuelven resultados

Ejemplos: • sin(x) seno (radianes)

• sqrt(x) raíz cuadrada • cos(x) coseno (radianes)

• exp(x) exponencial de base e • tan(x) tangente (radianes)

• log(x) logaritmo natural • cotg(x) cotangente


(radianes)
• log10(x) logaritmo decimal
• asin(x) arcoseno
• abs(x) módulo o valor absoluto
• acos(x) arcocoseno
• conj(z) complejo conjugado
• atan(x) arcotangente
• real(z) parte real
• cosh(x) coseno hiperbólico
• imag(z) parte imaginaria
• sinh(x) seno hiperbólico
• nthroot(x,n) raíz n-ésima
• tanh(x) tangente hiperbólica
fi
•floor(x) parte entera: redondea los decimales al menor entero más cercano
•mod(a,b) da el resto de la división entre los reales a y b
•round(x) el entero más próximo al real x
•sign(x) función signo
•fix(x) elimina la parte decimal del real x
•rem(a,b) resto de la división entre a y b (como mod si son positivos) con
redondeo a cero

•factor(x) devuelve los factores primos de x.


•gcd(x,y) devuelve el máximo común divisor.
•lcm(x,y) devuelve el mínimo común múltiplo.
•rats(x) representa x como fracción.
•factorial(x) devuelve el valor de x factorial (x!).
•primes(x) devuelve todos los números primos menores que x.
•isprime(x) si x es un número primo, la función devuelve 1; si no lo es,
devuelve 0.

•…
Comandos
Borrar pantalla de línea de comandos: clc

Pedir ayuda acerca de comandos: help


pl o
>> help log Ejem t lon
g
979
ma 58
>> doc log for 653
- 4 1592 416
3 .1 3.1
sh ort
Recuperar una orden para ejecutarla otra vez o m at
modi carla: echas arriba y abajo del cursor ⇑, ⇓ for
-

Resultados con más decimales (hasta 14): format long

Formato por defecto (4 dígitos decimales): format


short o format a secas
fi
fl
Ejercicios
1. Realizar la siguiente operación: 2.72.1 + log10 108.2

2. Pedir ayuda de la orden exp y realizar la siguiente operación:

2.72.1 +log10 108.2


e

El resultado del ejercicio 1 es: 10.0855

El resultado del ejercicio 2 es: 2.3992e+04 ó lo que es lo mismo: 23.992


Entornos de Programación

MATLAB

Variables

Vectores

Matrices

Gráficos
Variables
Áreas de memoria para guardar
valores
>> Radio=2.1;
>> Area=pi*Radio^2
Se identifican con nombres que
sugieran algo de ellas Area =
13.8544
En MATLAB las variables no son
nunca declaradas. Su tipo y su
tamaño cambian de forma
dinámica de acuerdo con los
valores que le son asignados

Las variables se crean


automáticamente al asignarles un
contenido
Variables Predefinidas
ans contiene el valor del ultimo comando no
asignado a una variable

pi es el valor aproximado de π

inf representa in nito ∞

i unidad imaginaria; raíz cuadrada de -1

NaN es la abreviación de Not a Number


Se usa cuando MATLAB no puede determinar un valor
numérico válido
fi
Hay palabras reservadas: no se puede usar
cualquier palabra para las variables ni para las
funciones

Sensible a mayúsculas (case sensitive)


cos (3.5) pedimos que calcule el coseno.
Cos (3.5) con C mayúscula, no existe

Matlab does not speak spanish (por ahora)


sin(pi/2) … (ans=1)
tan(pi/4) … (ans=1)

Todos los nombres deben comenzar con una letra

Los únicos caracteres permisibles son letras,


números y el guión bajo
Tipos de Variables Números

Texto

Vectores y Matrices

Valores lógicos

Las cadenas de texto (strings)


se introducen entre apóstrofes
o comillas - comilla bajo la
interrogación '

>> p= 'el perímetro es: '


p=
'el perímetro es: '
El símbolo “=“ en programación no
es una operación matemática

Una expresión con una igualdad


no es una ecuación

Es una asignación!!!
El valor que está a la derecha se
asigna al nombre de la variable
que está a la izquierda

>> 2x=8

Error: Unexpected MATLAB expression…

>> x2=8

X2 =

8
Borrar la variable p: clear p

Comandos Borrar todas las variables: clear all

Para visualizar las variables existentes: who

Para visualizar mas información de las variables:


whos

Para conocer el contenido de una variable se escribe


su nombre y se pulsa “enter”

Para la supresión de la vista por pantalla, se naliza


la sentencia con “;” (punto y coma)

Ejemplo
Asignar a la variable x el valor

2.72.1 + log10 108.2


y a la variable t el valor
2.72.1 +log10 108.2
e
a continuación borrar las variables
fi
Ejecutamos
>> x=3 MATLAB busca en la
x= memoria RAM del
ordenador el valor de
3 la variable x, la
>> x=2*x multiplica por 2, y
vuelve a colocar en
x=
ese lugar de la
6 memoria, x, el valor
recién calculado.
>> x=2*x
x=
Podemos repetir esta
12 operación tantas
veces como
>> x=2*x
queramos con
x= idéntico
24 funcionamiento.
Ejercicios
3. Realizar las siguientes operaciones con MATLAB y
verificar las soluciones:

(1/2)2
<latexit sha1_base64="G8OvAvr/OCCaCBCcjEHIMOw7Wes=">AAAB+3icbVDLTgJBEOzFF+Jr1YuJl4nEBKPiLhHxSPTiERN5JIBkdpiFCbOPzMyakM36M3oy6s2/8Af8Gwfcg4J1qu6qTrrKCTmTyrK+jMzC4tLySnY1t7a+sbllbu80ZBAJQusk4IFoOVhSznxaV0xx2goFxZ7DadMZXU/05gMVkgX+nRqHtOvhgc9cRrDSq5651+m7ApO4fFqwz0pH96Uktk4qx3bSM/NW0ZoCzRM7JXlIUeuZn51+QCKP+opwLGXbtkLVjbFQjHCa5DqRpCEmIzygbU197FHZjacJEnToBgKpIUXT+bc3xp6UY8/RHg+roZzVJsv/tHak3MtuzPwwUtQn2qI1N+JIBWhSBOozQYniY00wEUx/icgQ6y6Uriun49uzYedJo1S0L4rl2/N89SotIgv7cAAFsKECVbiBGtSBwCM8wxu8G4nxZLwYrz/WjJHe7MIfGB/f1xqSSg==</latexit>

5
(b) (1 0, 25)1/2 + (4/81)
<latexit sha1_base64="xO7qj0XshpAD7iAB21Ajy5fudD8=">AAAB/3icbVBLTwIxGOziC/G16lEPjcQEo8CWgHIkevGIiTwSWEm3FGjoPtJ2TciGg/4ZPRn15n/wD/hv7OIeFJzTzDfTpDNOwJlUlvVlpJaWV1bX0uuZjc2t7R1zd68p/VAQ2iA+90XbwZJy5tGGYorTdiAodh1OW874KvZb91RI5nu3ahJQ28VDjw0YwUqfeuZhDuWts1Ll5C5CxdL0NFcuVpEW+Vj1zKxVsGaAiwQlJAsS1HvmZ7fvk9ClniIcS9lBVqDsCAvFCKfTTDeUNMBkjIe0o6mHXSrtaNZiCo8HvoBqROFM/85G2JVy4jo642I1kvNefPzP64RqULUj5gWhoh7REe0NQg6VD+MxYJ8JShSfaIKJYPqXkIywwETpyTK6Ppovu0iapQI6L1RuytnaZTJEGhyAI5ADCFyAGrgGddAABDyCZ/AG3o0H48l4MV5/oikjebMP/sD4+AbkrpIZ</latexit>

1/2
(a)
0, 7 + 1
qp p
<latexit sha1_base64="wIUN2KI7+y4l69w9jx2ym6HySi4=">AAACCHicbZC7TsMwGIWdcivlFmBksagqlaEliWhhrGBhLBK9SG2oHNdprToXbAepivIC8DIwIWBj5gV4G5w2A7Scwfr8n2PJ53dCRoU0jG8tt7K6tr6R3yxsbe/s7un7B20RRByTFg5YwLsOEoRRn7QklYx0Q06Q5zDScSZXqd95IFzQwL+V05DYHhr51KUYSTUa6KW+uOcynp9WrZ5U5lg2T63ayV1csZIkKQz0olE1ZoLLYGZQBJmaA/2rPwxw5BFfYoaE6JlGKO0YcUkxI0mhHwkSIjxBI9JT6COPCDue1UlgyQ04lGMCZ/ff2Rh5Qkw9R2U8JMdi0UuH/3m9SLoXdkz9MJLExyqiPDdiUAYw3QocUk6wZFMFCHOqfgnxGHGEpdpdWt9cLLsMbatq1qu1m7Ni4zJbRB4cgWNQBiY4Bw1wDZqgBTB4Ai/gHXxoj9qz9qq9zaM5LXtzCP5I+/wBNWqYtw==</latexit>

(c) 256 (1/25) 2

(a) 2.7941 (b) 5.3660 (c) 0+3i


Ejercicios
4. Empezando por x=100 repetir la operación hasta que se estabilice el cuarto
decimal de x. 2
x 81
x=x
2x
¿Qué relación hay entre el último x y 81?

5. De nir A como vuestro código postal. Empezando por x=100 repetir la


operación hasta que se estabilice el cuarto decimal
x2 A
x=x
2x
¿A qué ha convergido la sucesión?
fi
Entornos de Programación

MATLAB

Variables

Vectores

Matrices

Gráficos
Vectores
Se introducen entre corchetes
Variables indexadas “[ ]” (pulsando Algr+[ )
>> a=[1 2 3 4 5 6 7 8]
Los elementos también se
a= pueden separar por comas
1 2 3 4 5 6 7 8 “,”
a=[1,2,3,4,5,6,7,8]

Se accede a sus valores a través del índice


>> a(5)
Accede al valor de índice 5
ans =
5
Entrada de Vectores
Elemento a elemento
>> v(1)=0
v= Para delimitar
0 vectores y
>> v(2)=2 matrices, se usan
corchetes, nunca
v=
paréntesis
0 2

Todos los elementos


>> v = [ 0 2 4 6 8] Los elementos se
v=
separan por espacios o
por comas (sin mezclar)
0 2 4 6 8
Final
Si el incremento es constante
>> v = [0:2:8] La notación v= [0:2:8],
v= es equivalente a v=0:2:8
0 2 4 6 8 (sin corchetes)

Inicio
Incremento
Para modificar un elemento Para hacer operaciones entre
Para acceder al contenido de
del vector componentes
una posición del vector
Manejo de Vectores

>> v(1)=-3 >> v(2)*v(5)^3


>> v(3)
ans= v= ans=
4 -3 2 4 6 8 1024

Para eliminar una componente


del vector se utiliza el Para recuperarlo Para ampliarlo
operador [ ] (corchete vacío)
>> v(5)=8 >> v(8)=1
>> v(5)=[]
v= v=
v=
-3 2 4 6 8 -3 2 4 6 8 0 0 1
-3 2 4 6

añade ceros
Vector traspuesto
Otra forma de escribir un
(apóstrofo: acento de la
vector columna
misma tecla que el signo de
interrogación “?”)
Manejo de Vectores

>> u=[0;2;4;6;8]
>> v’ ans=
El vector v=[0 2 4 6 8]
ans= 0 para MATLAB es una
-3 2 matriz fila de cinco
columnas; 1x5
2 4
4 6
6 8 Se comprueba
preguntando el tamaño
8 de v con el comando
size ó length

>> size(v) >> length(v)


ans = ans =
1 5 5
Ejercicios
1. ¿Qué resultado saldrá por pantalla si 4.Dado el vector v=(4,-2,1,3), calcular y
escribimos v=0:2:9? comprobar que su norma se puede
obtener con las siguientes operaciones:
2.Calcular la suma de los elementos del
vector anterior v, elemento a elemento. (a) dot(v,v)^(1/2)
Pide ayuda sobre la función sum y
comprueba el resultado. (b) sqrt(dot(v,v))

3.MATLAB calcula el producto escalar de (c)


dos vectores u e v de igual dimensión sqrt(v(1)^2+v(2)^2+v(3)^2+v(4)^2)
con el comando dot(u,v). Halla el
(d) norm(v)
producto escalar de los vectores si
u=(2,-3,0) y v=(0,-1,8) y si u=(0.73,-1) y
v=(-2,0).
Entornos de Programación

MATLAB

Vectores

Variables

Matrices

Gráficos
Matrices

>> A=[1 2 3; 3 4 5; 6 7 8]
Los elementos se separan por
A=
espacios o por comas y los
saltos de la se de nen con 1 2 3
punto y coma: “;” 3 4 5
6 7 8

>> A=[1 2 3
3 4 5
También se pueden introducir 6 7 8]
directamente por las pulsando
A=
intro ó Mayúsculas+Intro en
Mac 1 2 3
3 4 5
6 7 8
fi
fi
fi
bhurba

Para modi car un elemento de De nirla como una la de


la matriz vectores columna
>> A(2,2)=-9 Para recuperar el valor original
>> B=[[1 2 3]’ [2 4 7]’ [3 5 8]’]
Manejo de Matrices

A= B=
>> A(2,2)=4; 1 2 3
1 2 3
3 -9 5 2 4 5

6 7 8 3 7 8

El comando diag recibe un


Matriz de 3x3 que tiene todos Modi car sus elementos vector y crea una matriz
sus elementos nulos diagonales diagonal con los elementos de
un vector
>> I=zeros(3) >> I(1,1)=1;I(2,2)=1;I(3,3)=1
I= I=
>> J=diag([5 8 2])
0 0 0 1 0 0
J=
0 1 0
0 0 0 5 0 0
0 0 1
0 0 0 0 8 0
0 0 2
fi
fi
fi
fi
Ejercicios
6. Sumar los elementos de la matriz A=[1 2 3;3 4 5;6 7 8] refiriéndose a
ellos elemento a elemento y comprobar con la función sum.

7. Si B=[[1 2 3]’ [2 4 7]’ [3 5 8]’], definir la matriz D=2B-A

8. Definir la matriz D=B-AB

9. Definir la matriz C=AAt

10. Definir una matriz D diagonal cuyos elementos sean -2,1,0.2 y -0.7

11. Pedir ayuda de la función eye, y definir la matriz identidad de 10x10


Subvectores
>> v=0:2:8
v=
0 2 4 6 8
Vector e cuyas componentes son las tres
primeras componentes del vector v

>> e=v(1:1:3) Último elemento de v


e=
0 2 4
Incremento de índices
Primer elemento
de v
El primer uno en el
paréntesis indica que el
Si el incremento es la unidad, no es primer elemento es el
primer elemento de v, el
necesario indicarlo en la secuencia segundo es el incremento
de índices dentro de v y el
>> e=v(1:3) último marca el elemento
nal.
e=
0 2 4
1 es el incremento por defecto
fi
v=0:2:8 >> v=[0,2,4,6,8]

v=
0 2 4 6 8

Vector r con los elementos Vector s con los


Vector t con los elementos
de las posiciones 5, 3 y 1 elementos de los vectores
de las posiciones 4, 5, 1 y 3
del vector ryt
del vector v

>> r=v(5:-2:1) >> t=[v(4),v(5),v(1),v(3)] >> s=[r,t]


r= t= s=
8 4 0 6 8 0 4 8 4 0 6 8 0 4
Ejercicios
12. Deducir cuál va a ser el resultado de las dos órdenes siguientes
siendo v=0:2:8:
v=02468
1. >> e=v(2:2:5) 1 >> e = v (2:2:5) se va del 2 al quinto
número de dos en dos
2 >> e = v (1:3:5) va del primer número
2. >> e=v(1:3:5) al quinto de 3 en 3
e1. 2, 6
e2 0, 6
13. Siendo A=[1 2 3;3 4 5;6 7 8], comprobar con size el error que se
indica en A*v(1:3). Probar A*v(1:3)'
Es incorrecta la primera forma debido a que es incompatible la matriz y el vector (hay que
tener cuidado al hacer esto porque no se indica simplemente da error), por eso al probar con
la transpuesta si da un valor.
<latexit sha1_base64="CHS1rXEKOfEsucrYUqnSImHoJXI=">AAACI3icbVDBThsxFPRCaUNK2wBHLlajrugl2iWB5IIU4MKRSg0gxVHkdd4mFl7vyn6LFK3yOfAz5IQAiQP/gpPuoYXOad6beZZnokxJi0Hw7K2sflj7+KmyXv288eXrt9rm1rlNcyOgJ1KVmsuIW1BSQw8lKrjMDPAkUnARXZ0s9ItrMFam+jdOMxgkfKxlLAVHtxrWukeHTEGMuyyCsdQFN4ZPZ4UxZkZDf89vMtb0W/4+Ywd+2+8w0KPSw4wcT/DnsFYPGsES9D0JS1InJc6GtTkbpSJPQKNQ3Np+GGQ4cI+iFApmVZZbyLi44mPoO6p5AnZQLJPO6I84NRQnQJfz396CJ9ZOk8h5Eo4T+1ZbLP+n9XOMO4NC6ixH0MJZnBbnimJKF4XRkTQgUE0d4cJI90sqJtxwga7Wqosfvg37npzvNcKDxv6vVr17XBZRITvkO9klIWmTLjklZ6RHBLklc/JInrwb78679x7+WFe88mab/APv5RVrW6LV</latexit>

0 1
1 2 3
A=@ 3 4 5 A
6 7 8

Extraemos la segunda Creamos D extrayendo la


columna de la matriz A submatriz cuadrada de
Vector w a partir de la
orden dos inferior
tercera fila de la matriz A >> u=A(:,2) derecha de la matriz A
>> w=A(3,:) u=
>> D=A(2:3,2:3)
w= 2 D=
6 7 8 4 4 5
7 7 8
D 1= A ( : ; 1 :2: 3)

Ejercicios se ponen dos puntos porque se quiere toda la columna


y el 1:2:3 es porque quieres columna uno, dos pasos y la
columna 3

14. Definir una matriz D1 formada por la primera y tercera columnas


de la matriz A=[1 2 3;3 4 5;6 7 8];

15. Definir la matriz B1 como la inversa de B=[[1 2 3]' [2 4 7]' [3 5 8]'].


Multiplicar B por B1 y razonar la coherencia del resultado.
para escribir la inversa
B1= inv(X)
16. Sabiendo que v=[1 3 5]’, resolver el sistema lineal Bx = v

Hay que respetar las condiciones de las matrices, por lo que despejar x para
introducirlo a matlab es decir
x = (B)^-1 * x
Otras Funciones
inv (A) Calcula la inversa

det (A) Calcula el determinante

trace (A) Calcula la traza

ones (n) Crea una matriz de orden n con unos

ones (n,m) Crea una matriz nxm con unos

zeros (n) Crea una matriz de orden n con ceros

zeros (n,m) Crea una matriz nxm con ceros

eye (n) Crea la matriz identidad de orden n

rand Genera números aleatorios entre 0 y 1

rand (n,m) Crea una matriz aleatoria nxm


oor (rand (n,m)*10) Crea una matriz aleatoria nxm (enteros)
rank (A) Calcula el rango de la matriz A

Escribiendo help elfun se obtiene una lista de las funciones elementales de MATLAB
fl
Ejercicios para poner la matriz transpuesta vale con poner B.' o B'

17. Definir una matriz B2=B· Bt siendo B=[[1 2 3]’ [2 4 7]' [3 5 8]’]

18. Asignar al vector x la solución del sistema lineal B2· x = v siendo v=[1 3 5]’
hay una incoherencia, H = 2x3
19. Definir una matriz H de 2x2 a partir de las dos primeras columnas de la matriz
B3=B· A siendo A=[1 2 3;3 4 5;6 7 8]

20. Definir un vector h utilizando la última columna de B3

21. Calcular el determinante y el rango de la matriz H


La potencia de MATLAB nace de la facilidad con la
que se pueden manipular los vectores y matrices

>> v=[1 2 3]' >> v+b >> 2.4*v


v= ans = ans =
1 3 2.4000
2 6 4.8000
3 9 7.2000

>> b=[2 4 6]' >> v-b >> 1.7+v


b= ans = ans =
2 -1 2.7000
4 -2 3.7000
6 -3 4.7000

Al multiplicar un vector por un escalar, resulta un


nuevo vector cuyas componentes, una a una, han
sido afectadas por ese producto y al sumar (o
restar) un escalar a un vector, MATLAB asume que
esa suma se re ere a todos los elementos del vector
fi
En la multiplicación de vectores y matrices, >>v*b
MATLAB trata a los vectores (en este caso Error using *
columna) como matrices de n filas (siendo n la Incorrect dimensions for matrix
dimensión del vector) y 1 columna multiplication. Check that the
number of columns in the rst
matrix matches the number of rows
in the second matrix. To perform
elementwise multiplication,
use '.*'

>>v=[1 2 3]' >>v*b'


v= ans =
1 2 4 6
2 4 8 12
3 6 12 18

>>b=[2 4 6]' >>v'*b


b= ans =
2 28
4
6
fi
Vectorización
de Operaciones
Un punto delante de cualquier
símbolo signi ca que las
operaciones se realizan elemento
a elemento

>> v=[1 2 3]' >> b=[2 4 6]' >> v.*b >> v./b
v= b= ans = ans =
1 2 2 0.5000
2 4 8 0.5000
3 6 18 0.5000

v(1)*b(1), v(2)*b(2) y v(3)*b(3) v(1)/b(1), v(2)/b(2) y v(3)/b(3)

Un punto delante de cualquier símbolo


Producto ·* División ·/
signi ca que las operaciones se realizan
elemento a elemento Potencia ·^
fi
fi
Operaciones Elemento
a Elemento
<latexit sha1_base64="oo/dkLF/zC3tq+NlPBsod6aB6xA=">AAACGHicbVDJTsMwFHTYKVuBIxeLCgSXKilluSCxXDiCREulpqoc96W16jiR/YJURf0R+Bk4IZYTN/4Gt+TANqd5b+ZZngkSKQy67oczMTk1PTM7N19YWFxaXimurtVNnGoONR7LWDcCZkAKBTUUKKGRaGBRIOEm6J+P9Jtb0EbE6hoHCbQi1lUiFJyhXbWL+6fHvoQQd/wAukJlTGs2GGZa6yH1tiu+v7dd9UF1csHXotvD3Xax5JbdMehf4uWkRHJctotvfifmaQQKuWTGND03wZZ9FAWXMCz4qYGE8T7rQtNSxSIwrWwcb0i3wlhT7AEdz9+9GYuMGUSB9UQMe+a3Nlr+pzVTDI9amVBJiqC4tVgtTCXFmI5aoh2hgaMcWMK4FvaXlPeYZhxtlwUb3/sd9i+pV8reQXn/qlo6OcuLmCMbZJPsEI8ckhNyQS5JjXByTx7JC3l17pwH58l5/rJOOPnNOvkB5/0TitKgCg==</latexit>

✓ ◆ <latexit sha1_base64="z5XKifhShp1w4VZLNelMIruqOvQ=">AAACGHicbVDLTsMwEHR4U14FjlwsKhBcqqS0wAUJwYUjSJQiNVXluJvWquNE9gapivoj8DNwQjxO3Pgb3JIDFOY0uzNreSZIpDDoup/O1PTM7Nz8wmJhaXllda24vnFj4lRzqPNYxvo2YAakUFBHgRJuEw0sCiQ0gv75SG/cgTYiVtc4SKAVsa4SoeAM7apdrJ2d+BJC3PMD6AqVMa3ZYJhprYe0slv1/YPdmg+qkwu+Ft0e7reLJbfsjkH/Ei8nJZLjsl189zsxTyNQyCUzpum5Cbbsoyi4hGHBTw0kjPdZF5qWKhaBaWXjeEO6E8aaYg/oeP7pzVhkzCAKrCdi2DOT2mj5n9ZMMTxuZUIlKYLi1mK1MJUUYzpqiXaEBo5yYAnjWthfUt5jmnG0XRZsfG8y7F9yUyl7h+XaVbV0epYXsUC2yDbZIx45IqfkglySOuHkgTyRV/Lm3DuPzrPz8m2dcvKbTfILzscXktWgDw==</latexit>

✓ ◆
1 2 2 4
A= B=
3 4 3 5

>> A*B >> A.*B >> A/B >> A./B


ans = ans = ans = ans =
8 14 2 8 0.5000 0 0.5000 0.5000
18 32 9 20 -1.5000 2.0000 1.0000 0.8000

Aunque no se pueden hacer divisiones de matrices, el operador “división”, multiplica por la inversa para emular una división
Las funciones internas de
MATLAB también se aplican
elemento a elemento sobre
los vectores y las matrices

>> sin(v)
ans =
0.8415
0.9093
0.1411

>> log(v)
ans =
0
0.6931
1.0986
Ejercicios
22. Ejecutar: >>a=(1:3)’, b=(4:6)' y obtener a*b’, a.*b y a./b

23. Definir un vector w tal que sus componentes sean las de v=[1 2 3]'
al cubo.
Se pueden evaluar expresiones más
complejas
Evaluar la expresión

x2 − 2x − 3
para valores de x entre 1 y 10, con incremento de 1

>> x=1:10
x=
1 2 3 4 5 6 7 8 9 10

>> y=x.^2-2*x-3
y=
-4 -3 0 5 12 21 32 45 60 77
Evaluar la expresión
sen (x) / x
para valores de x entre -1 y 1 con incremento de 0.1 unidades

>> x=-1:.1:1;
>> y=sin(x)./x
y=
Columns 1 through 9
0.8415 0.8704 0.8967 0.9203 0.9411 0.9589 0.9735 0.9851 0.9933
Columns 10 through 18
0.9983 NaN 0.9983 0.9933 0.9851 0.9735 0.9589 0.9411 0.9203
Columns 19 through 21
0.8967 0.8704 0.8415
Vectores regulares
Operador “:”
>>a=2:8

Función linspace
genera un vector de elementos igualmente
espaciados Número de
elementos
>>a=linspace (5,8,4)

Primer valor Último valor

ans =
5 6 7 8 Para generar n números aleatorios en un intervalo (a,b):

(primero y último incluidos)


r=a+(b-a).*rand(n,1)
Ejercicios
24. Genera un vector columna que contenga los números impares entre 15 y 30.

25. Si x=[0,1,4,9,16,25], escribe el comando MATLAB que calcula la raíz cuadrada de cada
componente de x.

26. Si x=0:pi/2:2*pi, escribe el comando MATLAB que calcula el coseno de cada


componente de x.

27. Si x=linspace(0,2*pi,15). ¿Cuál es la longitud de x?


28. A partir de C=10*rand(5), genera las siguientes matrices:

>> D=floor(C) >> H=diag([1,2,3,4,5])


>> E=ceil(C) >> I=diag([1,2,3,4,5],-1)
>> F=round(C) >> J=diag(1:5,1)
>> G=fix(C)

29. Si v1=1:3, v2=4:6 y v3=7:9, construye una matriz M con los vectores v1, v2 y v3,
cada uno formando una fila de la matriz M.

30. Las matrices A=[1,2,3,4;5,6,7,8;9,10,11,12] y b=[1,1,1]’, se pueden concatenar


como M=[A,b]. Comprueba si es posible concatenar las matrices como M=[A;b].

31. Ejecuta:
>> B=zeros(8)
>> B(1:3,1:3)=[1,2,3;4,5,6;7,8,9]
>> B(4:8,4:8)=magic(5)
Entornos de Programación

MATLAB

Vectores

Variables

Matrices

Gráficos
Gráficos
plot
sirve para representar funciones

plot(x,y)
dibuja una curva que une
los puntos de abscisas del
vector “x” y ordenadas “y”

>> x=1:0.5:5;
>> y=x.^2
>> plot(x,y);
Vectorización
de operación
plot(y) dibuja una línea que une los puntos del vector “y” considerado como abscisas su índice
Si “y” es complejo es equivalente a dibujar plot(real(y),imag(y))
plot(x,y,s) dibuja los puntos de abscisas las
componentes del vector “x” y ordenadas las del vector
“y” con el estilo indicado en “s”

s ➽ cadena de caracteres con uno o ninguno de los elementos siguientes:

Estilo
y yellow . point solid
m magenta o circle : dotted
c cyan x x mark . dashdot
r red + plus dashed discont.
g green * star
b blue s square
w white d diamond
k black v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram







Formato
Los comandos grid on / grid off
activan o desactivan la retícula

title(‘texto’) Título del gráfico

xlabel(‘texto’) Nombre de eje x.

ylabel(‘texto’) Nombre de eje y

zlabel(‘texto’) Nombre de eje z

Nombres de las series


legend(‘texto1’,
(diferentes curvas en una
‘texto2’,.., ‘texton’)
misma gráfica)
Ejemplo

>> n=1:10
círculo azul
>> a=2.^n;

>> plot(a,'bo')

Si no se indican abscisas,
representa la curva que
une los puntos del vector
“a” considerando como
abscisas su índice.
Barra de título
Barra de
herramientas

Barra de menús Inspector de


propiedades
Edición
Inserta leyenda grá ca
fi
La ventana grá ca entra en
modo Edición activando el icono
de la fecha

Hacer doble-click sobre el


grá co permite cambiar el
aspecto
fi
fi
Ejercicios
32.Definir un vector t cuya primera componente sea -4, que tenga un
incremento entre componentes de 0.05 y termine en el punto 1.

33. Definir un vector y a partir de cada componente del vector t como:


t2
y = 5e + sin(10t)
34. Dibujar la curva (t,y) utilizando de modo adecuado la orden plot.
35. De nir un vector x cuya primera componente sea 0, que tenga un
incremento entre componentes de 0.1 y termine en 100.

36. De nir un vector y a partir de cada componente del vector x como:


sin x · x
<latexit sha1_base64="WyQMG1PWJMqX9LZHEwkhkYLBzf8=">AAACA3icbZDLSsNAFIZP6q3WW9Slm8EiCEJJxNtGKLpxWcFeoAllMp20QyeZMDORltClvoyuRN35Br6Ab+O0ZqGtZ/XN+f+B8/9BwpnSjvNlFRYWl5ZXiqultfWNzS17e6ehRCoJrRPBhWwFWFHOYlrXTHPaSiTFUcBpMxhcT/TmPZWKifhOjxLqR7gXs5ARrM2qY6PRpRdKTDJPsRgNPdIVGg3HmXvkEaEMdeyyU3Gmg+bBzaEM+dQ69qfXFSSNaKwJx0q1XSfRfoalZoTTcclLFU0wGeAebRuMcUSVn02TjNFBKCTSfYqm79/eDEdKjaLAeCKs+2pWmyz/09qpDi/8jMVJqmlMjMVoYcqRFmhSCOoySYnmIwOYSGauRKSPTSXa1FYy8d3ZsPPQOK64Z5XT25Ny9Sovogh7sA+H4MI5VOEGalAHAo/wDG/wbj1YT9aL9fpjLVj5n134M9bHN9vll5k=</latexit>

y=
1 + cos x
37. Dibujar la curva (x,y)
fi
fi
38. De nir un vector x entre -3 y 3 y que tenga un incremento entre
componentes de 0.1 y el vector y a partir de cada componente del vector x
como: x2
<latexit sha1_base64="/ad98+kZoRloZRO2uN804zGAj3Q=">AAAB9HicbZDLTsJAFIaneEO8FV26mUhM3Eha4m1jQnTjEhO5JFDIdDiFCdNLZqZI0/AmujLqzifxBXwbB+xCwX/1zfn/Sc753YgzqSzry8itrK6tb+Q3C1vbO7t7ZnG/IcNYUKjTkIei5RIJnAVQV0xxaEUCiO9yaLqj25nfHIOQLAweVBKB45NBwDxGidKjnllMricd2g8Vhm56OulWpj2zZJWtufAy2BmUUKZaz/zs9EMa+xAoyomUbduKlJMSoRjlMC10YgkRoSMygLbGgPggnXS++hQfe6HAagh4/v6dTYkvZeK7OuMTNZSL3mz4n9eOlXflpCyIYgUB1RHteTHHKsSzBnCfCaCKJxoIFUxviemQCEKV7qmgz7cXj12GRqVsX5TP789K1ZusiDw6REfoBNnoElXRHaqhOqLoET2jN/RujI0n48V4/YnmjOzPAfoj4+Mbfr+ROA==</latexit>

y =x·e
39. Dibujar la curva (x,y) en magenta y asterisco-raya con el título Grá ca 1,
etiquetas de los ejes y retícula.
fi
fi
40. Dibujar la curva (x,y) en un intervalo de 100 puntos equi-espaciados entre -4 y
1 con cruces-raya verdes, con título, etiquetas de los ejes y retícula.
y = sin2 (x)
<latexit sha1_base64="bUCxASAc5KFfEXio1HPVusQYzhg=">AAAB7HicbZC7TsMwFIZPyq2UW4GRJaJCKkuVVNwWpAoWxiLRi5SGynGd1qpjR7aDiKK+BUwI2HgaXoC3wS0ZoOWfPp//t3T+E8SMKu04X1ZhaXllda24XtrY3NreKe/utZVIJCYtLJiQ3QApwignLU01I91YEhQFjHSC8fXU7zwQqajgdzqNiR+hIachxUibkZde9hTl9/Xq43G/XHFqzkz2Irg5VCBXs1/+7A0ETiLCNWZIKc91Yu1nSGqKGZmUeokiMcJjNCSeQY4iovxstvLEPgqFtPWI2LP372yGIqXSKDCZCOmRmvemw/88L9HhhZ9RHieacGwixgsTZmthT5vbAyoJ1iw1gLCkZksbj5BEWJv7lEx9d77sIrTrNfesdnp7Umlc5YcowgEcQhVcOIcG3EATWoBBwDO8wbvFrSfrxXr9iRas/M8+/JH18Q05RI48</latexit>

41. Hacer doble click sobre la curva tras seleccionar la herramienta echa en el
menú superior de la ventana de la grá ca. Cambiar la gura de color (a violeta)
y de grosor (a 2).

fi
fi
fl
Para crear otra ventana de dibujo

gure(n)

>> x=-pi:0.1:pi;

>> gure(1);

>> plot(x,sin(x),'b.');

>> gure(2);

>> plot(x,cos(x),'gd-');
fi
fi
fi
Para dibujar dos gráficas o más en
una misma ventana de dibujo

hold on,hold off

>> x=-pi:0.1:pi;

>> hold on

>> plot(x,sin(x),'b.');

>> plot(x,cos(x),'gd-');
Otra forma de dibujar dos gráficas o más en una misma ventana de dibujo

Hay que indicar siempre las abscisas en todas las curvas

plot(x1,y1,'formato 1',x2,y2,'formato 2',…,xn,yn,'formato n')

>> h=0.1;

>> xmin=-2;
>> xmax=2;
>> x=xmin:h:xmax;
>> yseno=sin(x);

>> ytaylor=x-x.^3/6;
>> plot(x,yseno,x,ytaylor)
Hold on-hold off Sintáxis especí ca
hold on
plot(x,sin(x),’c.’);
plot(x,cos(x),’md’; plot(x,sin(x),'rd-',x,cos(x),'bo',x,sin(x).*cos(x),'gs-');
plot(x,sin(x).*cos(x),’g-');
hold off
fi
Funciones en diferentes subgráficas
Una ventana del entorno grá co puede subdividirse en pequeñas regiones como si fuera
una matriz representando una grá ca en cada espacio de forma independiente

nº columnas
posición
nº las

subplot (m,n,i)
subdivide la ventana en
mxn espacios, indicando en
i la posición de cada
grá ca
fi
fi
fi
fi
x1=linspace(0,3,30);y1=exp(x1.^(1/3))-3;

Ejemplo y2=x1.^2-3;y3=2*cos(x1.^2)-3;
subplot(2,2,1) % Grá ca subventana 1
8 p
3 x
<latexit sha1_base64="CeNxhggB0BD6z8jOfmhtz+mVszs=">AAACTHicbVBda9swFJXTruu8r2x73ItoGCSwBDvZ1r0USvfSxxSapBC5QVauExFZdiS5JBj/w7E9939sT6MfcuqHLd0RiHPvObronjAVXBvPu3ZqO7tP9p7uP3Ofv3j56nX9zduhTjLFYMASkaiLkGoQXMLAcCPgIlVA41DAKFx8K/XRFSjNE3lu1ikEMZ1JHnFGjW1N6pyEMOMyZ3aGLjB2o+aqdQSXOdFLZca9IF8VRbuHCXFnpbK67NrqIyb2YI8IWOJVeW8c89LRJSzRTetrtXsuATmtZk/qDa/jbYAfE78iDVShP6l/J9OEZTFIwwTVeux7qQlyqgxnAgqXZBpSyhZ0BmNLJY1BB/kmkgJ/iBKFzRzwpv7bm9NY63UcWk9MzVxva2Xzf9o4M9HXIOcyzQxIZi1WizKBTYLLZPGUK2BGrC2hTHH7S8zmVFFmbP6uXd/fXvYxGXY7/pfO57NPjeOTKoh99B4doCby0SE6RqeojwaIoZ/oN7pFd84P55fzx7l5sNac6s079A9qe/cKcq8R</latexit>
plot(x1,y1,'bo')
>
< f (x) = e 3 title('Figura 1')
g(x) = x2 3, 0  x  3 xlabel('x');ylabel('y');legend('f(x)')
>
:
h(x) = 2 cos(x2 ) 3 subplot(2,2,2) % Grá ca subventana 2
plot(x1,y2,'gd')
title('Figura 2')
xlabel('x');ylabel('y');legend('g(x)')
subplot(2,2,3) % Grá ca subventana 3
plot(x1,y3,'rs')
title('Figura 3')
xlabel('x');ylabel('y');legend('h(x)')
subplot(2,2,4) % Grá ca subventana 4
plot(x1,y1,x1,y2,x1,y3)
title('Figura 4') en la última se
xlabel('x');ylabel('y') representan las tres

legend('f(x)','g(x)','h(x)')
fi
fi
fi
fi
Gráficas en el espacio
Se utiliza el comando 8
<latexit sha1_base64="Y6pM+sFlmbl4/1DIyrstx9i1Gn0=">AAACNXicbVDLbhMxFPX0QcPQwrQs2VhESEGqopkK2m4iRbBhGSrykOIo8jg3iRWPZ/D1VE1H+S74CH6ABawQsOMX6klnAQnHknXuPcdXvifOlEQbhl+9nd29/QcHtYf+o8Ojx0+C45MeprkR0BWpSs0g5ghKauhaaRUMMgM8iRX048XbUu9fg0GZ6g92mcEo4TMtp1Jw61rj4IrFMJO6EG4Grij1b1oMpW7gS8qYv2wxkWJZnFLmDg2Zgo8U13cUskyWrtsW+gz0pBoyDuphM1yDbpOoInVSoTMOvrBJKvIEtBWKIw6jMLOjghsrhYKVz3KEjIsFn8HQUc0TwFGx3n1FX0xTQ+0c6Lr+21vwBHGZxM6TcDvHTa1s/k8b5nZ6OSqkznILWjiL06a5ojalZYR0Ig0Iq5aOcGGk+yUVc264sC5o360fbS67TXpnzei8+fr9q3r7TRVEjTwjz0mDROSCtMk70iFdIshn8p38Ir+9T94374f3896641VvnpJ/4P25A4ZLqDU=</latexit>

>
<x = sin(s)
plot3 y = cos(s), 0  s  10⇡
>
:
z=s
s=0:pi/50:10*pi;

x=sin(s);y=cos(s);z=s;

plot3(x,y,z,’r*--'); grid on

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

tle ('Grá ca de una espiral')


ti
fi
Gráficas de funciones implícitas

Se utiliza el comando ezplot


ezplot('2*sin(x/2)*cos(3*x)')

Si x varia en un intervalo [a,b]


ezplot('2*sin(x/2)*cos(3*x)',[-5*pi,5*pi])
En paramétricas
ezplot(‘sin(3*t)','cos(t)',[-pi,pi])
En polares
ezpolar(‘sin(2*t)*cos(3*t)',[0,pi])

Otras: ezmesh(f,[a,b]), ezcontour(f,[a,b]), ezsurf(f)


Ejercicios
40. Representar el punto (0,0) de forma que esté centrado en la ventana
gráfica.

41. Representar la recta y=2 en un recinto centrado entre abscisas -1 y 1.

42. Representar la recta x=0 centrada en la ventana gráfica entre


ordenadas de valor -2 y 2.

43. Representar (centrado en la ventana gráfica) un cuadrado de centro


el punto (4,0) y de lado 4.

44. Representar la función a trozos:

8 2
< (x 1)2si x < 0
f (x) = 7x + 2 si 0  x < 1
: p 2
3 7x + 2 si x 1

También podría gustarte