You are on page 1of 30

Ingeniera Civil

Matemtica IV

ORIGEN
MATLAB nace como una solucin a la necesidad de mejores y ms poderosas herramientas de
calculo para resolver problemas de calculo complejos en los que es necesario aprovechar las
amplias capacidades de proceso de datos de grandes computadores.
El nombre MATLAB viene de "matrix laboratory" (laboratorio matricial). MATLAB fue originalmente
escrito para proveer acceso fcil al software matricial desarrollado por los proyectos LINPACK y
EISPACK, que juntos representan el estado del arte y software para computacin matricial. Hoy
MATLAB es usado en una variedad de reas de aplicacin incluyendo procesamiento de seales e
imgenes, diseo de sistemas de control, ingeniera financiera e investigacin mdica. La
arquitectura abierta facilita usar MATLAB y los productos que lo acompaan para explorar datos y
crear herramientas personalizadas que proveen visiones profundas tempranas y ventajas
competitivas.

INTRODUCCIN
MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente integrado orientado
para llevar a cabo proyectos en donde se encuentren implicados elevados clculos matemticos y la
visualizacin grfica de los mismos. MATLAB integra anlisis numrico, clculo matricial, proceso de
seal y visualizacin grfica en un entorno completo donde los problemas y sus soluciones son
expresados del mismo modo en que se escribiran tradicionalmente, sin necesidad de hacer uso de
la programacin tradicional.
MATLAB dispone tambin en la actualidad de un amplio abanico de programas de apoyo
especializado, denominado Toolboxes, que extienden significativamente el nmero de funciones
incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prcticamente casi
todas las reas principales en el mundo de la ingeniera y la simulacin, destacando entre ellos el
'toolbox' de proceso de imgenes, seal, control robusto, estadstica, anlisis financiero, matemticas
simblicas, redes neurales, lgica difusa, identificacin de sistemas, simulacin de sistemas
dinmicos, etc. es un entorno de clculo tcnico, que se ha convertido en estndar de la industria,
con capacidades no superadas en computacin y visualizacin numrica.
De forma coherente y sin ningn tipo de fisuras, integra los requisitos claves de un sistema de
computacin tcnico: clculo numrico, grficos, herramientas para aplicaciones especficas y
capacidad de ejecucin en mltiples plataformas. Esta familia de productos proporciona al estudiante
un medio de carcter nico, para resolver los problemas ms complejos y difciles

1 ENTRANDO A MATLAB
Una sesin en MATLAB en el ambiente Windows se puede iniciar seleccionando con el Mouse el
icono de MATLAB y haciendo clic dos veces en el icono.
Cuando MATLAB es cargado, aparece una ventana de comandos de MATLAB (Command
Windows), y se exhibe un smbolo (>>) llamado prompt.
En la primera vez es recomendable ejecutar los comandos
>> demo

>> expo

El trmino de una sesin de MATLAB es realizado con el comando exit.


A partir de ese punto, MATLAB espera las instrucciones del usuario.
1.1 CONSIDERACIONES GENERALES
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

MATLAB diferencia entre maysculas y minsculas.


Los nombres de todas las funciones empiezan con minscula.
Varias instrucciones se pueden concatenar en la misma lnea, separadas por comas o
punto y coma. En el primer caso, se muestran por pantalla los resultados obtenidos en la
evaluacin de cada una.
Para continuar una instruccin en la lnea siguiente, por ser demasiado larga, se ponen
tres puntos suspensivos al final de la primera lnea.

2 CARACTERISTICAS BASICAS
2.1 MATEMATICA SENCILLA
MATLAB ofrece las siguientes operaciones bsicas:
OPERACIN
Suma, a+b
Resta, a-b
Multiplicacin, a*b
Divisin, a/b
Potencia, a^b

SIMBOLO
+
*
/
^

Observacin
El trmino que aparece al final de un resultado, ejemplo 3.148702 e2, significa que
el nmero 3.148702 es multiplicado por diez al cuadrado, y si por ejemplo se tiene
1.5768 e-2, nos dice que es multiplicado por diez a la menos dos.
2.2 VARIABLES
Por defecto, MATLAB almacena los resultados en la variable ans.
Las variables pueden contener hasta 19 caracteres. Deben comenzar con una letra.
MATLAB diferencia a la Mayscula de la Minscula.
El punto y coma al final de una lnea le dice a MATLAB que evalu la lnea, pero que no
nos diga la respuesta. Si se quiere ver el resultado se escribe el nombre de la variable.
EJERCICIOS
Mostrar los valores de las siguientes variables:
(a) var=0.475 x 837.2
(b) x1=-4.078 x 3.75
(c) mat= 3 x (5.78/6)
(d) yy=8/5 3.9^2
(e) ric=x1 x mat
(f) te=var yy
(g) total= te/mat
(h) result=

mat var

(i) 5 x (8.497)/2
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

(j) x= ans x ans


(k) z= (x1 + x + yy) x ric
MATLAB tiene algunas variables especiales
Variable

Valor

ans
pi
eps

Nombre por defecto de la variable usada para los resultados


Razn de una circunferencia a su dimetro
Nmero ms pequeo tal que, cuando se le suma 1, crea un nmero
en coma flotante en el computador mayor que 1
Infinito
Magnitud no numrica
i = j = v-1
El nmero real positivo ms pequeo que es utilizable
El nmero real positivo ms grande que es utilizable

inf
NaN
iyj
realmin
realmax

2.3 FOMATOS DE VISUALIZACION DE NUMEROS


A continuacin se presenta una tabla con los formatos numricos de MATLAB

OPER
format short

Visualizacin por defecto

1.3333

format short e

5 dgitos mas exponente

1.3333e+000

format long

16 dgitos

1.33333333333333

format long e

16 dgitos ms exponente 1.333333333333333e+000 1.234500000000000e-006

format hex

Hexadecimal

3ff5555555555555

format rat

Aproximacin racional

4/3

format bank

2 dgitos decimales

1.33

0.0000
1.2345e-006
0.000000123450000

3eb4b6231abfd271

1/810045
0.00

EJERCICIOS
Visualizar los resultados, con los formatos dados en la tabla
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h)

x1= (4.76 x 30)/ (5 x 8)


x2= (8.72) x (8.72) x 3.823
y1= (105.14)/ (16.47+ 28.49)
y2= (x1 x x2 x y1)/ (x2 x 2)
z1= (x2 x y2)/ x1
z2= (x1 +x2+y1)/ (z1+y2)
h1= (y1 x y2) / (x1+ x2)
h2= h1 x h1 / y1

ON SI
Observacin
Cuando MATLAB realiza un clculo, lo hace utilizando los valores que conoce del momento
en que se evalu la orden pedida.
Mediante la orden clear podemos borrar las variables en el espacio de trabajo.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

Otras rdenes son:

clc
Limpia la pantalla, pero colocando hacia atrs los datos.
who Da una lista de los nombres de las variables que se estn utilizando
whos Seala algo ms de las variables.
Clear [variable]
Slo borra el nombre de la variable indicada
help muestra los directorios
help [expresin]
nos muestra el contenido del directorio indicado
quit
para cerrar MATLAB

2.4 OTRAS CARACTERISTICAS BASICAS:


Los comentarios se escriben despus del signo de tanto por ciento (%).
Podemos colocar rdenes mltiples en una lnea si se separan por comas o puntos y
comas. Las comas le dicen a MATLAB que visualice los resultados; los puntos y comas
suprimen la impresin.
Para interrumpir MATLAB en cualquier momento: Ctrl-C.
EJEMPLOS
>> manzanas=4
% Nmero de manzanas.
manzanas =
4
>> platanos=6, melones=2;
% Nmero de pltanos y de melones.
platanos =
6
>> fruta=manzanas+platanos+melones
% Almacena el resultado en la variable fruta
fruta =
12
>> coste=manzanas*25+platanos*22+melones*99
coste =
430
>>coste_medio=coste/fruta
coste_medio =
35.8333
>>who
Your variables are:
manzanas platanos melones fruta
coste coste_medio
>> clear manzanas

