Documente Academic
Documente Profesional
Documente Cultură
Introduccin.
Los lenguajes de programacin de computadores como Matlab ofrecen caractersticas que
permiten controlar el flujo de ejecucin de rdenes basada en estructuras de toma de decisiones.
El control de flujo es extremadamente poderoso ya que permite que clculos pasados influyan
sobre operaciones futuras.
Debido a que las estructuras de control de flujo a menudo contienen numerosas rdenes de
Matlab, suelen operar en archivos-M (M-files), en lugar de escribirse directamente en la lnea de
orden de Matlab.
Resumen.
En esta prctica exploraremos nuevos comandos que existen en Matlab donde veremos su
funcionamiento, las condiciones que requiere para su correcto funcionamiento, primero
trabajaremos con los bucles que son una serie de estructuras de control de flujo que tienen la
capacidad de tomar decisiones. Es muy importante tomar en cuenta la estructura que maneja
cada bucle adems de ingresar las indicaciones correctamente, en el caso de que exista un error al
momento de ingresar la estructura, Matlab es capaz de indicarnos donde y cul es el error.
Es recomendable evitar los bucles siempre y cuando exista un mtodo de array o matriz
equivalente.
Los archivos M se crean en un editor de texto de Matlab, general mente el nombre de la funcin
es la misma que el del archivo, tambin los archivos-M ya estn prediseados y se pueden
encontrar buscando en las carpetas de Matlab o nombrndolas directamente en la ventana de
operacin.
Existe otro tipo de archivos que son los scripts, y funcionan igual que los archivos M pero con
distintas diferencias, los archivos script son convenientes para introducir grandes array.
Matlab es capaz de realizar operaciones con polinomios, hace estas operaciones en forma de filas.
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
n=
10
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
n=
10
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
n=
10
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
n=
10
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
n=
10
% volvemos a realizar lo mismo, pero ahora, sin bucle.
>> n=1:10
n=
1
9 10
>> p=sin(n*pi/10)
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
% ahora ponemos nuestro bucle anidando con valores de 1 al 5, estos con incremetos de -1,
despus, calculamos la operacin y se almacena en una matriz A, terminamos el ciclo interno.
0 26
0 17 26
A=
0
A=
0
0 10 17 26
A=
0
5 10 17 26
A=
2
5 10 17 26
1
A=
2
5 10 17 26
0 29
A=
2
5 10 17 26
0 20 29
A=
2
5 10 17 26
0 13 20 29
A=
5 10 17 26
8 13 20 29
A=
2
5 10 17 26
8 13 20 29
2
A=
2
5 10 17 26
8 13 20 29
0 34
A=
2
5 10 17 26
8 13 20 29
0 25 34
A=
2
5 10 17 26
8 13 20 29
0 18 25 34
A=
2
5 10 17 26
8 13 20 29
0 13 18 25 34
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
3
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
0
0 41
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
0
0 32 41
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
0
0 25 32 41
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
0 20 25 32 41
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
17 20 25 32 41
4
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
17 20 25 32 41
0 50
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
17 20 25 32 41
0
0 41 50
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
17 20 25 32 41
0
0 34 41 50
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
17 20 25 32 41
0 29 34 41 50
A=
2
5 10 17 26
8 13 20 29
10 13 18 25 34
17 20 25 32 41
26 29 34 41 50
5
% Creamos un ejemplo en el cual tomamos como ejemplo el precio de un producto manzanas,
despus lo multiplicamos y guardamos el resultado como costo.
>> Manzanas=10
Manzanas =
10
>> Costo=Manzanas*25
Costo =
250
% Ahora al producto de las manzanas se la aplica un 20% de descuento si se compran ms de 5,
despus calculamos el precio si son ms de las 5 manzanas, pero con el descuento y por ultimo
finalizamos el buble.
>> if Manzanas>5
Costo=(1-20/100)*Costo
end
Costo =
200
Funciones en archivos-M.
%
% See also LOGSPACE, COLON.
Archivos Scripts.
% Crearemos un archivo Script, mostrado en ciclos y calcular una operacin sin la necesidad de un
ciclo.
% la funcin echo on visualiza el orden de un archivo-M en el orden que se va ejecutando en la
hoja de trabajo, creamos un vector sin bucle y calculamos el vector sin la necesidad del bucle.
echo on
n=1:10
p=sin(n*pi/10)
>> pru
n=1:10
n=
1
9 10
p=sin(n*pi/10)
p=
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
% Abrimos un archivo del directorio de trabajo, eliminamos la visualizacin del archivo, asignamos
una variable y asignamos una matriz con ayudas, las cuales deben tener el mismo tamao de filas
y columnas.
echo off
n=6
D=['1.- help input'
'2.- help eval '
'3.- help echo '
'4.- help while']
% S seleccionamos una nmero mayor a cuatro el programa nos pedida que ingresemos otro ya
que solo tenemos valores del 1 al 4, al seleccionar uno de estos termina el programa.
while(n>4)
n = input('Selecionar un nmero: ')
end
eval(D(n,5:14))
% Corremos el programa.
>> selec
echo off
n=
6
D=
1.- help input
2.- help eval
3.- help echo
4.- help while
Selecionar un nmero: 5
n=
5
Selecionar un nmero: 9
n=
9
Selecionar un nmero: 3
n=
3
echo Display statements during function execution.
echo ON turns on echoing of commands inside Script-files.
echo OFF turns off echoing.
echo file ON where 'file' is a function name causes the
named Function-file to be echoed when it is used.
echo file OFF turns it off.
echo file toggles it.
echo ON ALL turns on the echoing of commands inside any
Function-files that are currently in memory (i.e., the
functions returned by INMEM).
echo OFF ALL turns them all off.
See also function, script.
Reference page in Help browser
doc echo
Polinomios.
% Evaluar un polinomio que llamaremos p en valore de x.
A=[1 2 3; 4 5 6; 7 8 0]
p=poly(A)
r=roots(p)
p2=poly(r)
p=[1 -12 0 25 116]
r=roots(p)
p2=poly(r)
p2=real(p2)
a=[1 2 3]
b=[4 5 6]
c=conv(a,b)
[q,r]=deconv(c,a)
d=a+b
e=c+[0 0 d]
% Corremos el programa.
>> tranquiz
A=
1
p=
1.0000 -6.0000 -72.0000 -27.0000
r=
12.1229
-5.7345
-0.3884
p2 =
0 25 116
r=
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i
p2 =
1.0000 -12.0000 -0.0000 25.0000 116.0000
p2 =
1.0000 -12.0000 -0.0000 25.0000 116.0000
a=
1
b=
4
c=
4 13 28 27 18
q=
4
r=
0
d=
5
e=
4 13 33 34 27
Suma de dos polinomios.
>> sumarpoli
A=
1
p=
Columns 1 through 3
1.000000000000000 -6.000000000000008 -72.000000000000085
Column 4
-27.000000000000053
r=
12.122893784632403
-5.734509942225074
-0.388383842407320
p2 =
Columns 1 through 3
1.000000000000000 -6.000000000000009 -72.000000000000071
Column 4
-27.000000000000050
p=
1 -12
0 25 116
r=
11.747282870822726
2.702820743841008
-1.225051807331868 + 1.467208008728901i
-1.225051807331868 - 1.467208008728901i
p2 =
1.0e+02 *
Columns 1 through 3
0.010000000000000 -0.120000000000000 -0.000000000000000
Columns 4 through 5
0.250000000000000 1.160000000000001
p2 =
1.0e+02 *
Columns 1 through 3
0.010000000000000 -0.120000000000000 -0.000000000000000
Columns 4 through 5
0.250000000000000 1.160000000000001
a=
1
b=
4
c=
4 13 28 27 18
q=
4
r=
0
d=
5
e=
4 13 33 34 27
>> sumarpolinomios
A=
1
p=
Columns 1 through 3
1.000000000000000 -6.000000000000008 -72.000000000000085
Column 4
-27.000000000000053
r=
12.122893784632403
-5.734509942225074
-0.388383842407320
p2 =
Columns 1 through 3
1.000000000000000 -6.000000000000009 -72.000000000000071
Column 4
-27.000000000000050
p=
1 -12
0 25 116
r=
11.747282870822726
2.702820743841008
-1.225051807331868 + 1.467208008728901i
-1.225051807331868 - 1.467208008728901i
p2 =
1.0e+02 *
Columns 1 through 3
0.010000000000000 -0.120000000000000 -0.000000000000000
Columns 4 through 5
0.250000000000000 1.160000000000001
p2 =
1.0e+02 *
Columns 1 through 3
0.010000000000000 -0.120000000000000 -0.000000000000000
Columns 4 through 5
0.250000000000000 1.160000000000001
a=
b=
4
c=
4 13 28 27 18
q=
4
r=
0
d=
5
e=
4 13 33 34 27
a=
4 13 28 27 18
b=
5
na =
5
nb =
3
p=
4 13 33 34 27
s=
4 13 33 34 27
p=
1
4 -7 -10
Ejercicios:
Funcin cuadra
clc
clear
A=input('dame una matriz A=')
f=A(:,1);
c=A(1,:);
pause
dc=length(c) %dimencion de las columnas de la matriz
df=length(f) %dimencion de las filas de la matriz
pause
if dc~=df
if dc>df
A(dc,1)=0; %pone una fila de ceros
else
A(1,df)=0; %pone una columna de ceros
end
end
A
Funcin calcula
function funcionresultado1=calcula(matriz1,matriz2)
echo on;
3.-dibuja
4.-polisuma
elige un numero:1
m=
1
dame una matriz A=[1 2 4]
A=
1
A=
menu =
1.-cuadra
2.-calcula
3.-dibuja
4.-polisuma
elige un numero:1
m=
2
dame una matriz A=[1 2 4]
A=
1
funcionresultado =
2
funcionresultado =
2
4
8
menu =
1.-cuadra
2.-calcula
3.-dibuja
4.-polisuma
elige un numero:3
m=
3
dame un vector v=[0:0.1:1.5]
menu =
1.-cuadra
2.-calcula
3.-dibuja
4.-polisuma
elige un numero:4
m=
4
A=
1
p=
Columns 1 through 3
1.000000000000000 -6.000000000000008 -72.000000000000085
Column 4
-27.000000000000053
r=
12.122893784632403
-5.734509942225074
-0.388383842407320
p2 =
Columns 1 through 3
1.000000000000000 -6.000000000000009 -72.000000000000071
Column 4
-27.000000000000050
p=
1 -12
0 25 116
r=
11.747282870822726
2.702820743841008
-1.225051807331868 + 1.467208008728901i
-1.225051807331868 - 1.467208008728901i
p2 =
1.0e+02 *
Columns 1 through 3
b=
4
c=
4 13 28 27 18
q=
4
r=
0
d=
5
e=
4 13 33 34 27
A=
1
p=
Columns 1 through 3
1.000000000000000 -6.000000000000008 -72.000000000000085
Column 4
-27.000000000000053
r=
12.122893784632403
-5.734509942225074
-0.388383842407320
p2 =
Columns 1 through 3
1.000000000000000 -6.000000000000009 -72.000000000000071
Column 4
-27.000000000000050
p=
1 -12
0 25 116
r=
11.747282870822726
2.702820743841008
-1.225051807331868 + 1.467208008728901i
-1.225051807331868 - 1.467208008728901i
p2 =
1.0e+02 *
Columns 1 through 3
0.010000000000000 -0.120000000000000 -0.000000000000000
Columns 4 through 5
0.250000000000000 1.160000000000001
p2 =
1.0e+02 *
Columns 1 through 3
0.010000000000000 -0.120000000000000 -0.000000000000000
Columns 4 through 5
0.250000000000000 1.160000000000001
a=
1
b=
4
c=
4 13 28 27 18
q=
4
r=
0
d=
5
e=
4 13 33 34 27
a=
4 13 28 27 18
b=
5
na =
5
nb =
3
p=
4 13 33 34 27
s=
4 13 33 34 27
p=
1
4 -7 -10
Conclusiones.
Bibliografa.
Laboratorio de control 1. Prctica 2: Introduccin a MATLAB II.