SlideShare una empresa de Scribd logo
1 de 117
Descargar para leer sin conexión
CURSO BASICO DE MATLAB
Rina Betzabeth Ojeda Castañeda
Irma Delia García Calvillo
CIMA, UADEC
Enero 2014
MATLAB R2006a.lnk
MATLAB nombre corto de :
MATRIX LABORATORIO
MATLAB es:
Un software matemático utilizado en la
solución de una gran cantidad de problemas
identificados en el mundo real.
Que utiliza:
el cálculo numérico y simbólico.
Que integra:
q El cálculo
q La visualización
q La programación
en un entorno fácil de usar y en el cual
los planteamientos y las soluciones se
expresan en forma análoga a la notación
matemática usual.
Iniciar sesión:
Dar un clik al siguiente icono del escritorio
de su PC.
MATLAB R2006a.lnk
Si no se tiene el icono:
üir al botón de “inicio” (“start”) del
escritorio de su PC
übuscarlo en la lista de los programas
instalados
ESCRITORIO DE MATLAB
ELEMENTOS DEL ESCRITORIO:
Ventana de Comandos ( Command Window)
Historial de Comandos (Command History)
Directorio Actual (Current Directory)
Ayuda de MATLAB (Help)
Visualizador del Espacio de Trabajo (Workspace
Browser)
Editor de Arrays (Array Editor)
Editor y Depurador de Errores (Editor/Debugger)
Botón de Inicio (Start) y Launch Pad
MATLAB contiene expresiones
matemáticas.
A diferencia de otros lenguajes de
programación: (C, VISUAL BASIC,
FORTRAN, PASCAL, y otros), estas
expresiones matemáticas se aplican a las
matrices.
EXPRESIONES EN MATLAB
Las matrices y los vectores se combinan,
dentro de unas expresiones que
constituyen las líneas de comando del
prompt o las líneas de un archivo.m del
MATLAB.
Elementos que construyen las expresiones
matemáticas en MATLAB:
–Variables
–Números y Cadenas de texto
–Operadores
–Funciones
Variables.- Una variable es un símbolo o
nombre que contiene datos tales como:
•Un vector
•Una matriz
•Un escalar
•Una cadena de texto
Los datos contenidos en una variable
pueden cambiar en el curso de ejecución
del programa o de la sesión.
No se necesita ningún tipo de comando para
definir variables, ni para declarar
dimensiones.
Una variable se crea mediante la asignación
directa de su valor con:
el signo “=“.
Ejemplos: En la ventana de comandos
escribir:
>> x=0:5
x =
0 1 2 3 4 5
>> h = 4.18
h =
4.1800
Vayan a la ventana del “WORKSPACE”, y
verifiquen que aparecen dos variables:
h - escalar (1x1), con valor 4.1800,
doble precisión
X - vector renglón (1,6),
[0 1 2 3 4 5], doble precisión
Den doble click en el icono de cada variable
para entrar al “editor de arreglos”.
Verifiquen e interpreten la información que
ahí se presenta
Den doble click en el icono de cada variable
para entrar al “editor de arreglos”.
1.- Verifiquen e interpreten la información
que ahí se presenta
2.- Modifiquen los valores de h y x
3.- Interpreten los cambios hechos.
Los nombres de las variables comienzan por
una letra, seguida de cualquier número de
letras, dígitos o caracteres de subrayado.
MATLAB utiliza solamente los primeros N
caracteres del nombre de una variable
El valor de N varia dependiendo de la
versión de MATLAB que se use.
Este valor se puede ver usando el comando:
>> namelengthmax
Además distingue entre mayúsculas y
minúsculas.
X_men ≠ x_men, o X_Men
time ≠ Time ≠ TIME
Recordar que:
1.- Una de las reglas de programación dice
que el nombre de las variables debe ser
MNEMÓNICO (NEMÓNICO)
Esto es, que el nombre recuerde a la persona
lo que contiene la variable.
2.- Se usan las letras mayúsculas para
matrices, minúsculas para vectores y
escalares.
Las variables no deben tener el mismo
nombre de ninguna palabra clave de
MATLAB.
Para ver la lista de palabras claves de
MATLAB, dar el comando
>> iskeyword
Se despliega una lista de palabras claves
MATLAB le permite usar los nombres de sus
funciones intrínsecas como nombre de
variables. En la práctica esto es un
PELIGRO, ya que se puede cambiar el
significado de una función, por ejemplo:
“sin”.
Para verificar si un nombre es el nombre de
una función intrínseca de MATLAB, usar el
comando:
>> which sin
Funciones intrínsecas elementales
>> abs(x) % valor absoluto de x
>> exp(x) % e elevado a la potencia x
>> fix(x) % redondeo de x (hacía el cero)
x = 3.999, fix(x) = 3
>> log10(x) % logaritmo x base 10
>> rem(x,y) % residuo de x/y
>> sqrt(x) % raíz cuadrada de x
>> sin(x) % seno de x; x en radianes
>> acoth(x) % arcotangente hyperbolica de x
>> help elfun % da una lista de todas las
funciones elementales
Un comando en MATLAB puede tener las
dos formas siguientes:
– Variable = expresión
– Expresión
Ejemplos: Escribir el vector columna y
usando las dos formas de comando:
>> y = [1;2;3]
y =
1
2
3
>> [1;2;3]
ans = 1
2
3
Ejemplos: Se quiere calcular el área
de un trapezoide con base horizontal y
los dos ejes verticales
>> 0.5*5*(12+6)
ans =
45
>> base = 5; altura1 = 12; altura2 = 6;
>> area = 0.5*base*(altura1+altura2)
area =
45
Ejercicios:
1.- Realizar las siguientes operaciones:
( )
r
z
q
p
w
q
p
z
q
p
r
q
p
-
+
=
-
=
=
+
=
+
=
-
+
+
-
-
+
+
-
*
/
4
6
3
2
5
/
2
5
*
8
5
2
5
/
2
5
*
8
5
2
2.- Introducir los siguientes vectores y
matrices
( )
;
3
4
7
8
9
6
5
3
2
3
6
1
8
5
3
2
;
9
8
7
6
5
4
3
2
1
4
3
2
1
;
3
2
1
;
3
2
1
ú
ú
ú
ú
û
ù
ê
ê
ê
ê
ë
é
=
÷
÷
÷
ø
ö
ç
ç
ç
è
æ
=
÷
÷
÷
÷
÷
ø
ö
ç
ç
ç
ç
ç
è
æ
=
=
÷
÷
÷
ø
ö
ç
ç
ç
è
æ
=
B
A
y
x
x t
3.- Efectuar las siguientes instrucciones
>> a =2
>> who
>> whos
>> x1 = a*x
>> x2 = a*x’
>> A1 = A*a
>> B2 = a*B
Números y Cadenas de texto
Se pueden definir variables que contengan
cadenas de texto, que deben ir siempre
entre apóstrofos o comillas simples:
>> C = ‘cadena de texto’
C =
Cadena de texto
>> disp('esto es un ejemplo')
esto es un ejemplo
El comando disp muestra en pantalla el
texto argumento tal y como está escrito
Ejemplo: ejecutar las siguientes
instrucciones:
>> x=45*pi/180; % convierte grados a radianes
>> a=sin(x); % calcula el seno de 45º
>> b=cos(x);% calcula el coseno de 45º
>>disp(‘seno(45*pi/180)') % escribe un texto
>> disp(a) % imprime el resultado
Ejercicio: DESPLEGAR RESULTADO COSENO
>> lower('MATLAB')
ans =
matlab
>> upper('Matlab')
ans =
MATLAB
Los comandos lower y upper convierten la
cadena de texto a minúscula y mayúscula
respectivamente.
Operadores.
Las expresiones en MATLAB utilizan los
operadores con las reglas de precedencia
y convenciones matemáticas tradicionales.
Opera con matrices y vectores por medio
de los operadores:
•aritméticos,
•relacionales
•lógicos.
Operadores aritméticos.-
+ Adición o Suma
- Substracción y Resta
* Multiplicación
/ División
 División izquierda
^ Potenciación
‘ Matriz transpuesta
.* Producto elemento a elemento
.^ Potenciación elemento a elemento
./ División elemento a elemento
. División izquierda elemento a elemento
Ejercicios.-
1.- Realizar las siguientes operaciones:
2.- Obtener las transpuestas de las matrices
A, B y el vector y dados.
3.- Realizar las siguientes operaciones:
AAt; BBt; xx; yy
4.- Repetir las operaciones de 3) pero ahora
elemento a elemento.
3
2
5
8
5
5
.
2
/
8
10
*
3
2
3 -
+
+ -
Operadores relacionales:
< Menor
> Mayor
<= Menor o igual
>= Mayor o igual
== Igual que
~= Distinto que (el signo ~ se genera con Alt-126)
Ejecutan comparaciones elemento a elemento
entre dos matrices y devuelven una matriz del
mismo tamaño cuyos elementos son ceros si la
relación es falsa y unos si la relación es cierta.
>> Z=[2 4 6; 8 10 12; 14 16 18]; X=zeros(3)+7;
>> Z>X
ans =
0 0 0
1 1 1
1 1 1
Operadores lógicos.
Estos operadores permiten combinar o negar
expresiones relacionales.
& y (and)
| o (or)
~ Negación lógica (el signo ~ se genera con Alt-
126)
>> D=[2 3 4 5 6 7 8 9]; E=(D>=5)&(D<=8)
E =
0 0 0 1 1 1 1 0
FORMATOS DE DESPLIEGUE
Matlab guarda las matrices en forma
decimal y realiza sus cálculos con aritmética
decimal.
Esta forma decimal conserva cerca de 16
dígitos, pero no los despliega todos por
default.
Ejemplo: guardar el siguiente escalar
>> y = 25.12345678910111213141516
y =
25.1235
>> y1 = 3.4567893
y1 =
3.4568
>> y+y1
ans =
28.5802
¿ POR QUÉ NO DA EL RESULTADO: 28.5803?
Entre lo que ocurre dentro de la máquina al
hacer las operaciones y lo que aparece en la
pantalla están varios programas que
convierten o dan formatos a los números
para desplegarlos en la pantalla.
ØSi la matriz sólo contiene enteros,
entonces despliega con valores enteros (sin
puntos decimales)
>> Y = [1 2 3; 4 5 6; 7 8 9]
Y =
1 2 3
4 5 6
7 8 9
Si alguna entrada de la matriz no se
representa exactamente como entero,
entonces toda la matriz se despliega en
format short, con cuatro cifras decimales
después del punto (la última cifra pudo ser
redondeada).
La excepción es el cero, si una entrada es
exactamente cero, entonces se despliega
como el entero cero.
Si un valor aparece como 0.0000,
entonces no es exactamente cero.
Ejemplos:
>> q = [5 0 1/3 2/3 7.123456]
q =
5.0000 0 0.3333 0.6667
7.1235
Para ver más de cuatro cifras decimales, se
tiene que modificar el formato de
despliegue a un formato largo con la
instrucción:
>> format long
Ejemplos:
>> q = [5 0 1/3 2/3 7.123456]
q =
5.0000 0 0.3333 0.6667
7.1235
Para ver más de cuatro cifras decimales, se
tiene que modificar el formato de
despliegue a un formato largo con la
instrucción:
>> format long
FORMAT SHORT formato de punto fijo con 5
dígitos.
FORMAT LONG formato de punto fijo con 15
digitos para doble precisión y
7 dígitos para simple precision
FORMAT SHORT E formato punto flotante con
5 dígitos.
FORMAT LONG E formato punto flotante con
15 dígitos para doble
precisión y 7 dígitos para
simple precision
Ejemplo:
>> format short; m = 397/17
m =
23.3529
>> format long; m
m =
23.35294117647059
Ejemplo:
>> format short e; m
m =
2.3353e+001
>> format long e; m
m =
2.335294117647059e+001
OTROS FORMATOS
FORMAT BANK formato fijo para
dólares y centavos
FORMAT RAT Aproximación por
fracciones de enteros
pequeños
Los números con un numerador o
denominador grande se reemplazan por *
Ejemplo:
>> format bank; m
m =
23.35
>>format rat; m
m =
397/17
Longitud de un vector.- Es el número de
elementos de un vector.
>> v = [-4 sin(3) 7 exp(2) 10]
v =
-4.0000 0.1411 7.0000 7.3891 10.0000
>> n = length(v)
n =
5
>> A=ones(n)
A =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>> length(A)
ans =
5
Dimensión de un vector.- Es el número de
renglones y columnas.
>> v = [-4 sin(3) 7 exp(2) 10]
v =
-4.0000 0.1411 7.0000 7.3891 10.0000
>> d = size(v)
d =
1 5
>> A=ones(n)
A =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>> [r c] = size(A)
r =
5
c =
5
>> B1 = zeros(3,5)
B1 =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> B2 = ones(size(B1))
B2 =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Funciones para crear matrices
a).- Crear una matriz diagonal con el vector v
en la diagonal
>> D1 = diag(v)
D1 =
-4.0000 0 0 0 0
0 0.1411 0 0 0
0 0 7.0000 0 0
0 0 0 7.3891 0
0 0 0 0 10.0000
b).- Formar una matriz diagonal a partir de la
diagonal de la matriz
>> D2 = diag(diag(A))
D2 =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
c).- Formar una matriz triangular superior a
partir de la diagonal de la matriz A
>> T1 = triu(A)
T1 =
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
NOTA: LA MATRIZ A NO NECESITA
SER CUADRADA
>> T2 = triu(B2)
T2 =
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
Composicion de submatrices.-
>> C = [eye(2); zeros(2)]
C =
1 0
0 1
0 0
0 0
>> C1=[C C+2; C+1 C-1]
C1 =
1 0 3 2
0 1 2 3
0 0 2 2
0 0 2 2
2 1 0 -1
1 2 -1 0
1 1 -1 -1
1 1 -1 -1
>> C2 = [eye(2); ones(2,3)]
??? Error using ==> vertcat
CAT arguments dimensions are not
consistent.
Operador Colon (operador dos puntos :)
Representa un rango y se utiliza:
a).- para crear vectores renglones de
acuerdo a las siguientes reglas:
j:k es lo mismo que [j, j+1,…,k]
j:k es vacio si j > k
j:d:k es lo mismo que [j, j+d,…,j+m*d]
con m = fix((k-j))/d)
j:d:k es vacio si d > 0 y j, j > k
o si d < 0 y j, j < k
>> j = 1; k = 10; d = 2;
>> u = j:k
u =
1 2 3 4 5 6 7 8 9 10
>> u = j:d:k
u =
1 3 5 7 9
>> j= 13
j =
13
>> u = j:k
u =
Empty matrix: 1-by-0
NOTA: POR DEFECTO, EL INCREMENTO, d, ES 1, PERO
EL OPERADOR PUEDE UTILIZAR OTROS VALORES
ENTEROS Y REALES, POSITIVOS Y NEGATIVOS.
>> j= 0; k = 5; d=.5
>> u = j:d:k
u =
Columns 1 through 7
0 0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
Columns 8 through 11
3.5000 4.0000 4.5000 5.0000
>> 100:-8:50 % decremento de -8
ans =
100 92 84 76 68 60 52
>> 0:pi/2:pi % el incremento es de pi/2
ans =
0 1.5708 3.1416
>> y = ans
y =
0 1.5708 3.1416
La función colon hace lo mismo
>> u1 = colon(0,.5,5)
u1 =
Columns 1 through 7
0 0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
Columns 8 through 11
3.5000 4.0000 4.5000 5.0000
b).- El operador también es útil en el caso
de manejo de matrices.
Matlab accede a los elementos de la
matriz por medio de los índices de fila y
de columna, que están entre paréntesis y
separados por una coma:
>> B3
B3 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B3(1,4) % extrae el elemento renglón 1 columna 4
ans =
13
>> B3(2:3,4) % extrae de la 4 columna los elementos
del renglon 2 y 3
ans =
8
12
>> s = sum(B3(1:4,4))
% suma la 4a. columna de la matriz
s =
34
>> F = B3([1 3],:)
% extrae las filas 1 y 3 de la matriz
F =
16 2 3 13
9 7 6 12
Operaciones de Vectores: suma,
producto, potencias:
Suma y resta:
>> u =
Columns 1 through 7
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
Columns 8 through 11
3.5000 4.0000 4.5000 5.0000
>> u1
u1 =
Columns 1 through 7
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
Columns 8 through 11
3.5000 4.0000 4.5000 5.0000
>> su = u + u1
su =
0 1 2 3 4 5 6
7 8 9 10
>> su1 = 2*u
su1 =
0 1 2 3 4 5 6
7 8 9 10
>> A+D1
ans =
-3.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.1411 1.0000 1.0000 1.0000
1.0000 1.0000 8.0000 1.0000 1.0000
1.0000 1.0000 1.0000 8.3891 1.0000
1.0000 1.0000 1.0000 1.0000 11.0000
>> A+B3
??? Error using ==> plus
Matrix dimensions must agree
>> size(A)
ans =
5 5
>> size(B3)
ans =
4 4
Suma de columnas de una matriz:
>> B3 % matriz mágica
B3 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> sum(B3)
ans =
34 34 34 34
PONER LA INSTRUCCION HELP SEGUIDA DE
LA PALABRA magic
¿QUÉ HARIAN PARA VERIFICAR LA
SUMA DE LOS RENGLONES Y DE LA
DIAGONAL?
>> sum(B3')
ans =
34 34 34 34
>> sum(diag(B3))
ans =
34
Producto punto o producto escalar.-
n
nv
u
v
u
v
u
v
u +
+
+
=
× L
2
2
1
1
Se pueden usar las siguientes tres
instrucciones para calcular el producto
punto
>> p1 = u*u1'
% producto punto de dos vectores renglón
p1 =
96.2500
>> p2=dot(u,u1)
% se usa la función producto punto
p2 =
96.2500
>> p3 = sum(u.*u1)
% .* (prod.elem.a elem.)
p3 =
96.2500
AHORA FAVOR DE MULTIPLICAR: u´*u1
¿QUE ESPERAN OBETENER?
>> u'*u1
ans =
Columns 1 through 7
0 0 0 0 0 0 0
0 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
0 0.7500 1.5000 2.2500 3.0000 3.7500 4.5000
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000
0 1.2500 2.5000 3.7500 5.0000 6.2500 7.5000
0 1.5000 3.0000 4.5000 6.0000 7.5000 9.0000
0 1.7500 3.5000 5.2500 7.0000 8.7500 10.5000
0 2.0000 4.0000 6.0000 8.0000 10.0000 12.0000
0 2.2500 4.5000 6.7500 9.0000 11.2500 13.5000
0 2.5000 5.0000 7.5000 10.0000 12.5000 15.0000
Columns 8 through 11
0 0 0 0
1.7500 2.0000 2.2500 2.5000
3.5000 4.0000 4.5000 5.0000
5.2500 6.0000 6.7500 7.5000
7.0000 8.0000 9.0000 10.0000
8.7500 10.0000 11.2500 12.5000
10.5000 12.0000 13.5000 15.0000
12.2500 14.0000 15.7500 17.5000
14.0000 16.0000 18.0000 20.0000
15.7500 18.0000 20.2500 22.5000
17.5000 20.0000 22.5000 25.0000
Producto de matrices.-
>> PM1 = B2*A
PM1 =
5 5 5 5 5
5 5 5 5 5
5 5 5 5 5
AHORA REVISEN EN SU WORKSPACE TODAS
LAS MATRICES Y VECTORES QUE TIENEN Y
HAGAN MULTIPLICACIONES ENTRE ELLOS,
RECORDANDO EL REQUERIMIENTO PARA
QUE EXISTA ESTA OPERACIÓN.
Producto elemento a elemento.-
>> A.*D1
ans =
-4.0000 0 0 0 0
0 0.1411 0 0 0
0 0 7.0000 0 0
0 0 0 7.3891 0
0 0 0 0 10.0000
>> A*D1
ans =
-4.0000 0.1411 7.0000 7.3891 10.0000
-4.0000 0.1411 7.0000 7.3891 10.0000
-4.0000 0.1411 7.0000 7.3891 10.0000
-4.0000 0.1411 7.0000 7.3891 10.0000
-4.0000 0.1411 7.0000 7.3891 10.0000
Potencia de matrices.-
Si se quiere calcular la potencia n de alguna
matriz, en lugar de hacer el producto de ella
misma n veces se utiliza el operador ^
>> D1C=D1^2
D1C =
16.0000 0 0 0 0
0 0.0199 0 0 0
0 0 49.0000 0 0
0 0 0 54.5982 0
0 0 0 0 100.0000
Potencia de elemento a elemento.-
Se obtiene la potencia de cada elemento de
la matriz.
>> pote = B3.^3
pote =
4096 8 27 2197
125 1331 1000 512
729 343 216 1728
64 2744 3375 1
>> B3cub = B3^3
B3cub =
10426 9306 9386 10186
9546 10026 9946 9786
9866 9706 9626 10106
9466 10266 10346 9226
¿ Existe la División de vectores o matrices
?.
¿ Porqué si se dan las siguientes
instrucciones nos da resultados distintos a
algo que indique que no existe la operación
de division de vectores ?
>> B3cub/B3
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 9.796086e-
018.
ans =
319.3333 180.0000 358.0000 298.6667
239.3333 260.0000 358.0000 298.6667
367.3333 564.0000 54.0000 170.6667
63.3333 -348.0000 886.0000 554.6667
>> A/A
Warning: Matrix is singular to working precision.
ans =
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
/ Slash or right matrix divide.
A/B is the matrix division of B
into A, which is roughly the
same as A*INV(B), except it is
computed in a different way.
More precisely, A/B = (B'A')'.
See MLDIVIDE for details.
>> det(A) % se calcula el determinante
de la matriz A.
ans =
0
>> det(B3) % se calcula el determinante
de la matriz B3.
ans =
0
>> inv(A)
Warning: Matrix is singular to working precision
ans =
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
Inf Inf Inf Inf Inf
>> inv(B3)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.306145e-017.
ans =
1.0e+014 *
Columns 1 through 3
0.93824992236885 2.81474976710656 -2.81474976710656
2.81474976710656 8.44424930131968 -8.44424930131968
-2.81474976710656 -8.44424930131968 8.44424930131968
-0.93824992236885 -2.81474976710656 2.81474976710656
Column 4
-0.93824992236885
-2.81474976710656
2.81474976710656
0.93824992236885
Aplicación de otras funciones matriciales:
a).- Calcular la traza de una matriz A de
orden n x n.
å
=
=
n
i
ii
a
A
tr
1
)
(
>> A
A =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>> trace(A)
ans =
5
>> S = rand(6)
S =
0.8462 0.6813 0.3046 0.1509 0.4966 0.3420
0.5252 0.3795 0.1897 0.6979 0.8998 0.2897
0.2026 0.8318 0.1934 0.3784 0.8216 0.3412
0.6721 0.5028 0.6822 0.8600 0.6449 0.5341
0.8381 0.7095 0.3028 0.8537 0.8180 0.7271
0.0196 0.4289 0.5417 0.5936 0.6602 0.3093
>> det(S)
ans =
-0.0086
>> inv(S)
ans =
0.6337 0.7218 -0.1779 0.9834 -0.6108 -1.4427
-2.0955 -1.0153 5.2501 5.2276 -2.5814 -5.4821
1.5170 -0.4294 -1.6677 -0.4921 -0.5269 2.6532
-3.7470 0.3017 4.3828 6.4094 -2.4589 -6.2616
2.2958 1.5369 -3.3580 -5.1460 1.5409 4.9899
2.4988 -1.7458 -5.5911 -7.7652 5.9709 7.6452
S
S
S
S
I *
* 1
1 -
-
=
=
>> S*inv(S)
ans =
1.0000 0 -0.0000 -0.0000 0 -0.0000
0 1.0000 -0.0000 0.0000 0 0
-0.0000 -0.0000 1.0000 0.0000 0.0000 -0.0000
0 -0.0000 -0.0000 1.0000 0.0000 0.0000
0 -0.0000 -0.0000 -0.0000 1.0000 -0.0000
0.0000 0 -0.0000 -0.0000 0.0000 1.0000
En MATLAB un polinomio se representa
por un vector.
Para crear un polinomio se introducen
cada uno de los coeficientes en orden
descendente.
Si no existe algún coeficiente se
introduce un cero en el lugar
correspondiente.
Ejemplo:
Se quiere introducir el polinomio:
9
2
7 3
4
-
+
- x
x
x
>> pol=[1 -7 0 2 -9]
pol =
1 -7 0 2 -9
>> n=length(pol)
n =
5
MATLAB puede interpretar un vector de
longitud n+1 como un polinomio de grado n, y
con él se pueden hacer varios cálculos
como:
Ø Búsqueda de raíces.
Ø Evaluación del polinomio en uno o varios
puntos.
Ø Obtener la diferenciación.
Ejemplo:
a).- Se quiere evaluar el polinomio dado
en x = 2
>> polyval(pol,2)
ans =
-45
9
2
7 3
4
-
+
- x
x
x
b).- Se quiere evaluar el polinomio dado
en los puntos x = 0,0.25,0.50,¼,2.0
>> x = 0:0.25:2.0
>> polyval(pol,x)
ans =
Columns 1 through 7
-9.0000 -8.6055 -8.8125 -10.1367 -13.0000
-17.7305 -24.5625
Columns 8 through 9
-33.6367 -45.0000
9
2
7 3
4
-
+
- x
x
x
c).- Se quieren encontrar las raíces
del polinomio.
>> r = roots(pol)
r =
6.9854
-1.1144
0.5645 + 0.9152i
0.5645 - 0.9152i
9
2
7 3
4
-
+
- x
x
x
Evalue el polinomio en los elementos del
vector r
>> polyval(pol,r)
ans =
1.0e-011 *
0.2110
0.0053
0 + 0.0002i
0 - 0.0002i
La función poly(r) reconstruye el polinomio
dado el vector de raíces r
>> poly(r)
ans =
1.0000 -7.0000 -0.0000 2.0000 -
9.0000
Ciclo for
Es una estructura usada para repetir un conjunto
de instrucciones si se conoce el numero de veces
que se quiere repetir.
El formato general para esta estructura de control
es:
for k = vin:vfin
instrucciones
end
Las instrucciones se repetiran hasta que k tome el
valor de vfin.
HACIENDO UN PROGRAMA EN MATLAB.
Van a ir a la barra del menú principal a la
opción file y en la opción new seleccionen:
m-file.
Esta opción les abrirá el editor de archivos
de programas m, en donde escribirán las
siguientes instrucciones.
% Programa que genera los primeros n números de la
sucesión de FIBONACCI
%
n = 12;
f = zeros(n, 1);
f(1) = 1;
f(2) = 2;
for k = 3:n
f(k) = f(k-1) + f(k-2);
end
>> profibo(12)
ans =
1
2
3
5
8
13
21
34
55
89
144
233
HACIENDO UNA FUNCION EN
MATLAB.
Van a ir a la barra del menú principal a la
opción file y en la opción new seleccionen:
m-file.
Esta opción les abrirá el editor de archivos
de programas m, en donde escribirán las
siguientes instrucciones.
function f = ffibo(n)
% Sucesión de FIBONACCI
% f = FIBONACCI(n) genera los primeros n
% números de la sucesión de Fibonacci.
f = zeros(n,1);
f(1) = 1;
f(2) = 2;
for k = 3:n
f(k) = f(k-1) + f(k-2);
end
>> f = ffibo(12)
ans =
1
2
3
5
8
13
21
34
55
89
144
233
Funciones:
Una función en MATLAB es un procedimiento que
recibe datos y devuelve uno o mas valores.
Elementos de una función:
•Nombre
•Argumentos (datos que recibe)
•Valor o Valores de regreso (resultado de la
función)
Tanto los argumentos como los valores de
regreso pueden ser entidades numéricas:
Escalares, vectores, matrices o cadenas de
texto.
Las funciones se almacenan en archivos de
texto que tienen nombres que terminan con
la extensión “.m”.
Para poder ejecutar una función, el archivo
“.m”, correspondiente debe estar guardado
en el directorio (carpeta) de trabajo o en
cualquier directorio que esté declarado en
la trayectoria (set path) de búsqueda.
Ciclo while
Es una estructura usada para repetir un conjunto
de instrucciones si la condición especificada es
verdadera.
El formato genral para esta estructura de control
es:
while “expresión”
instrucciones
end
Las instrucciones se repetiran mientras la condición
siga siendo verdadera. Cuando la condición es
evaluada como falsa, se termina el ciclo.
Ejemplo: Programa estwhile.m
% ciclo while
a = 0
while(a < 100)
a = a + 3
end
a =
0
a =
102
La última vez dentro del ciclo antes de salirse es
a=99, entonces 99+3=102
Es importante que dentro de la estructura
while, junto con las instrucciones se incluya
la variable de la condición con el fin de
terminar el ciclo.
Si la condición no cambia el ciclo se
ejecutará una infinidad de veces y el
programa no se detendrá a menos que se
de un Ctrl c