3. CARACTERISTICAS CIENTFICAS
3.1 FUNCIONES MATEMTICAS ELEMENTALES
abs (x)
acos (x)
acosh (x)
angle (x)
asin (x)
asinh (x)
atan (x)
atan2 (x,y)
atanh (x)
ceil (x)
Lic. Ana Gamarra Carrasco

Valor absoluto o magnitud de un nmero complejo


Inversa del coseno
Inversa del coseno hiperblico
Angulo de un nmero complejo
Inversa del seno
Inversa del seno hiperblico
Inversa de la tangente
Inversa de la tangente en los cuatro cuadrantes
Inversa de la tangente hiperblica
Redondea hacia ms infinito
Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

conj (x)
cos (x)
cosh (x)
exp (x)
fix (x)
floor (x)
imag (x)
log (x)
log10 (x)
real (x)
rem (x,y)
round (x)
sign (x)
sin (x)
sinh (x)
sqrt (x)
tan (x)
tanh (x)

Matemtica IV

Complejo conjugado
Coseno
Coseno hiperblico
Exponencial
Redondea hacia cero
Redondea hacia menos infinito
Parte imaginaria de un nmero complejo
Logaritmo natural
Logaritmo decimal
Parte real de un nmero complejo
Resto despus de la divisin
Redondea hacia el entero ms prximo
Devuelve el signo del argumento (funcin signo)
Seno
Seno hiperblico
Raz cuadrada
Tangente
Tangente hiperblica

3.2 FUNCIONES MATEMTICAS ESPECIALES


bessel
beta
erf
erfc
gamma

Funcin Bessel
Funcin Beta
Funcin error
Funcin error complementario
Funcin Gamma

3.3 NUMEROS COMPLEJOS :


MATLAB sigue el convenio usual, donde un nmero complejo se escribe como a+bi. La
terminacin con los dos caracteres i y j slo funciona con nmeros simples, no con
expresiones.
Las operaciones matemticas sobre nmeros complejos se escriben de la misma forma
que con nmeros reales.
Las funciones real, imag, abs y angle son tiles para la conversin entre las formas
polar y rectangular.
EJEMPLOS :
Ejemplo 1:
>>a=1; b=4; c=13;
>>x1=(-b+sqrt(b^2-4*a*c))/(2*a)
x1 =
-2.0000 + 3.0000i
>>x2=(-b-sqrt(b^2-4*a*c))/(2*a)
x2 =
-2.0000 - 3.0000i
>> a*x1^2+b*x1+c % Sustituimos x1 para comprobar la respuesta.
ans =
0
>> a*x2^2+b*x2+c % Sustituimos x2 para comprobar la respuesta.
ans =
0
Ejemplo 2:
>> c1=1-2i % Con j en lugar de i tambin funciona.
c1 =
1.0000 - 2.0000i
>>c2=3*(2-sqrt(-1)*3); c3=sqrt(-2); c4=6+sin(.5)*j
c4 =
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

6.0000 + 0.4794i
>>c5=(c1+c2)/c3
c5 =
-7.7782 - 4.9497i

4 ARRAYS
4.1. ARRAYS SIMPLES :
Para crear un array en Matlab comenzamos con un corchete de apertura, introducimos
los valores deseados separados por espacios ( o por comas ) y cerramos el array con un
corchete de cierre.
Variable=[(lista de nmeros separados por espacios o comas)]
4.2. DIRECCIONAMIENTO DE ARRAYS :
Los elementos individuales de un array se acceden utilizando subndices; as, x(1) es el
primer elemento en x.
Para acceder a un bloque de elementos a la vez, se usa la notacin de dos puntos; as,
x(1:5) nos da los elementos del primero al quinto del array de elementos. Si introduc imos
un nmero entre el primero y el segundo, tambin separado por dos puntos (:), entonces se
mostrarn los elementos del primero al ltimo indicado, incrementados o decrementados el
nmero que aparece en el centro; as, si ponemos x(2:2:7), obtenemos el segundo,cuarto y
sexto elemento del array.
Otra forma de obtener un conjunto concreto de elementos del array es indicando entre
corchetes las posiciones de los elementos que queremos obtener; ponemos parntesis fuera
de los corchetes. Ejemplo : y([8 2 9 1]).
4.3. CONSTRUCCION DE ARRAYS :
Otras dos formas de introducir arrays son:
a.- Mediante la notacin dos puntos, (0:0.1:1) crea un array que comienza en cero,
incrementa 0.1 y finaliza en 1.
b.- Mediante la funcin linspace :
linspace(primer_exponente,ltimo_exponente,nmero_de_valores)
Las dos formas anteriores crean arrays donde los elementos individuales estn
espaciados linealmente entre s. Para espaciado logartmico:
logspace(primer_exponente,ltimo_exponente,nmero_de_valores)
4.4. MATEMATICAS CON ARRAYS DE ESCALARES :
Las operaciones matemticas sencillas entre escalares y arrays siguen una interpretacin
natural, es decir, se aplica la operacin a todos los elementos del array.
4.5. MATEMATICAS CON ARRAYS DE ARRAYS :
Cuando dos arrays tienen la misma longitud y orientacin, la suma, resta, multiplicacin y
divisin se aplican sobre la base de elemento-a-elemento.
Para multiplicar dos arrays elemento a elemento, escribimos .*, ya que si ponemos slo *,
sera multiplicacin matricial. Lo mismo para la divisin de arrays y la potencia de un array.
Se pueden combinar operaciones escalares y de arrays.
4.6. ORIENTACION DEL ARRAY :
Separar los elementos por espacios o comas especifica elementos en distintas columnas
(vector fila ); separar elementos por puntos y comas especifica elementos en filas diferentes
(vector columna ).
Usando el operador transpuesta ( ' ) de Matlab, podemos pasar de vector fila a vector
columna, y viceversa.
En el caso de un array complejo, la transpuesta ( ' ) da la transpuesta compleja conjugada.
La transpuesta con punto ( .' ) transpone el array, pero no lo conjuga.
La creacin de matrices ( orientacin rectangular ) sigue la misma estructura de los vectores
fila y columna.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

Adems de los puntos y comas, pulsando la tecla enter cuando se est introduciendo una
matriz, tambin le dice a Matlab que comience una nueva fila.
Una matriz puede tener mltiples filas, pero cada fila debe tener un nmero igual de
columnas.
EJEMPLOS :
Ejemplo 1:
>> x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]
x=
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416
>> y=sin(x)
y=
Columns 1 through 7
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
Columns 8 through 11
0.8090 0.5878 0.3090 0.0000
>> x(3)
% El tercer elemento de x.
ans =
0.6283
>> x(1:5) % Para obtener los elementos del primero al quinto en x.
ans =
0 0.3142 0.6283 0.9425 1.2566
>>y(3:-1:1) % Comienza con 3, disminuye en una unidad, y para en 1.
ans =
0.5878 0.3090 0
>> y([8 2 9 11]) % Obtenemos los elementos 8, 2, 9 y 11 del array y.
ans =
0.8090 0.3090 0.5878 0
Ejemplo 2 :
>> a=1:5,b=1:2:9
a=
1 2 3 4 5
b=
1 3 5 7 9
>> c=[b a] % Crea un array de los elementos de b seguidos de los elementos de a
c=
1 3 5 7 9 1 2 3 4 5
>> a-2 % Matemticas con arrays de escalares.
ans =
-1 0 1 2 3
>>a.*b % Matemticas con arrays de arrays.
ans =
1 6 15 28 45
OPERACIONES BASICAS
max
mean
median
min
prod
sort
sum
Lic. Ana Gamarra Carrasco

Mayor componente
Promedio
Mediana
Menor componente
Producto de elementos
Ordenacin en forma ascendente
Suma de elementos
Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

5. MATRICES
5.1 ENTRADA DE MATRICES
Las matrices pueden ser introducidas en MATLAB de diversas maneras>
Digitadas en la ventana de comandos (lista explicita de elementos)
Generadas por comandos y funciones.
Creadas en archivos .m.
Cargadas a partir de un archivo de datos externos.
El mtodo ms fcil de entrar con pequeas matrices en MATLAB es usando una lista explicita.
Los elementos de cada lnea de la matriz son separados por espacios en blanco o comas, y las
columnas separadas por punto y coma, colocndose corchetes alrededor de los elementos que
forman la matriz. Por ejemplo,
>> A=[1 2 3;4 5 6; 7 8 9]
A=
1
2
3
4
5
6
7
8
9
Otra manera para entrar matrices, es travs de un archivo en formato texto con extensin .m.
Por ejemplo, si un archivo llamado gera.m contiene los siguiente
A=[1 2 3;4 5 6; 7 8 9]
Entonces gera lee el archivo e introduce la matriz A.
>>gera <enter>
El comando load puede leer matrices generadas por MATLAB o por otros programas
almacenadas en archivos ASCII.
5.2 ELEMENTOS DE LAS MATRICES
Los elementos de las matrices pueden ser cualquier expresin de MATLAB, y se direccionan en
el formato fila, columna A(fila, columna), por ejemplo:
>> x=[-1.3 sqrt(2) ((1+2+2)*4/5)^2 ]
resultando
x=
-1.3000
1.4142
23.0400
Un elemento de una matriz puede ser referenciado con los subndices de los elementos
deseados entre parntesis.
5.3 MANIPULACIN MATRICIAL
Considere en ejemplo anterior que
>> x(6)=abs(x(1))
lo que produce
x=
-1.300
1.4142
23.0400
0
0
1.3000
Note que la dimensin del vector x es aumentado automticamente para acomodar el nuevo
elemento y los elementos de intervalo indefinido son establecidos como cero.
Grandes matrices pueden ser construidas a partir de pequeas matrices. Por ejemplo para
anexar otra fila a la matriz A haremos lo siguiente
>> r=[10 11 12];
>> A=[A; r]
que resulta
A=
1
2
3
4
5
6
7
8
9
10
11
12
y si queremos anexar a nuestra matriz A otra columna, escribimos
>> r=[10 11 12];
>> A=[A r]
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

que resulta
A=
1
4
7

2
5
8

3
6
9

10
11
12

5.4 SUBMATRICES
Utilizar el smbolo dos puntos (:) como la designacin de filas o columnas implica,
respectivamente, todas las filas o columnas. Sea A una matriz m x n, entonces
A(:,:) :=
todas las filas y columnas
A(:,j) :=
todas las filas de la j-sima columna
A(:,j:m) :=
todas las filas y las columnas de j hasta m
A(:,j:r:m) :=
todas las filas y las columnas de j hasta m de r en r
A(i,:) :=
todas las columnas de la fila i
A(i:n,:) :=
todas las columnas y las filas de i hasta n
A(i:p:n,:) :=
todas las columnas y las filas de i hasta n de p en p
Por ejemplo, A(:,1) representa todas las filas en la columna uno. A(1:3,:) selecciona las tres
primeras filas y todas las columnas de la matriz A actual. A(10:-3:1,:) significa filas desde 10
hasta la 1 de 3 en 3.
Ejemplo
>> A=[4 5 2 2 3; 3 1 0 1 7; 8 9 3 5 6; -1 4 pi 3; 0 2 1 4 5];
>> A=[2:2:4,1:3]
ans=
3
1
0
-1

4
Si Fijamos las filas o columnas de una matriz igual a la matriz vaca [ ], esto elimina estas filas o
columnas. Por ejemplo A(:,2)=[ ], elimina todas las filas de la segunda columna de A.
Usar slo los dos puntos, por ejemplo, A(:), reagrupa una matriz en un vector columna, tomando
todas las columnas a un tiempo.
Ejercicio
Escribir la siguiente matriz
>>A=[1:5,6:10,11:15,16:20]
y observar la salida de los siguientes comandos
>>A(1,:)
>>A(2,:)
>>A(:,3)
>>A(1, 1:2:5)
>>A([2 4],:)
>>A(4:-1:1,5:-1,1)
>>A([1 1],[2 2])
>>A([3 2], [5 4])
5.5 OPERACIONES MATRICIALES
En esta parte veremos algunas operaciones que se efectan en las matrices
Para multiplicar matrices usaremos * . El carcter apostrofe indica la transpuesta de la
matriz A.
En MATLAB para efectuar la divisin, existen dos smbolos \ y /. Si A es una matriz cuadrada
no singular, entonces A\B y A/B corresponden respectivamente a la multiplicacin a la izquierda y
a la derecha de la matriz B por la inversa de la matriz A, es decir inv(A)*B y B*inv(A). En general
X=A\B es la solucin de A*X=B
X=A/B es la solucin de X*A=B
OTRAS CARACTERISTICAS:
La transpuesta compleja conjugada de la matriz compleja A se escribe como A'. A.' es
la transpuesta de la matriz A.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

Ingeniera Civil

Matemtica IV

d=eig(A) devuelve los valores propios asociados con la matriz cuadrada A como un
vector columna.
[V,D]=eig(A) devuelve los vectores propios en la matriz V y los valores propios como los
elementos diagonales en la matriz D.
[L,U]=lu(A) calcula la factorizacin LU de la matriz cuadrada A.
[Q,R]=qr(A) calcula la factorizacin QR de la matriz A.
[U,S,V]=svd(A) calcula la descomposicin en valores singulares de la matriz A.
rank(A) devuelve el rango de la matriz A.
cond(A) devuelve el nmero de condicin de la matriz A.
norm(A) calcula la norma de la matriz A. Admite el clculo de norma-1, norma-2, normaF y norma -.
poly(A) encuentra el polinomio caracterstico asociado con la matriz cuadrada A.
polyvalm(v,A) evala el polinomio caracterstico v usando la matriz cuadrada A.
det(A) determinante de la matriz A
q=null(A) devuelve una base ortonormal para elespacio nulo
trace(A) traza de la matriz A
r=chol(A) factorizacin cholesky.

5.6 MANIPULACIONES EN MATRICES


La funcin find devuelve los subndices o ndices donde una expresin relacional es verdadera.
La funcin size devuelve el nmero de filas y de columnas. La funcin length devuelve la
longitud de un vector o la mxima dimensin de una matriz.
Otras caractersticas sobre la manipulacin matricial son:
flipud(A) intercambia una matriz de arriba abajo.
fliplr(A) intercambia una matriz de izquierda a derecha.
rot90(A) gira una matriz en direccin contraria a las agujas del reloj.
reshape(A,m,n) devuelve una matriz mxn cuyos elementos se toman por columnas de
A. A debe contener mxn elementos.
diag(v) crea una matriz diagonal, con el vector v sobre la diagonal.
diag(A) extrae la diagonal de la matriz A como un vector columna.
tril(A) devuelve la parte inferior de una matriz A
triu(A) devuelve la parte superior de una matriz A
EJEMPLOS :
Ejemplo 1:
>> A=[1 2 3;4 5 6;7 8 9] % Introducimos la matriz A.
A=
1 2 3
4 5 6
7 8 9
>> A(3,3)=0 % Cambia a cero el elemento de la tercera fila y tercera columna.
A=
1 2 3
4 5 6
7 8 0
>> A(2,6)=1 % Coloca 1 en la segunda fila, sexta columna.
A=
1 2 3 0 0 0
4 5 6 0 0 1
7 8 0 0 0 0
>> B=A(3:-1:1,1:3) % crea una matriz B tomando las filas de A en orden inverso.
B=
7 8 9
4 5 6
1 2 3
>> B=A(3:-1:1,:); % Hace lo mismo que el ejemplo anterior.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

10

Ingeniera Civil

Matemtica IV

>> C=[A B(:,[1 3])] % Crea C aadiendo todas las filas en la primera y tercera columna de B a la
derecha de A.
C=
1 2 3 7 9
4 5 6 4 6
7 8 9 1 3
>> B=A(1:2,2:3) % Crea B extrayendo las primeras dos filas y las ltimas dos columnas de A.
B=
2 3
5 6
>> C=[1 3]
C=
1 3
>> B=A(C,C) % Usa el array C para indexar la matriz A.
B=
1 3
7 9
>> B=A(:); % Construye B al disponer A en un vector columna tomando todas sus columnas a un
tiempo.
>> B=B.' % Operacin punto-transpuesta.
B=
1 4 7 2 5 8 3 6 9
>> B=A; B(:,2)=[] % Redefine B eliminando todas las filas en la segunda columna de la original B.
B=
1 3
4 6
7 9
>> B=B.'; B(2,:)=[] % Elimina la segunda fila de B.
B=
1 4 7
>> A(2,:)=B % Sustituye la segunda fila de A con B.
A=
1 2 3
1 4 7
7 8 9
>> B=A(:,[2 2 2 2]) % Crea B duplicando todas las filas en la segunda columna de A cuatro
veces.
B=
2 2 2 2
4 4 4 4
8 8 8 8
Ejemplo 2:
>> x=-3:3 % Introducimos datos.
x=
-3 -2 -1 0 1 2 3
>> abs(x)>1 % Da unos donde el valor absoluto de x es mayor que 1.
ans =
1 1 0 0 0 1 1
>> y=x(abs(x)>1) % Crea y al tomar aquellos valores de x donde su valor absoluto es mayor que
1.
y=
-3 -2 2 3
>> y=x([1 1 1 1 0 0 0]) % Crea y seleccionando slo los primeros 4 valores, y descartando los
otros.
y=
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

11

Ingeniera Civil

Matemtica IV

-3 -2 -1 0
>> y=x([1 1 1 1]) % Crea y tomando el primer elemento de x cuatro veces.
y=
-3 -3 -3 -3
>> x(abs(x)>1)=[] % Elimina valores de x donde abs(x)>1.
x=
-1 0 1
Ejemplo 3:
>> b=[5 -3;2 -4]
b=
5 -3
2 -4
>> x=abs(b)>2 % La extraccin de arrays lgicos 0-1 tambin funciona con matrices
x=
1 1
0 1
>> y=b(abs(b)>2) % Los resultados se convierten a un vector columna.

y=
5
-3
4
Ejemplo 4:
>> x=-3:3
x=
-3 -2 -1 0 1 2 3
>> k=find(abs(x)>1) % Encuentra aquellos subndices donde abs(x)>1.
k=
1 2 6 7
>> y=x(k) % Crea y utilizando los ndices en k.
y=
-3 -2 2 3
Ejemplo 5:
>> A=[1 2 3 4; 5 6 7 8]; B=pi:0.01:2*pi;
>> s=size(A) % devuelve un vector fila cuyo primer elemento es el nmero de filas y cuyo
segundo elemento es el nmero de columnas.
s=
2 4
>> [r,c]=size(A) % Devuelve el nmero de filas en la primera variable y el nmero de columnas
en la segunda variable.
r=
2
c=
4
>> lenght(A) % Devuelve el nmero de filas o de columnas, cualquiera que sea mayor.
ans =
4
>> size (B) % Muestra que B es un vector fila.
ans =
1 315
>> lenght(B) % Devuelve la longitud del vector (315).
5.7 MATRICES ESPECIALES :
zeros(n) Matriz de ceros (nxn).
ones(n,m) Matriz de unos (nxm).
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

12

Ingeniera Civil

Matemtica IV

rand(n,m) Matriz (nxm) de nmeros aleatorios distribuidos uniformemente entre cero y


uno.
randn(n,m) Matriz (nxm) de nmeros aleatorios distribuidos normalmente con media
cero y varianza unidad.
eye(n,m) Matriz identidad (nxm).
magic(n) Matriz cuadrada magica (la suma de se sus filas o columnas es la misma que
la suma de diagonal).

13.1 EJEMPLOS :
>> zeros(3) % Una matriz 33 de ceros.
ans =
0 0 0
0 0 0
0 0 0
>> ones(2,4) % Una matriz 24 de unos.
ans =
1 1 1 1
1 1 1 1
>> rand(3,1)
ans =
0.2190
0.0470
0.6789
>> randn(2)
ans =
1.1650 0.0751
0.6268 0.3516
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
>> A=[1 2 3;4 5 6];
>> ones(size(A)) % Una matriz de unos del mismo tamao que A.
ans =
1 1 1
1 1 1

6. POLINOMIOS
6.1 RAICES :
Un polinomio se representa por un vector fila con sus coeficientes en orden descendente; se
deben incluir los trminos con coeficientes nulos. Las races de un polinomio se encuentran
utilizando la funcin roots(p). Matlab adopta el convenio de que los polinomios son vectores fila
y las races son vectores columna. Dadas las races de un polinomio, es posible construir los
polinomios asociados mediante la funcin poly(r).
6.2 OTRAS CARACTERISTICAS:
Matlab ofrece muchas capacidades para la manipulacin de polinomios:
conv(a,b) multiplica los dos polinomios a y b.
deconv(c,b) divide el polinomio b entre c.
polyder(p) calcula la derivada del polinomio p.
polyval(p,x) evala el polinomio p en todos los valores de x.
residue(n,d) calcula el desarrollo en fracciones simples del cociente de n a d, donde n y
d son polinomios.
polyder(n,d) calcula la derivada del cociente de n a d, donde n y d son polinomios.
Matlab no tiene incorporada una funcin para sumar polinomios. Sin embargo, es fcil
construir un archivo-M de funcin que lo haga.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

13

Ingeniera Civil

Matemtica IV

EJEMPLOS :
Ejemplo 1 :
>> p=[1 -12 0 25 116] % Incluimos trminos con coeficientes nulos.
p=
1 -12 0 25 116
>> r=roots(p) % races del polinomio p.
r=
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 + 1.4672i
>> pp=poly(r) % Polinomios asociados.
pp =
1.0e+02 *
Columns 1 through 5
0.0100 -0.1200 -0.0000 0.2500 1.1600 + 0.0000i
>> pp=real(pp) % Extrae la parte real.
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
Ejemplo 2 :
>> a=[1 2 3 4]; b=[1 4 9 16];
>>c=conv(a,b) % Multiplicacin.
c=
1 6 20 50 75 84 64
>> d=a+b % Suma.
d=
2 6 12 20
>> e=c+[0 0 0 d] % Porque son de distinto grado.
e=
1 6 20 52 81 96 84
>> f=c+[0 0 0 -d] % Resta.
f=
1 6 20 48 69 72 44
>> [q,r]=deconv(c,b) % Divisin.
q=
1 2 3 4
r=
0 0 0 0 0 0 0
>> g=polyder (f) % Derivada.
g=
6 30 80 144 138 72
% EJERCCIOS - COMANDOS BSICOS DE MATLAB
% EJECUTE LOS SIGUIENTES COMANDOS E INTERPRETE LOS RESULTADOS
a = 2500/20
a = 2500/20;
b = [1 2 3 4 5 6 7 8 9]
c = [1 2 3 ; 4 5 6 ; 7 8 9]
c = [c ; [10 11 12]
c(2,2) = 0
l = length(b)
[m,n] = size(b)
[m,n] = size(c)
who
whos
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

14

Ingeniera Civil

Matemtica IV

clear
who
b = l + 2 + 3 + 4 + ...
5+6-7
x=1:2:9
x = (0.8 : 0.2 : 1.4);
y = sin(x)
help sin
dir
a = 2^3
a = 4/3
format long
a = 4/3
format short
clear
a=[1 2 3 ; 4 5 6 ; 7 8 9];
b = a
c=a+b
c=a-b
a(l,:) = [-1 -2 -3]
c = a(:,2)
c = a(2:3, 2:3)
x = [- 1 0 2];
y = [-2 -1 1];
x*y
c=x+2
a = [1 0 2; 0 3 4 ; 5 6 0];
size(a)
b = inv(a);
c = b*a
c = b/a
c = b\a
clear a b x y
whos
% Trabajando con nmeros complejos
i = sqrt(-1)
a = [1 2;3 4] + i*[5 6;7 8]
realz = real(z)
imagz = imag(z)
modz = abs(z)
fasez = angle (z)
% Multiplicacin de polinomios
% x3 = (x^2 + 3x + 2).(x^2 - 2x + 1)
x3 = conv([1 2 3],[1 -2 1]) % Como el hace esto?
% Determinacin de las races de un polinomio
roots([1 3 2])
roots([1 -2 1])
roots(x3)
% Utilitrios para matrices
a = eye(4)
a = rand(5)
help rand
b = [2 0 0;0 3 0;0 0 -1];
d = det(b)
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

15

Ingeniera Civil

Matemtica IV

l = eig(b)
help det
help eig
clear
El comando
>> diag(v,k), donde v es un vector con n elementos, genera una matriz cuadrada de orden n+|k| con
los elementos de v en la k-diagonal. k=0 significa la diagonal principal, k>0 diagonal que estn
encima de la diagonal principal y k<0 significa la diagonal inferior de la referida.
Por ejemplo, si queremos generar una matriz tridiagonal, escribimos lo siguiente:
>> b=4*eyes(5)-diag(ones(1,3),2)-diag(ones(1,3),-2)

7. GRAFICOS EN MATLAB
7.1 GRAFICAS SIMPLES:
Primero se crean los valores para el eje horizontal X ( variable independiente ); a continuacin se
calcula el eje vertical Y ( variable dependiente ); y la orden plot genera la grfica:
>>plot(x,y)
Opciones de la funcin plot:
Superponer grficas sobre los mismos ejes:
>>plot(x,y,x,z)
Usar distintos tipos de lneas para el dibujo de la grfica:
>>plot(x,y,'+')
Adems se pueden colocar etiquetas sobre los ejes:
Etiqueta sobre el eje X de la grfica actual:
>>xlabel('texto')
Etiqueta sobre el eje Y de la grfica actual:
>>ylabel('texto')
Un ttulo en la cabecera de la grfica actual:
>>title('texto')
Dibujar una rejilla:
>>grid
7.2 ESTILO DE LINEAS, MARCADORES Y COLORES :
Se pueden especificar los colores y estilos de lnea dando un argumento adicional a plot
despus de cada pareja de arrays de datos. El argumento opcional adicional es una cadena de
caracteres formada por uno, dos o tres caracteres de la tabla siguiente:

SIMBOLO
y
m
c
r
g
b
w
k

COLOR
amarillo
magenta
celeste
rojo
verde
azul
blanco
negro

SIMBOLO
.
O
x
+
*
:
-.
--

ESTILO DE LINEA
punto
crculo
marca-x
ms
estrella
lnea slida
lnea punteada
lnea punto-raya
lnea de trazos

7.3. ADICION DE REJILLAS Y ETIQUETAS :


La orden grid on aade una rejilla a la grfica actual en las marcas. La orden grid off elimina la
rejilla. grid sin ningn argumento, las conmuta. Los ejes horizontal y vertical se pueden etiquetar,
respectivamente, con las rdenes xlabel e ylabel. La orden title aade una lnea de texto en la
parte superior de la grfica.
Podemos aadir tambin cualquier cadena de texto a cualquier localizacin especfica en la
grfica con la orden:
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

16

Ingeniera Civil

Matemtica IV

text(x,y,'string'), donde (x,y) representa las coordenadas de la arista del centro izquierda de la
cadena de texto en unidades tomadas de los ejes de la grfica. Tambin se puede poner una
cadena de texto con el ratn:
gtext('string')
7.4 EJES A MEDIDA :
ORDENES
axis([xmin xmax ymin ymax])
axis auto
axis('auto')

DESCRIPCION
Fija los valores mximo y mnimo de los ejes usando
los valores dados en el vector fila.
Devuelve el escalado de los ejes a sus valores por
defecto: xmin=min(x), xmax=max(x), etc.

7.5 MANIPULACION DE GRAFICOS


Cuando queremos tener tener mas de un grfico generados por dos o mas comandos plot, en una
unica ventana, debemos usar el comando hold on. Para desactivar esta orden usar el comando hold
off.
La orden subplot(m,n,p) subdivide la ventana de la figura actual en una matriz mxn de las reas de
representacin grfica y escoge como activa el rea p-sima. Para retornar al modo por defecto:
subplot(1,1,1). As, subplot (2,2,3) significa que la ventana grafica esta dividida en cuatro partes
(2x2) y parte donde va el diseo es el numero tres
7.6 OTRAS CARACTERSTICAS DE LOS GRAFICOS 2D
Tambin existen otros comandos que me hacer graficas como por ejemplo en coordenadas polares,
los cuales se mencionan a continuacin:
ORDENES
DESCRIPCION
polar(t,r,S)
Crea grficos en coordenadas polares, donde t es el vector de
ngulos en radianes, r es el radio vector y S es una cadena de
caracteres opcional que describe color, smbolo que se emplea para
marcar y/o estilo de lnea.
bar(x,y)
stairs
Generan, respectivamente, los grficos de barras y en escala.
hist(y)
Dibuja un histograma.
hist(y,n)
Dibuja un histograma con n elementos ( n es un escalar).
hist(y,x)
Dibuja un histograma usando los elementos especificados en x
(vector).
errorbar(x,y,e)
Representa la grfica del vector x frente al vector y con barras de
error especificadas por el vector e.
fplot
Representa automticamente una funcin de una variable entre
lmites especificados sin crear un conjunto de datos para la variable.
fill(x,y,'c')
Rellena el polgono 2-D definido por los vectores columna x e y con
el color especificado por c.

EJEMPLOS
Ejemplo 1 :
>> x=linspace(0,2*pi,30); % Crea 30 datos en el intervalo 0 x 2p
>> y=sin(x); % Vector que contiene el seno de los datos en x.
>> plot(x,y) %Grafica x versus a y.
>> z=cos(x);
>> plot(x,y,x,z) % Grafica un seno y un coseno en la misma grfica.
>> W=[y;z]; % Crea una matriz con las funciones seno y coseno.
>> plot(x,W) % Representa las columnas de W frente a x.
>> plot(W,x) % Representa x frente a las columnas de W.
>> plot(x,y,'g:',x,z,'r--',x,y,'wo',x,z,'c+') % Usa diferentes estilos de lnea, colores y marcas de puntos.
>> plot(x,y,x,z)
>> grid % Activa la rejilla.
>> xlabel('Variable Independiente X') % Etiqueta del eje x.
>> ylabel('Variables dependientes Y y Z') % Etiqueta del eje y.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

17

Ingeniera Civil

Matemtica IV

>> title('Curvas de seno y coseno') % Ttulo de la grfica.


>> text(2.5,0.7,'sin(x)') % Aade una etiqueta sin(x) en la posicin (2.5,0.7).
>> gtext('cos(x)') % Etiqueta la grfica del coseno con el ratn.
Ejemplo 2 :
>> x=linspace(0,2*pi,30);
>> y=sin(x);
>> z=cos(x);
>> a=2*sin(x).*cos(x);
>> b=sin(x)./(cos(x)+eps);
>> subplot(2,2,1) % Selecciona la subgrfica superior izquierda.
>> plot(x,y),axis([0 2*pi -1 1]),title('sin(x)')
>> subplot(2,2,2) % Selecciona la subgrfica superior derecha.
>> plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')
>> subplot(2,2,3) % Selecciona la subgrfica inferior izquierda.
>> plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)')
>> subplot(2,2,4) % Selecciona la subgrfica inferior derecha.
>> plot(x,b),axis([0 2*pi -1 1]),title('sin(x)/cos(x)')

>> subplot(1,1,1) % Retorna a una nica grfica en la ventana de figura.


Ejemplo 3 :
>> t=0:.01:2*pi;
>> r=sin(2*t).*cos(2*t);
>> polar(t,r)
>> title('Grfico polar de sin(2t)cos(2t)')

8. GRAFICOS 3-D :
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

18

Ingeniera Civil

Matemtica IV

8.1. GRAFICOS DE LINEA :


Extendemos la orden plot de 2-D a 3-D con plot3. El formato es el mismo, excepto
que los datos estn en tripletes.
8.2. GRAFICOS DE MALLA Y DE SUPERFICIE :
[X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son copias del vector x, y una
matriz Y cuyas columnas son copias del vector y.
Una vez dada esta orden, la grfica de malla se genera mediante: mesh(X,Y,Z).
mesh acepta un argumento opcional para controlar los colores. Tambin puede tomar
una matriz simple como un argumento: mesh(Z).
Ejemplo 1 :
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> title('Hlice'),xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')

Ejemplo 2 :
>> x=-7.5:.5:7.5;
>> y=x;
>> [X,Y]=meshgrid(x,y); % Genera puntos igualmente espaciados en el plano xy entre -7.5 y 7.5
en ambos x e y.
>> R=sqrt(X.^2+Y.^2)+eps; % Distancia desde el origen (0,0).
>> Z=sin(R)./R;
>> mesh(X,Y,Z) % Genera la grfica de malla.
>> surf(X,Y,Z) % Genera la grfica de superficie.

9. OPERADORES Y CONTROLES DE FLUJO


9.1 OPERADORES RELACIONALES
El objetivo de estos operadores es responder a las preguntas de tipo verdadero/falso y
tambin controlar el flujo o orden en ejecucin de un conjunto de comandos de MATLAB.
OPERADOR
<
<=
>
Lic. Ana Gamarra Carrasco

SIGNIFICADO
Menor que
Menor o igual que
Mayor que
Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

19

Ingeniera Civil

>=
==
~=
&
|
~

Matemtica IV

Mayor o igual que


Igual a
No igual a
AND lgico
OR lgico
NOT lgico

9.2 CONTROL DE FLUJO


MATLAB ofrece mecanismos que permiten controlar el flujo de ejecucin de comandos
basados en estructuras de decisin. Es recomendable que sean escritas en archivos de texto
.m
9.2.1 FOR
El bucle for permite ejecutar un grupo de comandos repetidamente un nmero fijo y
predeterminado de veces. La sintaxis es la siguiente
for k=k-inicial:incremento:k-final
conjunto de comandos
end
Ejemplo 1
for n=1:5
for m=5:-1:1
A(n,m)=n^2+m^2;
end
end
Ejemplo 2
Para generar una tabla de valores de la funcin y=f(x)=1+sen(x) sobre el intervalo [-2,2] de
paso 0.25
j=0
for k=-2:0.25:2
j=j+1;
y(j)=1+sin(pi*k);
end
y
9.2.3 WHILE
Este comando permite ejecutar operaciones hasta que una condicin lgica no sea
satisfecha. La sintaxis es
while expresin lgica
grupo de comandos
end
Ejemplo 1
n!=prod(1:n)
Cul es el mayor valor de n talque n! Sea menor que 8 000?
n=1;
while prod(1:n)<8000
n=n+1;
end
n
Ejemplo 2
num=0;EPS=1; % Forma de calcular el valor especial eps de Matlab.
while (1+EPS)>1
EPS=EPS/2;
num=num+1;
end
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

20

Ingeniera Civil

Matemtica IV

9.2.4 IF
Permite ejecutar una operacin si se cumple una condicin lgica.
Sintaxis
if expresin lgica
conjunto de comandos
end
if expresin lgica
conjunto de comandos
else
conjunto de comandos
end
La forma ms general (con tres o ms alternativas) es
if expresin lgica
conjunto de comandos
elseif expresin lgica
conjunto de comandos
elseif expresin lgica
conjunto de comandos
.
.
.
else
conjunto de comandos
end
Ejemplo 1
for j=1:10
if mod(j,2)==0
n=j+5;
elseif mod(j,2)==1
n=j+10;
else
n=100;
end
n
end
Ejemplo 2
for i = l:5,
for j = l:5,
if i = = j
A(i,j) = 2;
else if abs(i-j) = = 1
A(i,j) = -1;
else
A(i,j) = 0;
end
end
end
9.2.5 BREAK
Al igual que en C, la sentencia break hace que se termine la ejecucin del bucle ms interno
de los que comprenden a dicha sentencia. (for y while)
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

21

Ingeniera Civil

Matemtica IV

Ejemplo
Este programa calcula todos los nmeros de la serie de fibonnaci menores que 1000
fibo(1)=1;
fibo(2)=1;
for k=3:1000
fibo(k)=fibo(k-1)+fibo(k-2);
if fibo(k)>1000
break
end
end
fibo
10 LECTURA Y ESCRITURA INTERACTIVA DE VARIABLES
10.1 FUNCIN INPUT
La funcin input permite imprimir un mensaje en la lnea de comandos de MATLAB y
recuperar
como valor de retorno un valor numrico o el resultado de una expresin tecleada por el
usuario.
Despus de imprimir el mensaje, el programa espera que el usuario teclee el valor numrico o
la
expresin. Cualquier expresin vlida de MATLAB es aceptada por este comando.
Vase un ejemplo de uso de esta funcin:
n = input('Teclee el nmero de ecuaciones')
Otra posible forma de esta funcin es la siguiente (obsrvese el parmetro s):
nombre = input('Cmo te llamas?','s')
En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se
almacena en la cadena nombre. As pues, en este caso, si se teclea una frmula, se almacena
como
texto sin evaluarse.
10.2 FUNCIN DISP
La funcin disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero
sin
imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas de
caracteres son un caso particular de vectores. Considrense los siguientes ejemplos de cmo
se
utiliza:
disp('El programa ha terminado')
A=rand(4,4)
disp(A)
Obsrvese la diferencia entre las dos formas de imprimir la matriz A.
11 FICHEROS *.M
Los ficheros con extensin (.m) son ficheros de texto (ASCII) que constituyen el centro de la
programacin en MATLAB. Estos ficheros se crean y modifican con un editor de textos cualquiera.
En el caso de MATLAB 5.6, lo ms sencillo es utilizar su propio editor de textos.
Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en ingls) y las
funciones. Los primeros contienen simplemente una sucesin de comandos que se ejecutan
sucesivamente cuando se teclea el nombre del fichero en la lnea de comandos de MATLAB. Un
fichero de comandos puede llamar a otros ficheros de comandos. Si un fichero de comandos se
llama desde de la lnea de comandos de MATLAB, las variables que crea pertenecen al espacio de
trabajo base de MATLAB, y permanecen en l cuando se termina la ejecucin de dicho fichero.
Las funciones permiten definir funciones enteramente anlogas a las de MATLAB, con su nombre,
sus argumentos y sus valores de retorno. Las funciones definidas en ficheros *.m se caracterizan
porque la primera lnea (que no sea un comentario) comienza por la palabra function, seguida por
los valores de retorno, el signo igual (=) y el nombre de la funcin, seguido de los argumentos, entre
parntesis y separados por comas.
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

22

Ingeniera Civil

Matemtica IV

Recurdese que un fichero *.m puede llamar a otros ficheros *.m, e incluso puede llamarse a
mismo de forma recursiva.

El comando pause interrumpe la ejecucin del programa y aguarda para la digitacin de una tecla.
11.1 DEFINICIN DE FUNCIONES
La primera lnea de un fichero llamado name.m que define una funcin tiene la forma:
function [lista de valores de retorno] = name(lista de argumentos)
donde name es el nombre de la funcin. Entre corchetes y separados por comas van los valores
de retorno, y entre parntesis tambin separados por comas los argumentos. Recurdese que
los argumentos son los datos de la funcin y los valores de retorno sus resultados.
11.2 HELP PARA LAS FUNCIONES DE USUARIO
Tambin las funciones creadas por el usuario pueden tener su help, anlogo al que tienen las
propias funciones de MATLAB. Esto se consigue de la siguiente forma: las primeras lneas de
comentarios de cada fichero de funcin son muy importantes, pues permiten construir un help
sobre esa funcin.
En otras palabras, cuando se teclea en la ventana de comandos de MATLAB:
help funes
el programa responde escribiendo las primeras lneas del fichero funes.m que comienzan por el
carcter (%), es decir, que son comentarios.
11.3 SUB-FUNCIONES
Tradicionalmente MATLAB obligaba a crear un fichero *.m por cada funcin. El nombre de la
funcin deba coincidir con el nombre del fichero. En la versin 5.0 se han introducido las subfunciones, que son funciones adicionales definidas en un mismo fichero *.m, con nombres
diferentes del nombre del fichero (y del nombre de la funcin principal) y que slo pueden ser
llamadas por las funciones contenidas en ese fichero, resultando invisibles para otras funciones
externas.
A continuacin se muestra un ejemplo contenido en un fichero llamado mifun.m:
function y=mifun(x)
y=sin(x)+2;
En archivos script para evaluar la funcin dada en el fichero mifun.m, se usa del siguiente modo:
a=feval('fun',2) % evalua sen(2)+3
b=feval('fun',3) % evalua sen(3)+3
y en archivos de tipo funcin
function ej1(fun,w)
c=2+w;
a=feval('fun',c)
para obtener el resultado en este tipo de archivos, hacer
>> ej1(fun,2) % evalua sen(4)+3
Ejemplo
% Este programa calcula el factorial de un numero
function[p]=fact(n)
p=1;
if n==0
p=1;
elseif n < 0
p=input('Ingrese un nmero positivo ')
else
for i=1:n
p=p*i;
end
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

23

Ingeniera Civil

Matemtica IV

end
12 FUNCIONES FSCANF, SSCANF, FPRINTF Y SPRINTF
Estas funciones permiten leer y escribir en ficheros ASCII, es decir, en ficheros formateados. La
forma general de la funcin fscanf es la siguiente:
[var1,var2,...] = fscanf(fi,cadena de control,size)
donde fi es el identificador del fichero (devuelto por la funcin fopen), y size es un argumento
opcional que puede indicar el tamao del vector o matriz a leer. Obsrvese otra diferencia con C: las
variables ledas se devuelven como valor de retorno y no como argumentos pasados por referencia
(precedidos por el carcter &). La cadena de control va encerrada entre apstrofos simples, y
contiene los especificadores de formato para las variables:
%s para cadenas de caracteres
%d para variables enteras
%f para variables de punto flotante
%lf para variables de doble precisin
La funcin sscanf es similar a fscanf pero la entrada no proviene de un fichero sino de una cadena
de caracteres.
Finalmente, la funcin fprintf dirige su salida formateada hacia el fichero indicado por el identificador.
Su forma general es:
fprintf(fi,cadena de control,var1,var2,...)
Esta es la funcin ms parecida a su homloga de C. La cadena de control contiene los formatos de
escritura, que son similares a los de C, como muestran los ejemplos siguientes:
fprintf(fi,'El nmero de ecuaciones es: %d\n',n)
fprintf(fi,'El determinante es: %lf10.4\n',n)
De forma anloga, la funcin sprintf convierte su resultado en una cadena de caracteres, en vez de
enviarlo a un fichero. Vase un ejemplo:
resultado = sprintf(El cuadrado de %f es %12.4f\n,n,n*n)
donde resultado es una cadena de caracteres. Esta funcin constituye el mtodo ms general de
convertir nmeros en cadenas de caracteres, por ejemplo para ponerlos como ttulos de figuras.
Los formatos especiales \n,\r,\t,\b,\f se usan para producir salto de linea. aumento de lineas
Ejemplo 1
x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt','w');
fprintf(fid,'%6.2f %12.8f\n',y);
produce
0.00 1.00000000
0.10 1.10517092
...
1.00 2.71828183
Ejemplo 2
% Este es un programa que sirve para calcular la serie finita de 1/(n^2) %
%
%
% en forma ascendente y descendente, Probar con un n = 10000.
%
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear
sum=0;
sum1=0;
n=input('Ingrese el valor de n : ');
disp(' ')
disp(' ')
for i=1:n
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

24

Ingeniera Civil

Matemtica IV

sum=sum+1/(i^2);
end
for i=n:-1:1
sum1=sum1+1/(i^2);
end
fprintf('La suma de 1 hasta n es ===> %2.15f\n\b',sum);
fprintf('La suma de n hasta 1 es ===> %2.15f\r',sum1);
produce
Ingrese el valor de n : 3
La suma de 1 hasta n es ===> 1.361111111111111
La suma de n hasta 1 es ===> 1.361111111111111
Otros Ejemplos de programas

EXPON.M
% Este programa sirve para evaluar la funcion exponencial en la siguiente serie:
1+x+x^2/2!+.....x^n/n!.....
%%%%%%%%%%%%%%%%%
clc
clear
x=input('ingrese x: ');
n=input ('ingrese n: ');tofi=exp(x);
y=1;
sum=1;
erro=tofi-sum;
disp (' n
aproximacion
erro')
for i=1:n;
fprintf(' %2.0f %1.15f %1.15f\n ',i,sum,erro)
y=y*x/i;
sum=sum+y;
erro=((tofi-sum)/tofi)*100;
end

PROMEDIO.M
% Este programa es diseado para determinar la nota de un curso que consiste en parciales,
trabajos y examen
% final, que al final seran mostrados al acabar el proceso.
%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear
s=input ('ingrese el nombre del curso: ','s');
t=input ('ingrese el codigo del curso: ');
fp=input ('ingrese el factor de peso del parcial: ');
ft=input ('ingrese el factor de peso del trabajo: ');
fF=input ('ingrese el factor de peso del examen final: ');
n=input ('ingrese el numero de examenes parciales: ');
for i=1:n
g(i)=input ('ingrese las notas de los parciales: ');
end
x=input ('ingrese el numero de trabajos: ');
for j=1:x
h(j)=input ('ingrese las notas de los trabajos: ');
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

25

Ingeniera Civil

Matemtica IV

end
prop=(sum(g))/n;
prot=(sum(h))/x;
nF=input ('existe la nota nota final (s/n): ','s');
if nF =='s'
pfin=input('calificacion final: ');
pp=(fp*prop+ft*prot+fF*nF)/(fp+ft+fF);
else
pp=(fp*prop+ft*prot)/(fp+ft);
end
t
s
pp

COSENO.M
function aproximada=coseno(x0,n,tol)
% Este programa sirve para aproximar la funccin f(x)=cos(x)
% por 1-(X^2)/2!+(X^4)/4!-(X^6)/6!+(X^8)/8!-....
% probar con: x0=pi/3 n=25 tol=0.00001
%%%%%%%%%%%%%%%%%%
clc
serie(1)=1;
i=1;
disp('iter
|Eap|%
Ev%
Evr%
Eap% ')
while i<=n
p=((-1)^i)*(x0^(2*i))/facto(2*i);
serie(i+1)=serie(i)+p;
Ev = cos(x0)-serie(i);
Evr= (cos(x0)-serie(i))*100/cos(x0);
Eap= (serie(i+1)-serie(i))*100/serie(i+1);
fprintf('i= %d %3.9f \t %3.9f \t %3.9f \t %3.9f\n',i,abs(Eap),abs(Ev),abs(Evr),abs(Eap))
i=i+1;
if abs(Eap) < tol
break
end
end

DERIN.M
% Este es un programa que sirve para calcular la derivada de y=x^3
% usar n:10
%%%%%%%%%%%%%%
clc
clear
b=10;
der=3*b^2;
b1=b^3;
n=input('ingrese n: ');
y=300; % y(10)=300 es la derivada exacta
disp(' n
h
f(x0)
Et')
for i=1:1:n;
h=10^(1-i);
f=b+h;
ff=f^3;
denum=(ff-b1)/h;
et=((y-denum)/y)*100;
fprintf(' %2.0f \t %4.10f \t %4.4f \t %4.4f\n',i,h,denum,abs(et))
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

26

Ingeniera Civil

Matemtica IV

end
end

PARAC.M
% Este es un programa que sirve para graficar la ecuacion de la caida
% un paracaidista en condiciones ideales.
% recomendacion: usar con t:10, m:68.1, v:40
%%%%%%%%%%%%%%%
clc
clear
t=input('ingrese el tiempo: ');
m=input('ingrese la masa: ');
g=9.8;
v=input('ingrese la velocidad: ');
c=2:2:20;
fc= ((m.*g)./c).*[1-exp(-(c./m).*t)]-v;
plot (c,fc,'b-',c,fc,'g*');
grid
end
title('grafico de la caida del paracaidista');
xlabel(' c '); ylabel('f(c) ');
end

SUMA.M
% Este programa sirve para calcular la serie infinita f(n)=sum 1/n^2, desde 1 hasta 10000
% recomendacion: dar n:10000
%%%%%%%%%%%%%%%%%
clc
clear
n=input ('ingrese n: ');
sum=0;
for i=1:n;
sum=sum+1/i^2;
end
sum

SUMAI.M
% Este programa sirve para calcular la serie infinita f(n)=sum 1/n^2, desde 10000 hasta 1
% Recomendacion: dar n:10000
%%%%%%%%%%%%%%%%%
clc
clear
n=input ('ingrese n: ');
sum=0;
for i=n:-1:1;
sum=sum+1/i^2;
end
sum

SENCOS.M
% Este es un programa que sirve para calcular la funcion: (sen 10x) + (cos 3x), en diferentes
Intervalos.
%%%%%%%%%%%%%%%%%
clc
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

27

Ingeniera Civil

Matemtica IV

clear
subplot 311
x=-5:0.001:5;
f=sin(10*x)+cos(3*x);
plot(x,f,'b-')
grid
title('grafico 1')
end
subplot 312
x1=3:0.01:5;
f1=sin(10*x1)+cos(3*x1);
plot(x1,f1,'m-')
grid
title('grafico 2')
ylabel(' f(x) = seno de 10x + coseno de 3x ');
end
subplot 313
x2=4.2:0.01:4.3;
f2=sin(10*x2)+cos(3*x2);
plot(x2,f2,'c-');
grid
title('grafico 3')
xlabel('Intervalos de Crecimiento');
end

13. MENUS
El comando menu permite crear menus en la ventana de MATLAB
Sintaxis
variable = menu(header, item1, item2, ...)
Por ejemplo:
>> K = menu('Colores','Rojo','Azul','Verde')
salida
----- Colores ----1) Rojo
2) Azul
3) Verde
Ejemplo
% Programa que determina la moda, desvacion standar, mediana y promedio
% de "n" valores dados
%
% Probar : estadis
clc
clear
k=menu('Estadistica','Promedio','Desv. Standar','Moda','Mediana', 'Exit');
if k==1
n=input('Ingrese el Nmero de datos : ');
for i=1:n
fprintf('\nIngrese el valor N %d',i)
y(i)=input(' : ');
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

28

Ingeniera Civil

Matemtica IV

end
u=(sum(y))/n;
disp('-----------------------------------------------------------')
fprintf('El promedio de los %d valores es : %2.7f\n',n,u)
disp('-----------------------------------------------------------')
disp('Pulse por favor una tecla para continuar ----------> ')
pause
estadis
elseif k==2
n=input('Ingrese el Nmero de datos : ');
for i=1:n
fprintf('\nIngrese el valor N %d',i)
y(i)=input(' : ');
end
u=(sum(y))/n;
ss=sum((y-u).^2)/n;
s=sqrt(ss);
disp('-----------------------------------------------------------')
fprintf('La Desviacin Standar de los %d valores es : %2.7f\n',n,s)
disp('-----------------------------------------------------------')
disp('Pulse por favor una tecla para continuar ----------> ')
pause
estadis
elseif k==3
n=input('Ingrese el Nmero de datos : ');
for i=1:n
fprintf('\nIngrese el valor N %d',i)
y(i)=input(' : ');
end
z=1;
for i=1:n
for j=1:n
if i~=j
if y(i)==y(j)
z=z+1;
mm(i,1)=z;
mm(i,2)=y(i);
end
end
end
end
if z > 1
[M,N]=size(mm);
p=mm(1,1);
for i=2:M
if p < mm(i,1)
p=mm(i,1);
ii=i;
end
end
m=mm(ii,2);
disp('-----------------------------------------------------------')
fprintf('La Moda de los %d valores es : %2.7f\n',n,m)
disp('-----------------------------------------------------------')
disp('Pulse por favor una tecla para continuar ----------> ')
pause
estadis
else
Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

29

Ingeniera Civil

Matemtica IV

disp('-----------------------------------------------------------')
fprintf('La Moda de los %d valores No Existe\n',n)
disp('-----------------------------------------------------------')
disp('Pulse por favor una tecla para continuar ----------> ')
pause
estadis
end
elseif k==4
n=input('Ingrese el Nmero de datos : ');
for i=1:n
fprintf('\nIngrese el valor N %d',i)
y(i)=input(' : ');
end
x=sort(y);
if mod(n,2)==0
nn=n/2;
disp('-----------------------------------------------------------')
fprintf('La Mediana de los %d valores son :\n',n)
fprintf('\t\t\t %2.7f \t %2.7f\n',x(nn),x(nn+1))
disp('-----------------------------------------------------------')
else
nn=(n+1)/2;
disp('-----------------------------------------------------------')
fprintf('La Mediana de los %d valores es : %2.7f\n',n,x(nn))
disp('-----------------------------------------------------------')
end
disp('Pulse por favor una tecla para continuar ----------> ')
pause
estadis
elseif k==5
break
end

Lic. Ana Gamarra Carrasco

Lic. Javier Manrique Cataln

Lic. Robert Daz Tapullima

30

You might also like