Más contenido relacionado

Similar a Intro_Matlab_1.pdf

Similar a Intro_Matlab_1.pdf (20)

Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlab
 
Manual Matlab 2008
Manual Matlab 2008Manual Matlab 2008
Manual Matlab 2008
 
Presentación de matlab electromagnetismo ...
Presentación de matlab electromagnetismo                                     ...Presentación de matlab electromagnetismo                                     ...
Presentación de matlab electromagnetismo ...
 
Matlab (1)
Matlab (1)Matlab (1)
Matlab (1)
 
Matlab
MatlabMatlab
Matlab
 
003- Clas- Lenguajes de programación.pptx
003- Clas- Lenguajes de programación.pptx003- Clas- Lenguajes de programación.pptx
003- Clas- Lenguajes de programación.pptx
 
Matlab
MatlabMatlab
Matlab
 
Trabajo matlab
Trabajo matlabTrabajo matlab
Trabajo matlab
 
Matlab
Matlab Matlab
Matlab
 
Curso de introduccion_al_matlab
Curso de introduccion_al_matlabCurso de introduccion_al_matlab
Curso de introduccion_al_matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Curso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.pptCurso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.ppt
 
Matlab
MatlabMatlab
Matlab
 
MATLAB 2010
MATLAB 2010MATLAB 2010
MATLAB 2010
 
Clase 7
Clase 7Clase 7
Clase 7
 
Matlab (1)
Matlab (1)Matlab (1)
Matlab (1)
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Silabo programación ii 2015-i
Silabo programación ii 2015-iSilabo programación ii 2015-i
Silabo programación ii 2015-i
 

Intro_Matlab_1.pdf

  • 1. CURSO BASICO DE MATLAB Rina Betzabeth Ojeda Castañeda Irma Delia García Calvillo CIMA, UADEC Enero 2014
  • 2. MATLAB R2006a.lnk MATLAB nombre corto de : MATRIX LABORATORIO
  • 3. MATLAB es: Un software matemático utilizado en la solución de una gran cantidad de problemas identificados en el mundo real. Que utiliza: el cálculo numérico y simbólico.
  • 4. Que integra: q El cálculo q La visualización q La programación en un entorno fácil de usar y en el cual los planteamientos y las soluciones se expresan en forma análoga a la notación matemática usual.
  • 5. Iniciar sesión: Dar un clik al siguiente icono del escritorio de su PC. MATLAB R2006a.lnk Si no se tiene el icono: üir al botón de “inicio” (“start”) del escritorio de su PC übuscarlo en la lista de los programas instalados
  • 6.
  • 7. ESCRITORIO DE MATLAB ELEMENTOS DEL ESCRITORIO: Ventana de Comandos ( Command Window) Historial de Comandos (Command History) Directorio Actual (Current Directory) Ayuda de MATLAB (Help) Visualizador del Espacio de Trabajo (Workspace Browser) Editor de Arrays (Array Editor) Editor y Depurador de Errores (Editor/Debugger) Botón de Inicio (Start) y Launch Pad
  • 8. MATLAB contiene expresiones matemáticas. A diferencia de otros lenguajes de programación: (C, VISUAL BASIC, FORTRAN, PASCAL, y otros), estas expresiones matemáticas se aplican a las matrices.
  • 9. EXPRESIONES EN MATLAB Las matrices y los vectores se combinan, dentro de unas expresiones que constituyen las líneas de comando del prompt o las líneas de un archivo.m del MATLAB.
  • 10. Elementos que construyen las expresiones matemáticas en MATLAB: –Variables –Números y Cadenas de texto –Operadores –Funciones
  • 11. Variables.- Una variable es un símbolo o nombre que contiene datos tales como: •Un vector •Una matriz •Un escalar •Una cadena de texto Los datos contenidos en una variable pueden cambiar en el curso de ejecución del programa o de la sesión.
  • 12. No se necesita ningún tipo de comando para definir variables, ni para declarar dimensiones. Una variable se crea mediante la asignación directa de su valor con: el signo “=“.
  • 13. Ejemplos: En la ventana de comandos escribir: >> x=0:5 x = 0 1 2 3 4 5 >> h = 4.18 h = 4.1800
  • 14. Vayan a la ventana del “WORKSPACE”, y verifiquen que aparecen dos variables: h - escalar (1x1), con valor 4.1800, doble precisión X - vector renglón (1,6), [0 1 2 3 4 5], doble precisión
  • 15.
  • 16. Den doble click en el icono de cada variable para entrar al “editor de arreglos”. Verifiquen e interpreten la información que ahí se presenta
  • 17.
  • 18. Den doble click en el icono de cada variable para entrar al “editor de arreglos”. 1.- Verifiquen e interpreten la información que ahí se presenta 2.- Modifiquen los valores de h y x 3.- Interpreten los cambios hechos.
  • 19. Los nombres de las variables comienzan por una letra, seguida de cualquier número de letras, dígitos o caracteres de subrayado. MATLAB utiliza solamente los primeros N caracteres del nombre de una variable El valor de N varia dependiendo de la versión de MATLAB que se use. Este valor se puede ver usando el comando: >> namelengthmax
  • 20. Además distingue entre mayúsculas y minúsculas. X_men ≠ x_men, o X_Men time ≠ Time ≠ TIME
  • 21. Recordar que: 1.- Una de las reglas de programación dice que el nombre de las variables debe ser MNEMÓNICO (NEMÓNICO) Esto es, que el nombre recuerde a la persona lo que contiene la variable. 2.- Se usan las letras mayúsculas para matrices, minúsculas para vectores y escalares.
  • 22. Las variables no deben tener el mismo nombre de ninguna palabra clave de MATLAB. Para ver la lista de palabras claves de MATLAB, dar el comando >> iskeyword Se despliega una lista de palabras claves
  • 23. MATLAB le permite usar los nombres de sus funciones intrínsecas como nombre de variables. En la práctica esto es un PELIGRO, ya que se puede cambiar el significado de una función, por ejemplo: “sin”. Para verificar si un nombre es el nombre de una función intrínseca de MATLAB, usar el comando: >> which sin
  • 24. Funciones intrínsecas elementales >> abs(x) % valor absoluto de x >> exp(x) % e elevado a la potencia x >> fix(x) % redondeo de x (hacía el cero) x = 3.999, fix(x) = 3 >> log10(x) % logaritmo x base 10 >> rem(x,y) % residuo de x/y >> sqrt(x) % raíz cuadrada de x >> sin(x) % seno de x; x en radianes
  • 25. >> acoth(x) % arcotangente hyperbolica de x >> help elfun % da una lista de todas las funciones elementales
  • 26. Un comando en MATLAB puede tener las dos formas siguientes: – Variable = expresión – Expresión
  • 27. Ejemplos: Escribir el vector columna y usando las dos formas de comando: >> y = [1;2;3] y = 1 2 3 >> [1;2;3] ans = 1 2 3
  • 28. Ejemplos: Se quiere calcular el área de un trapezoide con base horizontal y los dos ejes verticales >> 0.5*5*(12+6) ans = 45 >> base = 5; altura1 = 12; altura2 = 6; >> area = 0.5*base*(altura1+altura2) area = 45
  • 29. Ejercicios: 1.- Realizar las siguientes operaciones: ( ) r z q p w q p z q p r q p - + = - = = + = + = - + + - - + + - * / 4 6 3 2 5 / 2 5 * 8 5 2 5 / 2 5 * 8 5 2
  • 30. 2.- Introducir los siguientes vectores y matrices ( ) ; 3 4 7 8 9 6 5 3 2 3 6 1 8 5 3 2 ; 9 8 7 6 5 4 3 2 1 4 3 2 1 ; 3 2 1 ; 3 2 1 ú ú ú ú û ù ê ê ê ê ë é = ÷ ÷ ÷ ø ö ç ç ç è æ = ÷ ÷ ÷ ÷ ÷ ø ö ç ç ç ç ç è æ = = ÷ ÷ ÷ ø ö ç ç ç è æ = B A y x x t
  • 31. 3.- Efectuar las siguientes instrucciones >> a =2 >> who >> whos >> x1 = a*x >> x2 = a*x’ >> A1 = A*a >> B2 = a*B
  • 32. Números y Cadenas de texto Se pueden definir variables que contengan cadenas de texto, que deben ir siempre entre apóstrofos o comillas simples: >> C = ‘cadena de texto’ C = Cadena de texto >> disp('esto es un ejemplo') esto es un ejemplo El comando disp muestra en pantalla el texto argumento tal y como está escrito
  • 33. Ejemplo: ejecutar las siguientes instrucciones: >> x=45*pi/180; % convierte grados a radianes >> a=sin(x); % calcula el seno de 45º >> b=cos(x);% calcula el coseno de 45º >>disp(‘seno(45*pi/180)') % escribe un texto >> disp(a) % imprime el resultado Ejercicio: DESPLEGAR RESULTADO COSENO
  • 34. >> lower('MATLAB') ans = matlab >> upper('Matlab') ans = MATLAB Los comandos lower y upper convierten la cadena de texto a minúscula y mayúscula respectivamente.
  • 35. Operadores. Las expresiones en MATLAB utilizan los operadores con las reglas de precedencia y convenciones matemáticas tradicionales. Opera con matrices y vectores por medio de los operadores: •aritméticos, •relacionales •lógicos.
  • 36. Operadores aritméticos.- + Adición o Suma - Substracción y Resta * Multiplicación / División División izquierda ^ Potenciación ‘ Matriz transpuesta .* Producto elemento a elemento .^ Potenciación elemento a elemento ./ División elemento a elemento . División izquierda elemento a elemento
  • 37. Ejercicios.- 1.- Realizar las siguientes operaciones: 2.- Obtener las transpuestas de las matrices A, B y el vector y dados. 3.- Realizar las siguientes operaciones: AAt; BBt; xx; yy 4.- Repetir las operaciones de 3) pero ahora elemento a elemento. 3 2 5 8 5 5 . 2 / 8 10 * 3 2 3 - + + -
  • 38. Operadores relacionales: < Menor > Mayor <= Menor o igual >= Mayor o igual == Igual que ~= Distinto que (el signo ~ se genera con Alt-126)
  • 39. Ejecutan comparaciones elemento a elemento entre dos matrices y devuelven una matriz del mismo tamaño cuyos elementos son ceros si la relación es falsa y unos si la relación es cierta. >> Z=[2 4 6; 8 10 12; 14 16 18]; X=zeros(3)+7; >> Z>X ans = 0 0 0 1 1 1 1 1 1
  • 40. Operadores lógicos. Estos operadores permiten combinar o negar expresiones relacionales. & y (and) | o (or) ~ Negación lógica (el signo ~ se genera con Alt- 126)
  • 41. >> D=[2 3 4 5 6 7 8 9]; E=(D>=5)&(D<=8) E = 0 0 0 1 1 1 1 0
  • 42. FORMATOS DE DESPLIEGUE Matlab guarda las matrices en forma decimal y realiza sus cálculos con aritmética decimal. Esta forma decimal conserva cerca de 16 dígitos, pero no los despliega todos por default. Ejemplo: guardar el siguiente escalar
  • 43. >> y = 25.12345678910111213141516 y = 25.1235 >> y1 = 3.4567893 y1 = 3.4568 >> y+y1 ans = 28.5802 ¿ POR QUÉ NO DA EL RESULTADO: 28.5803?
  • 44. Entre lo que ocurre dentro de la máquina al hacer las operaciones y lo que aparece en la pantalla están varios programas que convierten o dan formatos a los números para desplegarlos en la pantalla. ØSi la matriz sólo contiene enteros, entonces despliega con valores enteros (sin puntos decimales) >> Y = [1 2 3; 4 5 6; 7 8 9] Y = 1 2 3 4 5 6 7 8 9
  • 45. Si alguna entrada de la matriz no se representa exactamente como entero, entonces toda la matriz se despliega en format short, con cuatro cifras decimales después del punto (la última cifra pudo ser redondeada). La excepción es el cero, si una entrada es exactamente cero, entonces se despliega como el entero cero. Si un valor aparece como 0.0000, entonces no es exactamente cero.
  • 46. Ejemplos: >> q = [5 0 1/3 2/3 7.123456] q = 5.0000 0 0.3333 0.6667 7.1235 Para ver más de cuatro cifras decimales, se tiene que modificar el formato de despliegue a un formato largo con la instrucción: >> format long
  • 47. Ejemplos: >> q = [5 0 1/3 2/3 7.123456] q = 5.0000 0 0.3333 0.6667 7.1235 Para ver más de cuatro cifras decimales, se tiene que modificar el formato de despliegue a un formato largo con la instrucción: >> format long
  • 48. FORMAT SHORT formato de punto fijo con 5 dígitos. FORMAT LONG formato de punto fijo con 15 digitos para doble precisión y 7 dígitos para simple precision FORMAT SHORT E formato punto flotante con 5 dígitos. FORMAT LONG E formato punto flotante con 15 dígitos para doble precisión y 7 dígitos para simple precision
  • 49. Ejemplo: >> format short; m = 397/17 m = 23.3529 >> format long; m m = 23.35294117647059
  • 50. Ejemplo: >> format short e; m m = 2.3353e+001 >> format long e; m m = 2.335294117647059e+001
  • 51. OTROS FORMATOS FORMAT BANK formato fijo para dólares y centavos FORMAT RAT Aproximación por fracciones de enteros pequeños Los números con un numerador o denominador grande se reemplazan por *
  • 52. Ejemplo: >> format bank; m m = 23.35 >>format rat; m m = 397/17
  • 53.
  • 54. Longitud de un vector.- Es el número de elementos de un vector. >> v = [-4 sin(3) 7 exp(2) 10] v = -4.0000 0.1411 7.0000 7.3891 10.0000 >> n = length(v) n = 5
  • 55. >> A=ones(n) A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> length(A) ans = 5
  • 56. Dimensión de un vector.- Es el número de renglones y columnas. >> v = [-4 sin(3) 7 exp(2) 10] v = -4.0000 0.1411 7.0000 7.3891 10.0000 >> d = size(v) d = 1 5
  • 57. >> A=ones(n) A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> [r c] = size(A) r = 5 c = 5
  • 58. >> B1 = zeros(3,5) B1 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> B2 = ones(size(B1)) B2 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  • 59. Funciones para crear matrices a).- Crear una matriz diagonal con el vector v en la diagonal >> D1 = diag(v) D1 = -4.0000 0 0 0 0 0 0.1411 0 0 0 0 0 7.0000 0 0 0 0 0 7.3891 0 0 0 0 0 10.0000
  • 60. b).- Formar una matriz diagonal a partir de la diagonal de la matriz >> D2 = diag(diag(A)) D2 = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1
  • 61. c).- Formar una matriz triangular superior a partir de la diagonal de la matriz A >> T1 = triu(A) T1 = 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 NOTA: LA MATRIZ A NO NECESITA SER CUADRADA
  • 62. >> T2 = triu(B2) T2 = 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1
  • 63. Composicion de submatrices.- >> C = [eye(2); zeros(2)] C = 1 0 0 1 0 0 0 0
  • 64. >> C1=[C C+2; C+1 C-1] C1 = 1 0 3 2 0 1 2 3 0 0 2 2 0 0 2 2 2 1 0 -1 1 2 -1 0 1 1 -1 -1 1 1 -1 -1
  • 65. >> C2 = [eye(2); ones(2,3)] ??? Error using ==> vertcat CAT arguments dimensions are not consistent.
  • 66. Operador Colon (operador dos puntos :) Representa un rango y se utiliza: a).- para crear vectores renglones de acuerdo a las siguientes reglas: j:k es lo mismo que [j, j+1,…,k] j:k es vacio si j > k j:d:k es lo mismo que [j, j+d,…,j+m*d] con m = fix((k-j))/d) j:d:k es vacio si d > 0 y j, j > k o si d < 0 y j, j < k
  • 67. >> j = 1; k = 10; d = 2; >> u = j:k u = 1 2 3 4 5 6 7 8 9 10 >> u = j:d:k u = 1 3 5 7 9 >> j= 13 j = 13 >> u = j:k u = Empty matrix: 1-by-0 NOTA: POR DEFECTO, EL INCREMENTO, d, ES 1, PERO EL OPERADOR PUEDE UTILIZAR OTROS VALORES ENTEROS Y REALES, POSITIVOS Y NEGATIVOS.
  • 68. >> j= 0; k = 5; d=.5 >> u = j:d:k u = Columns 1 through 7 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 Columns 8 through 11 3.5000 4.0000 4.5000 5.0000
  • 69. >> 100:-8:50 % decremento de -8 ans = 100 92 84 76 68 60 52 >> 0:pi/2:pi % el incremento es de pi/2 ans = 0 1.5708 3.1416 >> y = ans y = 0 1.5708 3.1416
  • 70. La función colon hace lo mismo >> u1 = colon(0,.5,5) u1 = Columns 1 through 7 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 Columns 8 through 11 3.5000 4.0000 4.5000 5.0000
  • 71. b).- El operador también es útil en el caso de manejo de matrices. Matlab accede a los elementos de la matriz por medio de los índices de fila y de columna, que están entre paréntesis y separados por una coma:
  • 72. >> B3 B3 = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> B3(1,4) % extrae el elemento renglón 1 columna 4 ans = 13 >> B3(2:3,4) % extrae de la 4 columna los elementos del renglon 2 y 3 ans = 8 12
  • 73. >> s = sum(B3(1:4,4)) % suma la 4a. columna de la matriz s = 34 >> F = B3([1 3],:) % extrae las filas 1 y 3 de la matriz F = 16 2 3 13 9 7 6 12
  • 74. Operaciones de Vectores: suma, producto, potencias: Suma y resta: >> u = Columns 1 through 7 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 Columns 8 through 11 3.5000 4.0000 4.5000 5.0000 >> u1 u1 = Columns 1 through 7 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 Columns 8 through 11 3.5000 4.0000 4.5000 5.0000
  • 75. >> su = u + u1 su = 0 1 2 3 4 5 6 7 8 9 10 >> su1 = 2*u su1 = 0 1 2 3 4 5 6 7 8 9 10 >> A+D1 ans = -3.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.1411 1.0000 1.0000 1.0000 1.0000 1.0000 8.0000 1.0000 1.0000 1.0000 1.0000 1.0000 8.3891 1.0000 1.0000 1.0000 1.0000 1.0000 11.0000
  • 76. >> A+B3 ??? Error using ==> plus Matrix dimensions must agree >> size(A) ans = 5 5 >> size(B3) ans = 4 4
  • 77. Suma de columnas de una matriz: >> B3 % matriz mágica B3 = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> sum(B3) ans = 34 34 34 34 PONER LA INSTRUCCION HELP SEGUIDA DE LA PALABRA magic
  • 78. ¿QUÉ HARIAN PARA VERIFICAR LA SUMA DE LOS RENGLONES Y DE LA DIAGONAL? >> sum(B3') ans = 34 34 34 34 >> sum(diag(B3)) ans = 34
  • 79. Producto punto o producto escalar.- n nv u v u v u v u + + + = × L 2 2 1 1 Se pueden usar las siguientes tres instrucciones para calcular el producto punto
  • 80. >> p1 = u*u1' % producto punto de dos vectores renglón p1 = 96.2500 >> p2=dot(u,u1) % se usa la función producto punto p2 = 96.2500 >> p3 = sum(u.*u1) % .* (prod.elem.a elem.) p3 = 96.2500
  • 81. AHORA FAVOR DE MULTIPLICAR: u´*u1 ¿QUE ESPERAN OBETENER?
  • 82. >> u'*u1 ans = Columns 1 through 7 0 0 0 0 0 0 0 0 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 0 0.7500 1.5000 2.2500 3.0000 3.7500 4.5000 0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 0 1.2500 2.5000 3.7500 5.0000 6.2500 7.5000 0 1.5000 3.0000 4.5000 6.0000 7.5000 9.0000 0 1.7500 3.5000 5.2500 7.0000 8.7500 10.5000 0 2.0000 4.0000 6.0000 8.0000 10.0000 12.0000 0 2.2500 4.5000 6.7500 9.0000 11.2500 13.5000 0 2.5000 5.0000 7.5000 10.0000 12.5000 15.0000 Columns 8 through 11 0 0 0 0 1.7500 2.0000 2.2500 2.5000 3.5000 4.0000 4.5000 5.0000 5.2500 6.0000 6.7500 7.5000 7.0000 8.0000 9.0000 10.0000 8.7500 10.0000 11.2500 12.5000 10.5000 12.0000 13.5000 15.0000 12.2500 14.0000 15.7500 17.5000 14.0000 16.0000 18.0000 20.0000 15.7500 18.0000 20.2500 22.5000 17.5000 20.0000 22.5000 25.0000
  • 83. Producto de matrices.- >> PM1 = B2*A PM1 = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 AHORA REVISEN EN SU WORKSPACE TODAS LAS MATRICES Y VECTORES QUE TIENEN Y HAGAN MULTIPLICACIONES ENTRE ELLOS, RECORDANDO EL REQUERIMIENTO PARA QUE EXISTA ESTA OPERACIÓN.
  • 84. Producto elemento a elemento.- >> A.*D1 ans = -4.0000 0 0 0 0 0 0.1411 0 0 0 0 0 7.0000 0 0 0 0 0 7.3891 0 0 0 0 0 10.0000 >> A*D1 ans = -4.0000 0.1411 7.0000 7.3891 10.0000 -4.0000 0.1411 7.0000 7.3891 10.0000 -4.0000 0.1411 7.0000 7.3891 10.0000 -4.0000 0.1411 7.0000 7.3891 10.0000 -4.0000 0.1411 7.0000 7.3891 10.0000
  • 85. Potencia de matrices.- Si se quiere calcular la potencia n de alguna matriz, en lugar de hacer el producto de ella misma n veces se utiliza el operador ^ >> D1C=D1^2 D1C = 16.0000 0 0 0 0 0 0.0199 0 0 0 0 0 49.0000 0 0 0 0 0 54.5982 0 0 0 0 0 100.0000
  • 86. Potencia de elemento a elemento.- Se obtiene la potencia de cada elemento de la matriz. >> pote = B3.^3 pote = 4096 8 27 2197 125 1331 1000 512 729 343 216 1728 64 2744 3375 1 >> B3cub = B3^3 B3cub = 10426 9306 9386 10186 9546 10026 9946 9786 9866 9706 9626 10106 9466 10266 10346 9226
  • 87. ¿ Existe la División de vectores o matrices ?. ¿ Porqué si se dan las siguientes instrucciones nos da resultados distintos a algo que indique que no existe la operación de division de vectores ?
  • 88. >> B3cub/B3 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.796086e- 018. ans = 319.3333 180.0000 358.0000 298.6667 239.3333 260.0000 358.0000 298.6667 367.3333 564.0000 54.0000 170.6667 63.3333 -348.0000 886.0000 554.6667 >> A/A Warning: Matrix is singular to working precision. ans = NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
  • 89. / Slash or right matrix divide. A/B is the matrix division of B into A, which is roughly the same as A*INV(B), except it is computed in a different way. More precisely, A/B = (B'A')'. See MLDIVIDE for details.
  • 90. >> det(A) % se calcula el determinante de la matriz A. ans = 0 >> det(B3) % se calcula el determinante de la matriz B3. ans = 0
  • 91. >> inv(A) Warning: Matrix is singular to working precision ans = Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf
  • 92. >> inv(B3) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.306145e-017. ans = 1.0e+014 * Columns 1 through 3 0.93824992236885 2.81474976710656 -2.81474976710656 2.81474976710656 8.44424930131968 -8.44424930131968 -2.81474976710656 -8.44424930131968 8.44424930131968 -0.93824992236885 -2.81474976710656 2.81474976710656 Column 4 -0.93824992236885 -2.81474976710656 2.81474976710656 0.93824992236885
  • 93. Aplicación de otras funciones matriciales: a).- Calcular la traza de una matriz A de orden n x n. å = = n i ii a A tr 1 ) ( >> A A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  • 95. >> S = rand(6) S = 0.8462 0.6813 0.3046 0.1509 0.4966 0.3420 0.5252 0.3795 0.1897 0.6979 0.8998 0.2897 0.2026 0.8318 0.1934 0.3784 0.8216 0.3412 0.6721 0.5028 0.6822 0.8600 0.6449 0.5341 0.8381 0.7095 0.3028 0.8537 0.8180 0.7271 0.0196 0.4289 0.5417 0.5936 0.6602 0.3093 >> det(S) ans = -0.0086
  • 96. >> inv(S) ans = 0.6337 0.7218 -0.1779 0.9834 -0.6108 -1.4427 -2.0955 -1.0153 5.2501 5.2276 -2.5814 -5.4821 1.5170 -0.4294 -1.6677 -0.4921 -0.5269 2.6532 -3.7470 0.3017 4.3828 6.4094 -2.4589 -6.2616 2.2958 1.5369 -3.3580 -5.1460 1.5409 4.9899 2.4988 -1.7458 -5.5911 -7.7652 5.9709 7.6452 S S S S I * * 1 1 - - = =
  • 97. >> S*inv(S) ans = 1.0000 0 -0.0000 -0.0000 0 -0.0000 0 1.0000 -0.0000 0.0000 0 0 -0.0000 -0.0000 1.0000 0.0000 0.0000 -0.0000 0 -0.0000 -0.0000 1.0000 0.0000 0.0000 0 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 0.0000 0 -0.0000 -0.0000 0.0000 1.0000
  • 98. En MATLAB un polinomio se representa por un vector. Para crear un polinomio se introducen cada uno de los coeficientes en orden descendente. Si no existe algún coeficiente se introduce un cero en el lugar correspondiente.
  • 99. Ejemplo: Se quiere introducir el polinomio: 9 2 7 3 4 - + - x x x >> pol=[1 -7 0 2 -9] pol = 1 -7 0 2 -9 >> n=length(pol) n = 5
  • 100. MATLAB puede interpretar un vector de longitud n+1 como un polinomio de grado n, y con él se pueden hacer varios cálculos como: Ø Búsqueda de raíces. Ø Evaluación del polinomio en uno o varios puntos. Ø Obtener la diferenciación.
  • 101. Ejemplo: a).- Se quiere evaluar el polinomio dado en x = 2 >> polyval(pol,2) ans = -45 9 2 7 3 4 - + - x x x
  • 102. b).- Se quiere evaluar el polinomio dado en los puntos x = 0,0.25,0.50,¼,2.0 >> x = 0:0.25:2.0 >> polyval(pol,x) ans = Columns 1 through 7 -9.0000 -8.6055 -8.8125 -10.1367 -13.0000 -17.7305 -24.5625 Columns 8 through 9 -33.6367 -45.0000 9 2 7 3 4 - + - x x x
  • 103. c).- Se quieren encontrar las raíces del polinomio. >> r = roots(pol) r = 6.9854 -1.1144 0.5645 + 0.9152i 0.5645 - 0.9152i 9 2 7 3 4 - + - x x x
  • 104. Evalue el polinomio en los elementos del vector r >> polyval(pol,r) ans = 1.0e-011 * 0.2110 0.0053 0 + 0.0002i 0 - 0.0002i
  • 105. La función poly(r) reconstruye el polinomio dado el vector de raíces r >> poly(r) ans = 1.0000 -7.0000 -0.0000 2.0000 - 9.0000
  • 106. Ciclo for Es una estructura usada para repetir un conjunto de instrucciones si se conoce el numero de veces que se quiere repetir. El formato general para esta estructura de control es: for k = vin:vfin instrucciones end Las instrucciones se repetiran hasta que k tome el valor de vfin.
  • 107. HACIENDO UN PROGRAMA EN MATLAB. Van a ir a la barra del menú principal a la opción file y en la opción new seleccionen: m-file. Esta opción les abrirá el editor de archivos de programas m, en donde escribirán las siguientes instrucciones.
  • 108. % Programa que genera los primeros n números de la sucesión de FIBONACCI % n = 12; f = zeros(n, 1); f(1) = 1; f(2) = 2; for k = 3:n f(k) = f(k-1) + f(k-2); end
  • 110. HACIENDO UNA FUNCION EN MATLAB. Van a ir a la barra del menú principal a la opción file y en la opción new seleccionen: m-file. Esta opción les abrirá el editor de archivos de programas m, en donde escribirán las siguientes instrucciones.
  • 111. function f = ffibo(n) % Sucesión de FIBONACCI % f = FIBONACCI(n) genera los primeros n % números de la sucesión de Fibonacci. f = zeros(n,1); f(1) = 1; f(2) = 2; for k = 3:n f(k) = f(k-1) + f(k-2); end
  • 112. >> f = ffibo(12) ans = 1 2 3 5 8 13 21 34 55 89 144 233
  • 113. Funciones: Una función en MATLAB es un procedimiento que recibe datos y devuelve uno o mas valores. Elementos de una función: •Nombre •Argumentos (datos que recibe) •Valor o Valores de regreso (resultado de la función) Tanto los argumentos como los valores de regreso pueden ser entidades numéricas: Escalares, vectores, matrices o cadenas de texto.
  • 114. Las funciones se almacenan en archivos de texto que tienen nombres que terminan con la extensión “.m”. Para poder ejecutar una función, el archivo “.m”, correspondiente debe estar guardado en el directorio (carpeta) de trabajo o en cualquier directorio que esté declarado en la trayectoria (set path) de búsqueda.
  • 115. Ciclo while Es una estructura usada para repetir un conjunto de instrucciones si la condición especificada es verdadera. El formato genral para esta estructura de control es: while “expresión” instrucciones end Las instrucciones se repetiran mientras la condición siga siendo verdadera. Cuando la condición es evaluada como falsa, se termina el ciclo.
  • 116. Ejemplo: Programa estwhile.m % ciclo while a = 0 while(a < 100) a = a + 3 end a = 0 a = 102 La última vez dentro del ciclo antes de salirse es a=99, entonces 99+3=102
  • 117. Es importante que dentro de la estructura while, junto con las instrucciones se incluya la variable de la condición con el fin de terminar el ciclo. Si la condición no cambia el ciclo se ejecutará una infinidad de veces y el programa no se detendrá a menos que se de un Ctrl c