Академический Документы
Профессиональный Документы
Культура Документы
=
N
i
i i
b a
1
A = 4 -1 3 B = -2 5 2
C=dot(A,B) -7
(4x(-2) + (-1)x5 + 3x2)
!) =ector %ue surge de calcular el (roducto (unto de las Columnas de cada ?atriz/
A = 1 2 B = 5 6
3 4 7 8
C=dot(A,B) 26 44
(1x5 + 3x7 2x6 + 4x8)
es decir ( 26 44 )
)ultiplicacin de )atrices
C
i,j
=
=
N
k
j k k i
b a
1
, ,
A = 1 2 B = 5 6
3 4 7 8
C =A*B 19 22
43 50
Es decir (1*5 + 2*7 1*6 + 2*8)
(3x5 + 4x7 3x6 + 4x8)
(ara sa!er si existe C$ se pueden escri!ir los tama*os de A - . uno al lado del otro/ si los 6 #alores
interiores son iguales$ existe C$ con un tama*o definido por los #alores exteriores. As$ si tenemos A+6$8) -
.+8$8)/
2 x 3 3 x 3 C=A*B existe, y su tamao ser C(2,3)
Eugenio Kolb 21
Programacin
Potencias de )atrices
Debido a que el producto de 2 matrices es posible solo si la cantidad de filas de la primera
es igual a la cantidad de columnas de la segunda, y teniendo en cuenta que A
*
es A*A, A debe ser
cuadrada. Debe recordarse que si la expresin fuese A.
*
, estaramos hablando simplemente
sobre la elevacin al cuadrado de cada elemento escalar de la matriz.
unciones )atriciales
De utilidad en lgebra Lineal, existe una serie de funciones:
)atriB In(ersa
La in.ersa de una matriz cuadrada A es la matriz A
-1
para la cual los productos de
matrices A. A
-1
y A
-1
.A son iguales a la matriz identidad.
A = 2 1 B=A^(-1) 1.5000 -0.5000 A*(A^(-1) 1 0
4 3 -2.0000 1.0000 0 1
A - . son in#ersas una de la otra/ A>.
-1
- .>A
-1
$ - A.>.A.
Ana matriz 4singular o "mal condicionada, no tiene in#ersa. )ste concepto est
relacionadocon un sistema de ecuaciones %ue no son independientes entre s.
)l rango de una matriz es el n1mero de ecuaciones independientes representadas
por las filas de la matriz/ si el rango de una matriz es igual a su n1mero de filas$ 0sta no es
singular$ - existe su in#ersa.
Se usan 6 funciones/
@ ranD%A&> calcula el rango de la matriz
@ in(%A&> calcula el in#erso de la matriz
3atos AlfanumLricos
Las cadenas de caracteres se almacenan usando una columna por carcter, en una matriz. El
espacio en blanco es un carcter ms. La coma y el espacio en blanco siguen teniendo el mismo
significado (separador de columnas). El punto y coma separa filas.
)"emplos:
- a = 'Hola'
- a = ['Hola' , 'Buen da']
- a = ['Hola ' ; 'Buen da']
)n este 1ltimo caso$ am!as cadenas de!en tener la misma longitud +completando con
espacios en !lanco)$ -a %ue en caso contrario se produce un error. (ara %ue el rellenado sea
automtico$ se usa la funci'n c2ar/
- a =c@ar('Hola' ; 'Buen da')
Eugenio Kolb 22
H o l a
H o l a B u e n d a
H o l a
B u e n d i a
Programacin
IA& Estructuras de Programacin
A& Estructuras de 1ecuenciacin
a) Asignacin
variable ? datos/expresin
Como se ha establecido anteriormente, el MatLab permite automatizaciones
poderosas. En una sola lnea se pueden ingresar los datos de una matriz completa (entre
corchetes, con espacios o comas como separadores de columnas, y retornos de carro o puntos y
coma para separar filas). Adems, se pueden asignar series o rangos de otras variables con el
operador 2 puntos (>).
Complementando lo analizado en ):
Agregado datos a una matriB %matrices numLricas y alfanumLricas&
!aso 5: agregar filas y/o columnas a una matriz de nmeros
n=[1,2,3;4,5,6] -
a) m = [n ; [7,8,9]]
b) m= [n , [7,8]]
!aso *: agregar filas y/o columnas a una matriz alfanumrica. Conversin de datos.
Si a = ['Hola'] y b = [' Que tal'] - vectores fila de 4 y 8 datos.
z = [a,b] vector fila de 12 datos
z = [a;b] ....no se puede realizar!, por diferencias en las dimensiones
z = char(a,b) matriz de 2x8
Conversin de datos:
b = 1500 vector fila de un dato numrico
m = 'Colon ' o m = ['Colon '] vector fila de 6 datos
a) x = [m, num2str(b)] vector fila de 10 datos
b) x = char(m,num2str(b)) matriz de 2x6 datos
Funciones relacionadas:
Eugenio Kolb 23
1 2 3
4 5 6
1 2 3
4 5 6
7 8 9
1 2 3 7
4 5 6 8
Programacin
char(65) A
str2num('1000')/2 500
=er: hex2num, int2str, sprintf, dec2hex, bin2dec, dec2bin, str2double, etc, etc. (helpwin
matlab\strfun&
Dtros tipos de datos en ?atLa!
A) Arreglos de !eldas ("celds arrays): vectores o matrices cuyos elementos o datos (cada uno
de ellos), son a su vez variables de cualquier tipo.
c(1) = {[1,2;3,4]} en c(1) se carga una matriz numrica de 2x2
c(2) = {'Hola'} en c(2) se carga una matriz de 4 datos (caracteres).
c(3)={5} en c(3) se carga un escalar numrico
c(1) c(2) c(3)
B) Estructuras: agrupacin de datos de distinto tipo bajo un mismo nombre:
d(1) =struct('Nombre','Jose Perez','Sueldo',500) se crea la estructura:
Jose Perez 500
d(2).Categoria=12 se crea, modificando la estructura, un nuevo campo y se agrega
un registro.
Jose Perez 500
12
C) Eipermatrices: son matrices de 3 o ms dimensiones
b) AisualiBacin de 3atos
b-1) 'sando fprintf>
fprintf([destino,]formato/mensaje[, variables])
Nota: entre corchetes, la parte optativa. Por defecto, el destino es la pantalla. Puede ser, adems,
un archivo abierto con fopen.
Permite mostrar o imprimir exhibir tanto texto como valores . Los especificadores Me , Mf ,
y Mg indican cmo se vern los valores numricos : notaci'n exponencial$ notaci'n de punto fi"o o
decimal$ o el ms corto de los 6. Si se agrega Mn5.n*f podemos adems de definir el nmero de
dgitos enteros y decimales a visualizar. La cadena Nn indica hasta donde se visualizar la lnea: el
resto pasa a la siguiente lnea.
Si se hace I#aria!leO > sprintf+formato$ #aria!le@s), se obtiene el mismo resultado, pero
asignndolo a una variable.
)"emplo: (en la Ventana de Comandos):
Eugenio Kolb 24
1 2
H o l a 5
3 4
Se ingresa, asignndose los datos a la matriz x
Programacin
OO x=[2 5 ; 3.1 4.8]
x =
2.0000 5.0000
3.1000 4.8000
OO fprintf('Los valores de x son: %f , %1.3f y %2.2f , ademas de %1.2e \n',x)
Los valores de x son: 2.000000 , 3.100 y 5.00 , adems de 4.80e+000
:ota: observar que los datos se presentan o leen columna a columna, pese a "cargarse la matriz fila por
fila.
b-2) 'sando disp>
disp(variable/constante)
Muestra el valor de la cadena de caracteres, o de una variable, sin mostrar el nombre de la
misma. Se puede unificar varios datos y mostrar la cadena resultante:
>> a=2.4;b=8.6;c=a+b;
>> disp(['La suma es : ',num2str(c)])
La suma es : 11
b-3) 'sando formularios de interface grfica>
msgbo"%'Peticin', 'Ttulo', 'cono', 'Modo'&
cono: puede ser 'none' (ninguno, valor por defecto), 'error', 'help'
(a-uda), 'warn' (cuidado), o 'custom' (personalizado, en cuyo caso se
deben agregar argumentos).
Modo: puede ser 'modal' (obliga a contestar al cuadro), 'non-modal'
(valor por defecto),'replace' (siendo 'non-modal', este cuadro reemplaza a
otro con el mismo Ttulo).
Ejemplo:
>>msgbox('Presion superior a la maxima!', 'Calculo de la Temperatura', 'warn', 'non-modo')
c) Ingreso de 3atos por teclado
c-1) Usando input>
variable = input('Mensaje');
Produce una pausa, visualizndose el mensaje, y pudindose ingresar los datos con las
mismas reglas que en los casos de asignacin directa.
Eugenio Kolb 25
Se visualiza en pantalla, ya que no se puso =
al final de la lnea anterior
Se escribe
Se visualiza
Programacin
Ejemplo: (en la Ventana de Comandos):
>> Z=input('ngrese los Datos entre Corchetes:')
ngrese los Datos entre Corchetes: [1 2 ; 3 4]
1 2
3 4
Nota: Z=input('ngrese Dato:', 's '), hace que el dato asignado a Z sea considerado como
string o cadena de caracteres.
c-2) Usando inputdlg &
Variable=inputdlg(Peticion, 'Ttulo', Nmero de Lineas, Valores por
Defecto,Modo)
Variable=arreglo de celdas de una columna que recibir uno o ms datos de tipo texto
Peticion: vector columna con las peticiones de cada dato
Ttulo: ttulo del cuadro de dilogo
Nmero de Lneas: vector columna qur contiene el nmero de lneas reservadas para cada dato (por
defecto, 1), o matriz de 2 columnas, en donde en la 2 columna se pone la longitud en caracteres reservada
para cada dato
Valores por Defecto: valores por defecto para cada dato
Modo: 'on' (de tamao variable, no modal), o 'off' (modal).
)"emplo:
Peticion={'Nombre'; 'Edad'; 'Observaciones'}
NumerodeLineas=[1,45;1,8;3,45]
ValoresporDefecto={''; ''; 'Sin comentarios'}
Variable=inputdlg(Peticion, 'Ficha de Datos', NumerodeLineas, ValoresporDefecto, 'on')
c-3) Usando /uestdlg &
Opcion=7uestdlg('Peticion', 'Ttulo', 'Boton 1', 'Boton 2', ..., 'Boton n', 'Boton x')
Opcion: variable que recibe como dato 'Boton 1', 'Boton 2' o el que haya seleccionado el usuario,
para poder programar los siguientes pasos. 'Boton x' es el valor por defecto (si el usuario pulsa Enter).
)"emplo /
Eugenio Kolb 26
Haria'le 9
IJos* Pere5I Haria'le(1)
I31I Haria'le(1)
ISin comentariosI Haria'le(1)
Programacin
Opcion=7uestdlg('Ha ocurrido un error, qu desea hacer? ', ' Problemas !! ', 'Continuar', 'Cancelar',
'Reintentar', 'Cancelar')
switch Opcion,
case 'Continuar'
disp('Ud. decidi continuar')
case 'Cancelar'
disp('Ud. decidi cancelar')
case 'Reintentar'
disp('Ud. decidi reintentar')
otherwise
disp('No s qu decidi Ud. ')
end
d) 4ectura de Arc@i(o
load archivo, variables
En esta versin (simplificada), lee del archivo indicado, las variables grabadas con sa.e.
e) /rabacin en Arc@i(o
sa(e archivo, variables
Graba las variables especificadas en un archivo. Si no se especifican, graba todas las vigentes en
el espacio de tra!a"o.
-esumen de operaciones de 4ectura y /rabacin de datos en )atlab
cs(Crite +4commaPseparatedP#alues)/ graba en un archivo #alores separados por
comas. As, cs(Crite(NOMBREDEARCHVO,M) graba una matriz M en el archivo llamado
NOMBREDEARCHVO (por defecto, ubicado en c:\matlab\work), los datos num'ricos de una matriz
separados por comas. Las filas deben tener el mismo nmero de columnas.
M=[1 2 3; 4 5 6];csvwrite('datos1',M)
Con csvwrite(NOMBREDEARCHVO,M,f,c), se graba en la matriz que es el archivo, a partir
de la fila f y columna c del archivo (f - c empiezan a numerarse desde 9):
M=[1 2 3; 4 5 6];csvwrite('datos1',M,2,2)
cs(read: csvread(NOMBREDEARCHVO) lee de un archivo datos numricos separados por
comas. Con csvread(NOMBREDEARCHVO, f, c) se lee a partir de fila f y columna c.
)"emplo:
M=[1 2 3 4; 5 6 7 8; 9 10 11 12];csvwrite('datos1',M,1,1)
N= csvread('datos1',1,3)
dlmCrite: csvwrite(NOMBREDEARCHVO,M,DLM) graba el contenido de una matriz M en un
archivo con delimitadores (DLM). Para separar los datos con tabuladores, se usa '\t'
M=[1 2 3; 4 5 6];dlmwrite('datos2',M, '\t')
M=[1 2 3; 4 5 6];dlmwrite('datos4',M, '-')
Eugenio Kolb 27
,,,,
,,,,
,,1,2,3
,,A,=,>
1 2 3 A
= > K L
M 16 11 12
N
3 A
K L
11 12
7
Programacin
dlmread: permite leer un archivo grabado con dlm1rite
M=[1 2 3; 4 5 'u'];dlmwrite('datos4',M, '-')
N=dlmread('datos4','-')
"lsread: permite leer datos grabados en una hoja de Excel.
A = xlsread(Q:om!redeArc3i#oQ) devuelve los valores numricos de la primera hoja del libro.
[A, B] = xlsread(Q:om!redeArc3i#oQ$R:om!redeGo"aR) devuelve los datos numricos
almacenados en A y los alfanumricos en B
Las celdas vacas o con texto resultan en un elemento NaN ("no es un n1mero).
1a(e: graba las variables del Espacio de Trabajo al disco.
sa(e $ombredeArc@i(o: graba todas las variables a un archivo binario .mat (por defecto).
Se escribe con o sin comillas.
1a(e $ombredeArc@i(o P: graba solo X
1a(e $ombredeArc@i(o P Y Z: graba X, Y y Z. Se pueden usar caracteres "comodn ("*).
Opciones ASC:
:
sa(e ... A1!II: usa formato ASC de 8 dgitos en vez de binario.
sa(e ... A1!II3.'B4E: usa formato ASC de 16 dgitos.
sa(e ... A1!II2AB1: separa los datos con tabuladores.
sa(e ... A1!II93.'B4E2AB1 :formato de datos de 16 dgitos, separados por comas..
Opciones MAT:
sa(e ... APPE$3: agrega las variables a un archivo existente (solo archivos MAT).
Se puede usar la forma functional, tal como ('NombredeArchivo','var1','var2'), cuando el nombre
del archivos o las variables son almacenadas en strings.
Eugenio Kolb 28
Programacin
B& Estructuras de 1eleccin
7ransferencia Condicional Simple
a) !aso 5>
if condicin
.......A1; A2;....
else
.......A3; A4;....
end
b) !aso *>
If condicin1
.......A1; A2;....
elseif condicin2
.......A3; A4;....
else
.......A5; A6;....
end
Si se pregunta "si A>B y C=0, se
tienen en la condicin los 2 tipos de
operadores: los 7elacionales (Q , Q?, O, O?,
?? (igual), R? (distinto)), y los L'gicos (S
("y), T ("o) y R ("no)).
La condicin de if tambin puede ser
matricial, para 2 matrices del mismo tamao.
As: A==B exige que todos los elementos
sean iguales dos a dos (Aij=Bij), y A~=B
exige que todos sean distintos.
La funci'n ise7ual%A#B&, si las 2
matrices son iguales, devuelve un 1 si A y B
son idnticas, y 0 en caso contrario.
7ransferencia Condicional M(ltiple
c) !aso 8>
Segn expresi'n (un nmero escalar
o una cadena de caracteres), se ejecutan
distintos conjunto de instrucciones
sCitc@ expresin
case expresion1
.......A1; A2;....
case expresion2
.......A3; A4;....
case {expresion3, expresion4, ..}
.......A5; A6;....
ot@erCise
.......An; ....
end
d) !aso :> Gestin de Errores
Permiten gestionar errores. Se ejecuta el
con"unto de acciones A1J A6J ...etc.J y solo en
el caso en que ocurra un error, pasa a
ejecutarse el con"unto de acciones A8J A< .
try
.......A1; A2;....
catc@
.......A3; A4;....
end
)"emplos/
% Calculo de la temperatura de un reactor (caso
1)
% ------------------------------------------------
% T = PxV/1.7
% Condiciones: P no debe superar 5
clear;
clc;
P=input('ngrese Presion:');
V=input('ngrese Volumen:');
if P<=5
T=P*V/1.7;
fprintf('La Temperatura es: %g\n',T)
else
fprintf('Presion superior a la permitida\n')
end
% Calculo de la temperatura de un reactor (caso
2)
% ------------------------------------------------
% T = PxV/1.7
% Condiciones: P no debe superar 5 y V no debe
% superar 4
clear;
clc;
P=input('ngrese Presion:');
V=input('ngrese Volumen:');
if P<=5 & V<=4
T=P*V/1.7;
fprintf('La Temperatura es: %g\n',T)
else
if P>5 & V>4
fprintf('Presion y Volumen superiores a lo
permitido\n')
elseif V>4
fprintf('Volumen superior a lo permitido\n')
elseif P>5
fprintf('Presion superior a la permitida\n')
Eugenio Kolb 29
Programacin
end
end
!& Estructuras de Iteracin
a) "structura :Mientras; : el bucle termina
cuando deja de cumplirse condicion
(expresin vectorial o matricial).
C@ile condici'n
.......A1; A2;....
end
b) "structura :for-ne,t;& el bucle se
repite mientras una variable no supere
determinado valor final.
for variable?Valornicial>ncremento>ValorFinal
.......A1; A2;....
end
Asociadas con for y C@ile, se utilizan las
sentencias breaD y continue:
breaD : traslada la ejecucin a la lnea
siguiente a donde est el final del bucle
mas interno.
continue : traslada la ejecucin a la lnea
donde est el final del bucle mas interno
Ejemplos:
% ngresar 5 valores, de a uno, y visualizar la
suma % de los mismos
clear
clc
suma=0;
for i=1:1:5
valor=input('ngrese un numero:');
suma=[suma+valor];
end
fprintf('La suma es: %g\',suma)
% mpresion de la Tabla del 7, entre 1 y 10
clear
clc
fprintf('TABLA DEL 7\n')
fprintf('===========\n')
for k=1:1:10
x=[k 7*k];
fprintf('7 x %g = %g\n' , x)
end
Arc@i(os de !omandos % scripts & y unciones. Arc@i(os +m
Bsicamente, la diferencia entre ambos radica en que las funciones usan variables
con vigencia local (mientras se ejecuta el conjunto de comandos del archivo), tras lo cual dejan
de existir. No pasan a integrar el espacio de trabajo. MatLab tiene bibliotecas propias de
funciones (toolCits), que se venden o distribuyen gratis. Cada usuario, por otra parte, puede
programar sus propias funciones, documentarlas y ubicarlas en su biblioteca personalizada.
Las funciones tienen nombre, argumentos (informacin a procesar) y valores de
retorno (resultados de clculos).
En las primeras lneas, precedidas con M para %ue no sean e"ecuta!les, se puede
ubicar el texto que automticamente se visualiza con 2elp xxx (si xxx fuese el nombre de la
funcin).
La primer lnea e"ecuta!le debe estar precedida por la palabra function:
function [#alores de retorno]=nombredelafuncin(argumentos)
Donde, tanto los valores de retorno como los argumentos estn separados por comas.
Pueden ser escalares, vectores o matrices.
Las siguientes lneas, usando los argumentos, calculan los valores de retorno.
Eugenio Kolb 30
Programacin
Se graba el archivo nombredelafuncin+m (o nombredelprograma+m, si fuese el
caso), en una carpeta que sea el directorio actual, o una ubicada en el searc3 pat3. Y ya est
disponible:
Se puede utilizar desde la ventana de comandos, o desde otro archivo .m.
"jemplo <& Funcin que permite calcular el promedio de los valores ubicados en un
vector fila (o en la primera fila de una matriz), llamado datos. El nombre de la funcin es
promedio, y se graba como promedio.m. Al haber un solo valor de retorno, no se usan
corchetes:
% Funcion Promedio:
% ----------------------
% Calcula el promedio de datos ubicados en un vector
fila
% Datos=datos()
function f?promedio%datos&
c?siBe%datos,2&= % nmero de columnas de datos
sumador=0=
for i=1:c
sumador=sumador+datos(1,i);
end
f=sumador/c;
Desde la #entana de comandos, o desde una lnea de comandos de otro arc3i#o.m, se
puede usar esta funcin:
a)
EE a9O1,3,2,=,K,A,>,MP
a 9
1 3 2 = K A > M
EE promedio(a)
promedio 9
A.>2=6
')
EE c9promedio(OK,11,2,3,L,>,=,MP)
promedio 9
>.3K=6
c)
EE -elp promedio
Quncion Promedio$
@@@@@@@@@@@@@@@@
:alcula el promedio de datos
u'icados en un #ector ,ila
Datos9datos()
"jemplo -& funcin que permite obtener las races de de una ecuacin de 2 grado, dados los
coeficientes. Se guarda con el nombre raicesgrado-+m (en una carpeta ubicada en el camino de
bsqueda establecido en File@Set (at3)/
% raicesgrado2:
% ---------------
% Esta funcion permite obtener las raices de una ecuacion de grado 2
% Datos de entrada: coeficientes a, b y c, de ax^2 + bx + c
% Datos de salida: races r1 y r2
function Gr1,r2H?raicesgrado*%a,b,c&
r1=(-b+(b^2-4*a*c)^0.5)/(2*a);
r2=(-b-(b^2-4*a*c)^0.5)/(2*a);
E6emplos de operaciones matemticas bsicas>
Eugenio Kolb 31
EE Oa,'P9raices+rado2(2,16,=)
a 9
@6.=>3=
' 9
@A.A3>=
Programacin
)"emplo de asignaci'n de datos: dadas las
matrices A y B:
A B
1 2 5 6
3 4 7 8
Establecer una secuencia que permita ubicar los
datos en las variables matriciales, y a
continuacin, realizar las operaciones bsicas:
clc S .orra la #entana de comandos
clear S .orra #aria!les
A>I1 6 J8 <O SAsigna #alores a A
.>IK LJM NO S Asigna #alores a .
Casos de ",presiones Matriciales /
a) AFB : se suma elemento a elemento
6 8
10 12
') A9B : se resta elemento a elemento
-4 -4
-4 -4
c) A.UB : se multiplica elemento a elemento
5 12
21 32
d) AUB : se realiza el producto matricial (1*5 +
2*7 , 1*6 + 2* 8 ; 3*5 + 4*7 , 3*6 + 4*8), es
decir (19 , 22 ; 43 , 50):
19 22
43 50
e) A.VB : se divide elemento a elemento (A/B)
0.2000 0.3333
0.4286 0.5000
,) A.NB : se divide elemento a elemento (B/A)
(equivale a B./A).
5.0000 3.0000
2.3333 2.0000
+) AVB : se realiza la divisin matricial (A/B)
3.0000 -2.0000
2.0000 -1.0000
@& E"ponenciacin
h-1) A.W*: elemento a elemento
1 4
9 16
h-2) AW*: operacin matricial (equivale a A*A.
7 10
15 22
h-3) B.WA: elemento a elemento (las 2 matrices
deben ser de la misma dimensin, o una de ellas
ser un escalar, en cuyo caso volvemos a h-1)
5 36
343 4096
h-3) BWA: operacin matricial (A o B debe ser
escalar):
h-3-1: *.WA>
2 4
8 16
h-3-2: *WA>
10.4827 14.1519
21.2278 31.7106
=tras operaciones&
1) 2ranspuesta de A : AI
1 3
2 4
2) In(ersa de A : in(%A&
-2.0000 1.0000
1.5000 -0.5000
AUin(%A&>
1.0000 0
0.0000 1.0000
E6emplos con automatiBaciones: Dada la
matriz M conteniendo valores numricos.
a) Determinar los sub-ndices donde se
ubican valores mayores a 5.
b) Sumar los valores que cumplan con
esa condicin.
c) Reemplazar los que no cumplen con
esa condicin, con 0.
>> M=[ 2 10 12 5;3 2 17 8;3 1 1 5; 15 12 1 9]
M =
2 10 12 5
3 2 17 8
3 1 1 5
15 12 1 9
>> M1=M>5
M1 =
Eugenio Kolb 32
Programacin
0 1 1 0
0 0 1 1
0 0 0 0
1 1 0 1
>> M2=M(M1)
M2 =
15
10
12
12
17
8
9
>> S=sum(M2)
S =
83
>>M3=M1.*M
M3 =
0 10 12 0
0 0 17 8
0 0 0 0
15 12 0 9
E6ercicio: dado el sistema de ecuaciones
a b ? 5:
* a F ; b ? +
determinar los valores de a y b
Solucin: manualmente, obtendremos que (a=10
y b=-4). Se puede resolver el sistema usando
matrices, de la forma:
M.x = N ---- x = N/M
donde:
M N
1 -1 14
2 5 0
Programa:
% Resolucin de un sistema de 2
ecuaciones
% a - b = 14
% 2 a + 5 b = 0
clc
clear
M=[1 -1;2 5];
N=[14;0];
x=inv(M)*N;
disp('Valores de M')
disp(M)
disp('Valores de N')
disp(N)
disp('Valores de x')
disp(x)
Resultado (al ejecutarse el programa):
Valores de M
1 -1
2 5
Valores de N
14
0
Valores de x
10.0000
-4.0000
Eugenio Kolb 33
ProgramacinFinal2006D.doc 3
Comandos ! funciones bsicas
unciones y comandos generales
@elp: proporciona informacin en lnea sobre
todos los directorios de MATLAB.
@elp comando: porporciona informacin sobre el
comando nombrado
casesen: sensibilidad maysculas/minsculas.
C@at: lista ficheros .m y .mat del directorio de
trabajo.
siBe matriz: dimensiones de una matriz
lengt@ #ector: longitud de un vector
7uit: sale de sesin.
e"it: sale de sesin.
str*num> convierte cadenas (strings) de
caracteres numricos en los nmeros
correspondientes.
str*double: lo mismo, pero el nmero es de
doble precisin.
num*str: convierte un nmero en string.
int*str: convierte un entero en string.
c@ar: devuelve el caracter Ascii a partir de un
valor decimal
unciones matemticas y trigonomLtrica
sin = seno
cos = coseno
tan = tangente
asin = arco seno
acos = arco coseno
atan = arco tangente
atan* = arco tangente del cuarto cuadrante
sin@ = seno hiperblico
cos@ = coseno hiperblico
tan@ = tangente hiperblica
asin@ = arco seno hiperblico
acos@ = arco coseno hiperblico
atan@ = arco tangente hiperblica
abs = valor absoluto o mdulo de un complejo
s7rt = raz cuadrada
real = parte real
imag = parte imaginaria
con6 = complejo conjugado
round = redondea al entero mas prximo
fi" = redondea hacia 0
floor = redondea hacia menos infinito
ceil = redondea hacia mas infinito
sign = funcin de signo
rem = resto
gcd = mximo comn divisor
lcm = mnimo comn mltiplo
e"p = exponencial de base e.
log = logaritmo neperiano
log5+ = logaritmo decimal
unciones matriciales elementales
e"pm = matriz exponencial
logm = matriz logartmica
s7rtm = matriz raz cuadrada
funm = matriz de funciones arbitrarias
poly = polinomio caracterstico
det = determinante
trace = traza
Dron = producto tensorial
)atrices especiales
diag = matriz diagonal
eye = matriz unidad
ones = matriz constante (de 1's)
Beros = matriz nula
rand = matriz aleatoria (elementos distribuidos
uniformemente)
randn = matriz aleatoria (elementos distribuidos
normalmante)
linspace = genera un vector cuyas
componentes estn linealmente espaciadas.
logspace = genera un vector cuyas
componentes estan logartmicamente
espaciadas.
mes@grid = usada con funciones de 2 variables
magic = matriz cuadrada mgica.
@ilb = matriz de Hilbert
in(@ilb = inversa de una matriz de Hilbert
pascal = tringulo de Pascal
compan = matriz cuyo polinomio caracterstico
es el que se proporciona.
tril = parte triangular inferior
triu = parte triangular superior
unciones de anlisis de datos
ma" = valor mximo
min = valor mnimo
mean = valor medio
median = mediana
std = desviacin estandard
sort = ordenacin de elementos
sum = suma de elementos
prod = producto de elementos
cumsum = acumula la suma de elementos
cumprod = acumula el producto de los
elementos
diff = derivadas aproximadas
@ist = histograma
corrcoef = coeficientes de correlacin.
co( = matriz de covarianza
.ptimiBacin
min= calcula el mnimo de una funcin de una
variable
fmins=calcula el mnimo de una funcin de
varias variables
fBero= calcula los ceros de una funcin de una
variable
Eugenio Kolb 34
PROGRAMACIN
A& /rficos
1) /rficas P9K simples>
plot(x,y),title('Ttulo del Grfico'),xlabel('TtuloX'),ylabel('TtuloY'),grid
x e y son vectores. Opciones: pause, pause%n&, print (imprime el grfico en la impresora).
a) /rficos 4ineales y 4ogartmicos>
plot(x,y) Escala Lineal para ambos ejes
semilog"(x,y) Escala Logartmica para x y Lineal para y
semilogy(x,y) Al revs
loglog(x,y) Escala Logartmica para ambos ejes
b) /rficos mXltiples>
plot(x,y,w,z) donde x,y,z y w son vectores. Se grafica x vs. y, y luego w vs. z. La
ventaja es que el nmero de puntos no debe ser el mismo.
plot(x,f) donde x es un vector y f una matriz. Grafica x vs. las columnas
1,2, etc. Sino se especifica x, se usa 1,2, ....n.
L8neas ! marcas&
plot(x,y,'indicador',x,y,'indicador') une los puntos con un indicador de lnea y luego los
marca con otro de puntos.
ndicadores&
a) &e Lneas / - +continua)$ > +guiones)$ & +punteadas)$ -. +guiones - puntos).
') &e ?arcas / + $ ? $ @ $ , $ o $ ,.
Se pueden usar com!inaciones de esos parmetros . P.e.: 'rU9'. O escribir por separado:
plot(x,y,'r',x,y,'U', ..., etc. O establecer color de marca y de lnea por separado.
!olor )arca 4nea
y amarilla . punto 9 solida
m magenta o crculo > punto
c cyan " marca x 9. raya-punto
r roja F marca + 99 raya-raya
g verde U estrella
b azul s cuadrado
C blanca d diamante
D negra ( tringulo (abajo)
W tringulo (arriba)
Q tringulo (izquierda)
O tringulo (derecha)
p pentagrama
@ hexagrama
PROGRAMACIN
"scalas de "jes&
Por defecto, la escala es automtica. Con a"is(x_min,x_max,y_min,y_max) se puede personalizar
la escala. Con axis solo, se mantiene la escala para las siguientes grficas.
1ub(entanas>
subplot(m,n,p) Permite dividir la ventana de grficos en subventanas (2 o 4): m es el n
de filas de ventanas (1 o 2), n el nmero de columnas (1 o 2), y p indica la ventana actual.
)"emplo/
subplot(2,1,2),plot(x,y),title('Ttulo del Grfico'),xlabel('TtuloX'),ylabel('TtuloY'),grid
Divide la ventana de grfico en 2 subventanas: una arriba y otra abajo, y grafica en la ventana inferior.
2) /rficas tridimensionales>
mes@(x,y,z)
Grfica de cuadrcula abierta de la superficie definida por la matriz z; x e y pueden ser vectores que
definen los intervalos de valores de las coordenadas x e y, o matrices que definen la retcula subyacente de
coordenadas x e y.
surf%"#y#B&
Grfica de cuadrcula sombreada en vez de abierta.
Para evaluar una funci'n de una #aria!le f+x)$ se debe calcular un vector de valores x, y
luego calcular el correspondiente vector con los valores de la funcin f(x).
Para evaluar una funci'n de 6 #aria!les f+x$-), se define una retcula bidimensional en el
plano xy. Si en el vector x estn las coordenadas x de todos los puntos de la retcula, y en el
vector y estn las coordenadas y de todos los puntos de la retcula, se usa la funcin mes2grid
para generar las 2 matrices que definen la retcula subyacente para una funcin bidimensional: ,-
grid e !-grid.
Es decir, se generan 2 matrices de tamao n"m, basadas en los valores de los vectores x e y: x-grid
conteniendo los #alores de x repetidos en cada fila$ e --grid conteniendo los #alores de - repetidos en cada
columna.
)"emplo: se desea graficar B? f%"#y& ? 5
5 F "
*
F y
*
en el rango de x entre 2 y 2 con incrementos de 0.1, y de y entre 1 y 2, con incremento de 0.1
(rograma/
x=-2:0.1*2:2;
y=-1:0.1:2;
[x_grid,y_grid]=meshgrid(x,y);
z=1./(1 + x_grid.^2 + y_grid.^2);
subplot(2,2,1),mesh(x_grid,y_grid,z),title('Grafico de Mallas'),xlabel('X'),ylabel('Y'),zlabel('Z')
subplot(2,2,2),surf(x_grid,y_grid,z),title('Grafico de Superficie'),xlabel('X'),ylabel('Y'),zlabel('Z')
subplot(2,2,3),contour(x_grid,y_grid,z),title('Grafico de Contorno'),xlabel('X'),ylabel('Y'),zlabel('Z')
subplot(2,2,4),surfc(x_grid,y_grid,z),title('Grafico de
Superficie/Contorno'),xlabel('X'),ylabel('Y'),zlabel('Z')
% En los 4 casos, se podria haber utilizado x e y en vez de x_grid, y_grid. En el cuarto caso se podria
% haber utilizado meshc para un grfico de Mallas/Contorno
PROGRAMACIN
3) .tras funciones>
plot8
Permite graficar lneas y puntos en un espacio tridimensional.. Es la versin 3D de plot.
plot(x,y,z): ", y y B son vectores de la misma longitud. Esta expresin produce una
lnea en el espacio, que pasa por los puntos definidos en esos vectores.
plot(X,Y,Z): P, K y Y son matrices del mismo tamao. Se obtienen varias lneas que
pasan por esos puntos. Cada columna equivaldra a un vector con datos.
En general, para seleccionar tipo de marcador, y tipo de lnea y color, se usan las mismas
"strings o cadenas de caracteres que en el comando plot. As:
plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3,s3,...): acta al igual que plot, donde la x, y y
z son vectores o matrices.
Ejemplo del Ayuda de MatLab:
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
.b6etos 4I$E# creados con plot y plot8: el comando plot y plot3, una vez ejecutado,
produce uno o ms objetos LNE (lnea). Se pueden asignar propiedades adicionales a cada
objeto.
Objetos LNE y otros, adicionales (se aplican a plot y a plot8):
a) Creaci'n de nue#as lneas/
PROGRAMACIN
line(X,Y): agrega la lnea definida por X-Y a los ejes actuales. Si en vez de
ser vectores, X-Y son matrices del mismo tamao, una lnea por cada columna de las matrices es
aadida: se aplica a plot. Con line(X,Y,Z), se agrega una lnea al actual entorno grfico creado
con plot8.
b) Anotaciones de texto/
text(X,Y, 'string'): agrega un texto en esas coordenadas: se relaciona con
comandos previos plot. Con text(X,Y,Z, 'string'), se extiende el concepto a los grficos 3D
definidos con plot8.
AI& )atemticas
1) Polinomios>
Dado f(x) = a
0
x
N
+ a
1
x
N-1
+ a
2
x
N-2
+ ..........+a
N-1
x + a
N
$=grado del polinomio (valor mas alto usado como exponente).
a+# a5# ....a$, son los coeficientes del polinomio. Siempre hay N+1 coeficientes.
Los valores de x para los que la funcin f(x) es 0, se llaman races.
Un polinomio de grado N tiene N races y N+1 coeficientes.
)"emplo/ si f+x)>xK - 6x
<
- 11x
8
T 6Mx6 T19x - 6</
a) !lculo de f%"& para un dado con6unto de (alores de "# conociendo los coeficientes
del mismo.
La funcin poly(al%a#"& permite calcular el falor de f(x). En la expresin, a es una matriz
que contiene los coeficientes, y " es el valor o los valores a evaluar. El resultado de poly(al es
una matriz del mismo tamao que x.
2) !lculo de las races de un Polinomio
Con la funcin roots%a&, donde a es la matriz que contiene los coeficientes del polinomio,
podemos determinar las raices (5 en este ejemplo).
La funcin poly%r&, donde r es la matriz que contiene las races, permite calcular los coeficientes
del polinomio: es una manera de verificar el clculo anterior.
% Valores del Polinomio f(x), para un conjunto dado de x, conociendo los coeficientes
clc % Se limpia la ventana de comandos
clear % Se borran las variables ya declaradas
a=[1,-2,-11,27,10,-24]; %Coeficientes del polinomio
x=[-2 0 3]; %Valores de x para los que queremos calcular f(x)
p=polyval(a,x); % Se calcula f(x) para esos x
% Graficacin de los datos en ese rango de x
x1=-3:0.01:3; % Se genera una serie de valores de x, desde-3 hasta 3, con incremento de 0.1
p1=polyval(a,x1); % Se calcula f(x) para esos x
plot(x1,p1),title('Polinomio'),grid % Se grafica
% -------------------------------------------------------------- ------------------------------------------------------
% Raices del Polinomio f(x), conociendo los coeficientes
r=roots(a); % Se calculan las raices a partir de los coeficientes
% mpresin de los resultados
fprintf('Coeficientes del Polinomio: \n')
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',a)
fprintf('\nValores de x: \n')
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',x)
PROGRAMACIN
fprintf('\nValores de f(x) determinados: \n')
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',p)
fprintf('\nValores de las races: \n'), r
fprintf('Verificacin de los coeficientes a partir de las races \n')
g=poly(r);
fprintf(' %g %g %g %g %g %g %g %g %g %g \n',g)
Salida impresa$ al e"ecutar el programa/
3) A6uste de datos> regresin polinmica.
Con la funcin polyfit%"#y#n&, donde x e y son determinaciones que se quieren ajustar con
un polinomio de grado n, se obtienen los n+1 coeficientes de ese polinomio.
% Ajuste de datos con un Polinomio de orden n
x=1:10; % se carga en el vector x la serie 1,2,......,10
y=[0,2,5,10,19,28,34,31,32,35]; % se cargan en el vector y los datos
a3=polyfit(x,y,3); % se calculan los coeficientes para un ajuste con un polinomio de grado 3
a6= polyfit(x,y,6); % se calculan los coeficientes para un ajuste con un polinomio de grado 6
x1=0:0.1:10; % se carga en el vector x1 la serie 0, 0.1, 0.2, ...........10
p3=polyval(a3,x1); %para estos valores de x se calculan los valores del polinomio de grado 3
p6=polyval(a6,x1); %para estos valores de x se calculan los valores del polinomio de grado 6
% se grafican los datos: marcas (x,y), linea continua (x1,p3), lnea de puntos (x1,p6):
plot(x,y,'o',x1,p3,'-',x1,p6,'.')
% se imprime el resumen:
clc
fprintf('Valores de x\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', x)
fprintf('\nValores de y\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', y)
fprintf('\n Coeficientes para un ajuste con un polinomio de grado 3\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', a3)
fprintf('\n Coeficientes para un ajuste con un polinomio de grado 6\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', a6)
fprintf('\n Coeficientes para un ajuste con un polinomio de grado 3\n')
fprintf('%g %g %g %g %g %g %g %g %g %g %g \n', a3)
:oe,icientes del Polinomio$
1 @2 @11 2K 16 @2A
Halores de "$
@2 6 3
Halores de ,(") determinados$
LL @2A 33
Halores de las raGces$
r 9
@3.316K
2.>>=1 % 6.K2MMi
2.>>=1 @ 6.K2MMi
@6.MLA2
6.M>A>
Heri,icaci!n de los coe,icientes a partir de las raGces
1 @2 @11 2K 16 @2A
PROGRAMACIN
2) )atemtica 1imblica>
(Nota: descriciones y demostraciones de las herramientas de este entorno se obtienen con 3elp2in
tool!oxEs-m!olic$ y con s-mintro, s-mcalcdemo, simlindemo, s-m#pademo, s-mrotdemo, s-mecndemo).
a) .b6etos y (ariables simblicas
La Caja de Herramientas de Matemtica Simblica (5ool.ox S-m!olic ?at3) usa "D!"etos
Sim!'licos producidos por la funcin s!m.
As , la sentencia " ? sym%Z"Z&# produce una #aria!le sim!'lica llamada ".
Se puede abreviar a ? sym%ZaZ&= t ? sym%ZtZ&= " ? sym%Z"Z&= y ? sym%ZyZ&; escribiendo syms a t " y.
Se pueden usar variables simblicas en expresiones, y como argumentos de muchas
funciones:
r = x^2 + y^2
theta = atan(y/x)
atan(y/x)
e = exp(i*pi*t), etc
b) 1implificacin
Con la funcion simple se puede simplificar.
f = sym('cos(x)^2 + sin(x)^2') % el valor de f ser cos(x)^2 + sin(x)^2
f=simple(f) % el valor de f ser 1
f=sym('4*x^(4/2)/2')
Halores de "
1 2 3 A = > K L M 16
Halores de .
6 2 = 16 1M 2L 3A 31 32 3=
:oe,icientes para un auste con un polinomio de +rado 3
@6.13L36> 1.ML>> @2.L1AAM 6.A33333
:oe,icientes para un auste con un polinomio de +rado >
@6.661A=L33 6.6>=36A= @1.6=3A= K.>M1>M @2=.K6KM 3M.KA6M @26.L333
:oe,icientes para un auste con un polinomio de +rado 3
@6.13L36> 1.ML>> @2.L1AAM 6.A33333
PROGRAMACIN
f=simple(f) % resultado es 2*x^2
c) 3eri(adas e Integrales
Es interesante la posibilidad de calcular la integral o la deri#ada en forma directa:
As, si nos interesa la expresin "
8
:
f=sym('x^3')
diff(f) % calcula la derivada 3*x^2 (se podra haber hecho directamente diff('x^3'))
int(f) % calcula la integral *x^4 (se podra haber hecho directamente int('x^3'))
En derivadas e integrales, y en otras operaciones en este entorno, si aparece ms de una
variable, se usa " o la ms cercana alfabticamente a este nombre, salvo que se especifique la
variable. As, int%Z"WaZ& retorna "W%aF5&V%aF5&, pero int%Z"WaZ#ZaZ& retorna 5Vlog%"&U"Wa.
d) !onstantes simblicas
Tambin se crean con la funcin s!m. Por ejemplo: pi?sym%[piI&, usando una constante ya
existente. O: delta?sym%[5V5+I&
e) -esolucin de Ecuaciones
Las funciones sol.e y dsol.e se usan para resolver ecuaciones escritas de manera
simblica.
)"emplo: resolver a"
*
Fb"Fc
a) f=sym('a*x^2+b*x+c')
x=solve(f)
b) syms a b c x
x=solve('a*x^2+b*x+c')
c) x=solve('a*x^2+b*x+c=0')
Cual%uiera de las 8 formas lle#a al siguiente resultado para las races de x/
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Se debe tener cuidado extremo en manejar los resultados de un clculo. Por ejemplo:
B?sol(e%Z"W*F"UyFy?8Z#Z"W*9:U"F8?+Z& crea una Estructura de Datos B, con 2 componentes: " e
y. Los valores calculados debern ser solicitados de manera explcita:
z.x: [ 1]
[ 3]
z.y : [ 1]
[ -3/2]
Ahora, si se 3u!iese escrito G"#yH? sol(e%Z"W*F"UyFy?8Z#Z"W*9:U"F8?+Z&, esos mismos
resultados se cargaran en los vectores " e y como 2 pares de puntos. (1,1) y (3,-3/2).
Cuando se tienen ms variables que ecuaciones, se plantea la solucin para "# y luego
para aquellas cuyos nombres estn ms cerca alfabticamente a '"', dejando las otras como
variables.
PROGRAMACIN
As, C?sol(e%Z*U"98UyF:UB?55Z#Z9"F5:Uy9:UB?55Z& retorna w.x= -44/25*z+187/25 y w.y=
4/25*z+33/25
Los resultados de diversos clculos se expresan de distinta forma, para lo cual se debe
usar un segundo argumento en la funcin sym, cuyo valor puede ser: a) ZfZ (forma de punto
flotante, '1.F'*2^(e) o '-1.F'*2^(e), donde F es una string de 13 dgitos hexadecimales y e es un
entero), b) ZrZ (por defecto, estable siempre que sea posible la forma racional), c) ZeZ (error,
muestra el error entre la expresin racional y el real valor de punto flotante , y d) ZdZ (forma
decimal, donde el nmero de dgitos es tomado del seteo actual (funcin digits+n)).
E6emplos de utiliBacin de Matemtica Simblica
1) 3ado un polinomio> f%"&?I"W;95+U"W:F;U"W895+U"W*95\U"F5++I
a) Con s!m-pol! , se obriene un 0ector de Coeficientes $ a partir de la expresin
simblica f
f=sym('x^5-10*x^4+5*x^3-10*x^2-18*x+10') % Se crea el objeto simblico
c=sym2poly(f) % En el vector c se cargan [1 -10 5 -10 -18 100]
:ota: si se quisiera ingresar por teclado en tiempo de ejecucin la funcin, debe hacerse como
string - luego cin#ertirla en o!"eto sim!'lico/
fstring=input('ngrese funcion : ','s');
f=sym(fstring)
c=sym2poly(f)
Muchas veces se desea realizar el proceso inverso: con#ertir un o!"eto sim!'lico f en una
string, ya que muchas funciones exigen este formato (por ejemplo, la funcin fplot). Para ello, se
usa la funcin c2ar:
fstring=c@ar(f).
En otros casos, es necesario convertir un dato simblico en su forma numrica, para lo cual se
usa la funcin double.
Una vez obtenidos los coeficientes, recordemos otras funciones relacionadas con
polinomios: roots%c&: obtiene las races de un polinomio; poly(al%c#"&: calcula el polinomio f(x) a
partir de los coeficientes (c); polyfit%"#y#n&: calcula los coeficientes dado un conjunto de pares de
datos xy y el grado del polinomio; etc.
b) Si se desea realizar el proceso inverso: a partir de un =ector de Coeficientes o!tener el
o!"eto sim!'lico$ se debe usar la funcin pol!-s!m :
c=[1 -10 5 -10 -18 100] % se cargan los coeficientes
f=poly2sym(c) % se obtiene el objeto simblico (la funcin)
diff(f) % se obtiene la Derivada 5*x^4-40*x^3+15*x^2-20*x-18
int(f) % se obtiene la ntegral 1/6*x^6-2*x^5+5/4*x^4-10/3*x^3-9*x^2+100*x
c) Utilizacin de la funcin sol.e con polinomios
En el caso de un polinomio como el anterior, sol.e calcula las raices del mismo.
f=sym('x^5-10*x^4+5*x^3-10*x^2-18*x+100')
r=solve(f) % retorna un vector simblico conteniendo las races
rnumero=double(r) % convierte dichas races en nmero -1.626, 0.178-1.948i, 0.178+1.9487i, 1.673, 9.596
PROGRAMACIN
d) Uso de fplot , para graficar una funcin polinmica en formato string .
Si se tuviesen los coeficientes del polinomio, se puede usar un objeto simblico para llegar a la
exprecin string que permita usar fplot.
c=[1 -10 5 -10 -18 100]
f=poly2sym(c)
fstring=char(f)
fplot(fstring[-100,100]) % grafica el polinomio en el rango de x entre 100 y 100
e) Ejemplo de Derivadas, ntegrales y Grficos de un polinomio
clc
clear
fstring=input('ngrese funcion : ','s');
f=sym(fstring);
g=diff(f);
gstring=char(g);
h=int(f);
hstring=char(h);
x1=input('ngrese valor inicial : ');
x2=input('ngrese valor final : ');
clc
Mensaje1=strcat('La funcion f(x) es : ',fstring, '\n');
Mensaje2=strcat('La derivada de f(x) es : ',gstring, '\n');
Mensaje3=strcat('La integral de f(x) es : ',hstring, '\n');
,print,(Nensae1)
fprintf(Mensaje2)
fprintf(Mensaje3)
deltax=(x2-x1)/20;
subplot(2,2,1),eBplot(f,[x1,x2])
subplot(2,2,2),eBplot(g,[x1,x2])
subplot(2,2,3),eBplot(h,[x1,x2])
Ejecucin:
ngrese funcion : x^4-8*x^3+6*x^2-18*x+100
ngrese valor inicial : -100
ngrese valor final : 100
La funcion f(x) es :x^4-8*x^3+6*x^2-18*x+100
La derivada de f(x) es :4*x^3-24*x^2+12*x-18
La integral de f(x) es :1/5*x^5-2*x^4+2*x^3-9*x^2+100*x
2) -esolucin de 1istemas de Ecuaciones de di(ersos tipos
a) Dado el sistema siguiente, obtener la solucin:
2x - 14y z = 14
x + y - 12z = -5
-x + 10y + 2z =-8
clear
clc
f1=sym('2*x-14*y-z=14');
Nota$ si se (uisiera usar fplot en #e5 de ezplot,
-a'rGa (ue con#ertir ,, + . - en strin+s, con la
,unci!n char.
Heri,icaci!n en la #entana de comandos$
N9O2 @1A @1; 1 1 @12; @1 16 2P;
79O1A;@=;@LP;
R9 in#(N)& 7
R 9
2.L>62
@6.>3AA
6.>622
PROGRAMACIN
f2=sym('x+y-12*z=-5');
f3=sym('-x+10*y+2*z=-8');
[x,y,z]=solve(f1,f2,f3);
fprintf(char(f1))
fprintf('\n')
fprintf(char(f2))
fprintf('\n')
fprintf(char(f3))
fprintf('\n\n')
fprintf('x = %g y = %g z = %g',double(x),double(y),double(z))
Al e"ecutar/
2*x-14*y-z=14
x+y-12*z=-5
-x+10*y+2*z=-8
x = 2.86022 y = -0.634409 z = 0.602151
b) Resolver: "
*
9*"yF8y?955# "Fy
*
?5]
clear
clc
[x,y]=solve('x^2-2*x*y+3*y=-11', 'x+y^2=17');
xx=double(x)
yy=double(y)
3) .b6etos inline# string y simblicos>intercon(ersin y funciones
relacionadas
.b6etos inline > permiten crear directamente una funcin sin crear el archivo .m. As:
function[y]=cuadratic(a,b,c,x)
y='a*x^2-b*x+c'
equivale a:
cuadratic=inline('a*x^2-b*x+c')
.b6etos String& permiten escribir expresiones como simples cadenas de caracteres, y
utilizarlas con funciones de Matlab que las acepten as, o luego de convertirlas en otro tipo de
objeto.
)"emplos:
fplot('5*x^4-2/x+8',[-100,100])
fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
fplot('sin(1/ x)', [0.01 0.1],1e-3)
ezplot('cos(x)')
ezplot('x^3 + 2*x^2 - 3*x + 5 - y^2')
zsurf('s*cos(t)','s*sin(t)','t') para expresiones strings o simblicas
-esumen relacionado con funciones e intercon(ersin de tipos de datos>
Dada una ecuacin asignada de manera implcita (f = 'x^3-3*x+1/x^0.5'), (o ingresada por
teclado: f=input('ngrese funcion implicita: ','s')). Se tiene una cadena de caracteres, u objeto
string.
"" 9
3.A3KA @ 2.=LA6i
3.A3KA % 2.=LA6i
6.1=>M
@11.631K
.. 9
3.>MM3 % 6.3AM3i
3.>MM3 @ 6.3AM3i
@A.16A6
@=.2MA=
PROGRAMACIN
1) Con f se pueden realizar operaciones directamente: diff, int, fplot, etc.
2) f0= sym(f) con#ierte la cadena en un objeto simblico
Con f9 se pueden usar todas las funciones relacionadas con Ulge!ra Sim!Vlica
3) f1 = (ectoriBe(f) convierte los operadores W, V, etc.; en .W, .V. Se aplica si f es string o
una funci'n inline.
4) f4=inline(f1) convierte la cadena en un objeto funcin
Se pueden usar$ con f</ /uad +e#aluaci'n num0rica de una integral simple +Simpson))$
/uadl +e#aluaci'n num0rica de una integral simple +Lo!atto)$ dbl/uad +e#aluaci'n num0rica de
una integral do!le)$ triple/uad +e#aluaci'n num0rica de una integral triple)$ etc.
E6emplo 5
f='2*x^2-20*x+600' objeto String
f1=sym(f) objeto Simblico
solve(f1) Resolucin planteada
double(solve(f1)) Resolucin completa
E6emplo *
f='3*x^4-27*x^3+67*x^2-15*x-20'
f1=inline(f)
f2=vectorize(f1)
x=-10:1:10
y=f1(x) %error
y=f2(x)
plot(x,y)
f3=sym(f1)
b=double(solve(f3))
"jercicio&
clc;clear;
f=input('ngrese funcion implicita: ','s');
f1=vectorize(f);
f0=sym(f);
f2=diff(f);
f3=int(f);
fprintf('Funcion : %s , vectorizada a la forma %s\n',f,f1);
fprintf('Derivada : %s\n',char(f2));
fprintf(ntegral: %s\n',char(f3));
subplot(2,2,1),ezplot(f0),grid,subplot(2,2,2),ezplot(f2),grid,subplot(2,2,3),ezplot(f3),grid
r=double(solve(f0));
disp('Las raices son:');
disp(r)
fprintf('\n')
rango=input('ngrese rango de x entre corchetes, valores separados por coma :');
X=min(rango):(max(rango)-min(rango))/20:max(rango);
f4=inline(f1);
Y=f4(X);
subplot(2,2,4),plot(X,Y),grid
quad(f4,0, 100) % integral entre 0 y 100
3) Aplicaciones /rficas y Pedaggicas
En los ejemplos anteriores, hemos visto la importancia de ingresar una expresin
matemtica literal como cadena de caracteres, con distintos ejemplos; as como esa string se
PROGRAMACIN
convierte en un objeto simblico. A partir de poderosas funciones, se obtienen resultados que
tambin hay que administrar, convertir, etc.
Con los mismos criterios, se pueden utilizar una gran serie de funciones escritas de forma
simblica.
Escribiendo 3elp2in s-m!olic en la ventana de comandos, tenemos una descripcin de
distintas funciones que seran de gran utilidad en el estudio y/o enseanza de Matemticas. En
cada caso, con una serie de ejemplos.
Merece destacarse el conjunto de funciones destinadas a la representacin de funciones
de 2 y 3 dimensiones: eBcontour# eBcontourf# eBmes@# eBmes@c# eBplot# eBplot8# eBpolar#
eBsurf# eBsurfc, etc.
)"emplo/
clear
clc
f= sym('x^2-2/y^2+14');
ezmesh(f)
pause(5)
ezcontour(f)
pause(5)
ezsurf(f)
pause(5)
ezsurfc(f)
pause(5)
f=sym('sin(t)/t')
ezpolar(f, [-6*pi,6*pi])
AII& Interfaces /rficas con )at4ab
La nterface Grfica de Usuario (GU) permite, entre otras cosas:
a) Atili$ar 0entanas#ersonali$adas, con botones de comandos, elementos de men,
cuadros de edicin de datos, elementos grficos, globos de ayuda, etc. Tal como cualquier
aplicacin Windows.
b) #rogramar ".entos. Por ejemplo, un Evento puede ser un clicC sobre un botn, ... y
puede existir un conjunto de sentencias que se ejecutarn cada vez que se haga clicC en ese
botn.
c) Atili$ar un Asistente que gua al Usuario en la creacin de la Ventana o Formulario.
Este Asistente permite personalizar fcilmente la #entana grfica, y genera una gran parte del
c'digo (creacin de funciones, declaracin de varianles, etc.). El Usuario debe, nicamente,
planificar - ordenar la secuencia de ingreso de datos, u!icar las sentencias de clculo (tal como
hara en la Ventana de Comandos), y dirigir$ mostrar -@o graficar los resultados.
Este punto tiene por objeto intentar resumir los pasos necesarios para que el usuario
comn, ya habituado a usar las poderosas herramientas de clculo y graficacin a travs de la
escritura de sentencias en la ventana de comandos, y a la escritura de cdigo de programacin
simple almacenados en archivos .m; pueda reunir en una sola aplicacin distintas herramientas de
clculo y visualizacin de resultados, pudiendo incluso utilizar menes que agrupan y resuelven
en un mismo archivo situaciones anteriormente distribuidas en varios archivos.
Pasos para crear la /'I>
1) Con File@:e2@Gui@.lanC, se tiene un Formulario en blanco y una Barra de Herramientas
que se pueden empezar a insertar en aqul. Se estn generando 2 archivos distintos: la Figura (o
PROGRAMACIN
Formulario o Ventana Grfica, con los Controles, sus Propiedades, etc.), que se almacena con la
extensin .fig., y un archivo que se almacena con la extensin .m, conteniendo el cdigo de
programacin, autogenerado en gran parte por el Asistente. Conviene que ambos archivos tengan
el mismo nombre.
El archivo es de tipo function, con la forma function #arargout > xxxx+#arargin)$ donde
xxxx es el nombre asignado al archivo. En esta etapa, simplemente ignoraremos los rtulos,
declaraciones y cdigo creado de manera automtica encabezando el archivo, pero evitando
cuidadosamente de alterar su contenido.
Por otra parte, se crean automticamente prototipos de sub-funciones asociadas a Eventos
asociados a cada uno de los Objetos de la figura, empezando por la Figura en s (contenedora de
los otros controles). Nosotros nicamente insertaremos cdigo de programacin all donde nos
interese.
Una primera mirada del usuario (que observa por primera vez el extenso cdigo
autogenerado hasta ahora, sin 3a!er 3ec3o prcticamente nada a1n), le produce preocupacin, lo
cual es un error/ podemos #irtualmente ignorar gran parte del mismo - o!tener sin em!argo
importantes resultados con la GA,.
Nota: si se desea modificar una Figura existente, tambin hay que ingresar con File@:e2@Gui.
2) Se insertan Controles (objetos programables). Nos interesa, en esta etapa, estudiar
(adems de la Figura en s), los controles: Text, Edit, Pushbutton, Axes y Popupmenu.
Con el botn derecho del ratn accionando sobre un Objeto y eligiendo (ropert- ,nspector
(o haciendo do!le clicC sobre el Control), podemos, trabajando en 2iempo de 3ise<o, asignar los
.alores iniciales de las #ropiedades de cada =bjeto: valores, aspecto, color, etc.
Las #ropiedades fundamentales de los Objetos, que utilizaremos en esta etapa, son las
siguientes:
- 2ag: contiene el nombre del objeto. MatLab asigna un nombre genrico a cada objeto,
segn orden de insercin (text1, edit3, pushbutton2, etc.). Se recomienda no modificar esos
nombres.
- 1tring: te,to .isible del objeto. Puede ser editable en Tiempo de Ejecucin (en los
controles Edit).
- Aisible: con on u off se hace visible o invisible el control.
Los =bjetos fundamentales que utilizaremos, en esta etapa, son:
- Pus@button: en tiempo de ejecucin, al hacer click sobre el mismo, se ejecuta el cdigo
indicado en el texto asociado o "String.
- 2e"t: texto esttico (rtulo), modificable en tiempo de ejecucin.
- Edit: texto dinmico, modificable en tiempo de ejecucin por teclado. La propiedad String
de este objeto puede ser utilizada para ingresar nmeros, que luego seran convertido en tales
usando la funcin str-num.
- A"es: subventana de grfico.
Las operaciones bsicas que realizaremos en esta etapa son:
a) Crear una interface, ubicando controles y estableciendo propiedades.
b) Programar secuencias que permitan ingresar datos dentro de objetos, llevar los
datos a variables, realizar clculos y operaciones con los mismos, mostrar los resultados en
objetos, y graficar en subventanas: todo en la misma Figura.
Debemos incorporar algunos conceptos importantes:
PROGRAMACIN
Sentencia get : permite, en Tiempo de Ejecucin, tomar el #alor de una propiedad de un
o!"eto o control para procesar ese dato (asignndolo a variables, etc.).
#aria!le > get+D!"eto$ W:om!re de (ropiedadR)
significa "asignar a la #aria!le el #alor actual de la propiedad tal del o!"eto tal.
D!"eto: es el 3andle o propietario del objeto.
)"emplos:
a=get(handles.edit3,'String')
asigna el contenido de la propiedad 4String del control )dit8 a la #aria!le alfanum0rica a
a=str2num(get(handles.edit3,'String'))
asigna el contenido de la propiedad 4String del control )dit8 +%ue de!e contener n1meros)$ a la #aria!le
num0rica a$ %ue ser escalar$ #ector o matriz$ seg1n cantidad - distri!uci'n de los n1meros
Sentencia set : permite, en Tiempo de Ejecucin, modificar el #alor de propiedades de un
o!"eto o control. En cierta manera, realiza la operacin inversa que get.
set (Objeto, 'Nombre de Propiedad','Valor de la Propiedad'):
significa 4asignar a la propiedad tal$ de tal o!"eto$ tal #alor
)"emplos:
set(handles.text2,'Visible','on')
set(handles.text2,'String','ngrese los coeficientes del polinomio')
La primera lnea 3ace =isi!le el control text6$ - la segunda asigna al mismo una cadena de
caracteres.
"jemplos prcticos
E6ercicio 5> creacin de un formulario con los elementos que permitan ingresar, y
representar pares de datos x-y, en una primera subventana grfica; y en una segunda
subventana, representar la cuadrtica a."
*
Fb."Fc.
(asos/
1) File/New/Gui/Blank.
2) Se insertan los siguientes elementos (en todos los casos MatLab asigna un nombre
generico caracterstico de cada objeto, seguido por un nmero (p.e. Axes1, Edit3), los que se
almacenan en la propiedad Tag del mismo: no se recomienda su modificacin):
a) 2 objetos Axes (subventanas grficas), Axes1 y Axes2, donde se representarn los
datos.
b) 7 objetos Edit, dentro de los cuales se pueden escribir los datos. En Edit1 y Edit2 se
ingresarn los datos de los vectores X e Y a representar en Axes1. En Edit3, Edit4 y Edit5 se
ingresarn los parmetros a, b y c de la cuadrtica a representar en Axes2, entre los valores x1 y
x2, especificados en Edit6 y Edit7.
PROGRAMACIN
c) 2 objetos Pushbutton: el primero de ellos para e"ecutar la graficacin en Axes1, y el
segundo para hacerlo en Axes2.
d) 7 objetos Text, uno para cada Edit, con el nico objeto de visualizar el texto indicativo
de cada uno de stos.
3) Ubicando los controles en sus respectivos lugares, en Tiempo de Diseo, se
establecern las Propiedades niciales: con botn derecho/Property nspector (o doble click):
a) La propiedad String es el Texto Visible en cada caso (salvo Axes): se la modifica en
cada caso (en los Edit se elimina el texto).
b) Cualquier otra propiedad: fuente, color, etc., etc.
La interface grfica ya est terminada, y se la grabar como xxxx.fig. En otro momento,
para volver a editar la figura, hay que ingresar con File/New/Gui/Open Existing File.
An no hay cdigo de programacin asociado. MatLab genera automticamente un archivo
que se grabar como xxxx.m (siendo conveniente mantener el mismo nombre de la figura). Utiliza
subfunciones en donde se ingresar el cdigo asociado a cada objeto: aqu utilizaremos la
subfuncin Callback.
Como todo asistente, el de MatLab genera un archivo con cdigo inicial que podran
modificar usuarios con slidos conocimentos, pero que en primera instancia se debe dejar como
est.
En nuesto caso, evidentemente la secuencia de sentencias ejecutables se asocian a los
botones de comandos, los cuales programaremos de la siguiente manera:
function varargout = pus@button5_Callback(h, eventdata, handles, varargin)
x=str2num(get(handles.edit1,'String')) % con get se toma la propiedad String actual de edit1
y=str2num(get(handles.edit2,'String'))
plot(x,y,'Parent',handles.axes1)
set(handles.axes1,'XGrid','on','YGrid','on')
% --------------------------------------------------------------------
function varargout = pus@button*_Callback(h, eventdata, handles, varargin)
a=str2num(get(handles.edit3,'String'))
b=str2num(get(handles.edit4,'String'))
c=str2num(get(handles.edit5,'String'))
x1=str2num(get(handles.edit6,'String'))
x2=str2num(get(handles.edit7,'String'))
xx=x1:(x2-x1)/20:x2
yy=a.*xx.^2+b.*xx+c
plot(xx,yy,'Parent',handles.axes2)
set(handles.axes2,'XGrid','on','YGrid','on')
7ota$ con get se toma, en tiempo de eecuci!n el #alor
de al+una propiedad de al+Dn o'etoSPara -acer lo
contrario, se usa set. !jemplo$ a+re+ar un nue#o
control Be"tL . un 'ot!n Pus-'utton3, . pro+ramar
para (ue aciendo click en *ste, se u'i(ue en a(u*l un
mensae$
set"#andles.text$%&'tring% )!so es *na pr*eba)
PROGRAMACIN
E6ercicio *: Se desea obtener un formulario a travs del cual # ingresando los
coeficientes de un polinomio# calcular las races y graficar los (alores "9y para " entre + y
5+. La idea es la siguiente, se iniciar la aplicacin (ver figura), con los controles Text2, Edit1 y
Pushbutton3 invisibles (propiedad visible=off, en Tiempo de Diseo). Al pulsar Pushbutton1, esos
3 controles se harn visibles. Pulsando Pushbutton3, los coeficientes ingresados en Edit1 se
utilizarn para calcular y visualizar las raices en Edit2, y para graficar los datos en Axes1.
Pushbutton2 no existe.
Se usar Pushbutton4 para re-graficar el polinomio entre 2 nuevos lmites de x, ubicados
en Edit3 y Edit4
A"es(
A"es2
Edit1 a
K
Pus-'utton1 . 2
Be"t1 a K
PROGRAMACIN
function pus@button5_Callback(hObject, eventdata, handles)
set(handles.text2,'Visible','on')
set(handles.edit1,'Visible','on')
set(handles.text2,'String','ngrese los coeficientes del polinomio')
set(handles.pushbutton3,'Visible','on')
function pus@button8_Callback(hObject, eventdata, handles)
A=roots(get(handles.edit1,'String'))
set(handles.text3,'String','Las Raices son:')
set(handles.edit2,'Visible','on')
set(handles.edit2,'Style','text')
set(handles.edit2,'String',num2str(A))
x1=-1
x2=10
x=x1:(x2-x1)/50:x2
y=polyval(str2num(get(handles.edit1,'String')),x);
plot(x,y,'Parent',handles.axes1)
function pus@button:_Callback(hObject, eventdata, handles)
x1=str2num(get(handles.edit3,'String'))
x2=str2num(get(handles.edit4,'String'))
x=x1:(x2-x1)/50:x2
y=polyval(str2num(get(handles.edit1,'String')),x);
plot(",.,IParentI,-andles.a"es1)
Be"t1
Pus-'utton1
Be"t2
Edit1
Pus-'utton3
Be"t3
Edit2
Edit3
EditA
Pus-'uttonA
A"es1
PROGRAMACIN
E6ercicio 8> se pretende programar una Figura o Formulario en MatLab que permita
resolver Sistemas de Ecuaciones Lineales , ingresando la matriz de coeficientes y un vector
columna con los trminos independientes.
function pus@button5_Callback(hObject, eventdata, handles)
A=str2num(get(handles.edit1,'String'))
B=str2num(get(handles.edit2,'String'))
X=inv(A)*B;
set(handles.edit3,'String',num2str(X))
Be"t1
Be"t2
Be"t3
Be"tA
Be"t=
Edit1
Edit2
Edit3
Pus-'utton1
PROGRAMACIN
E6ercicio :> programar una aplicacin que permita, en el mismo formularo a) graficar una
serie de datos x-y-z a travs de distintos mtodos, b) graficar distintas funciones simblicas
popup_sel_index = get(handles.popupmenu1, 'Value');
x=[1 2 3 4 5]
y=[10 20 30 40 50]
z=[1 2 3 5 7;2 3 6 8 8;3 4 6 7 8; 3 5 6 8 7;2 5 4 3 2]
[Xgrid,Ygrid]=meshgrid(x,y)
switch popup_sel_index
case 1
plot(x,y),xlabel('X'),ylabel('Y'),zlabel('Z')
case 2
plot3(Xgrid,Ygrid,z)
case 3
mesh(Xgrid,Ygrid,z)
case 4
surf(Xgrid,Ygrid,z)
case 5
contour3(Xgrid,Ygrid,z)
case 6
surfc(Xgrid,Ygrid,z);
end
set(handles.axes1,'XGrid','on','YGrid','on');
set(handles.axes1,'XDir','normal','YDir','normal');
set(handles.axes1,'XColor','blue','YColor','blue');
% set(gca,XLabel('X'),YLabel('Y'),ZLabel('Z'))
function popupmenu2_Callback(hObject, eventdata, handles)
axes(handles.axes1);
cla;
popup_sel_index = get(handles.popupmenu2, 'Value');
PROGRAMACIN
switch popup_sel_index
case 1
ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-6*pi,6*pi])
case 2
ezsurf('x*exp(-x^2 - y^2)')
case 3
ezsurf('x*(y^2)/(x^2 + y^4)')
case 4
ezsurf('x*y','circ')
case 5
ezsurf('real(atan(x + i*y))')
case 6
ezsurf('exp(-x)*cos(t)',[-4*pi,4*pi,-2,2])
case 7
ezsurf('exp(-s)*cos(t)','exp(-s)*sin(t)','t',[0,8,0,4*pi])
case 8
ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,pi/2,0,3*pi/2])
case 9
ezsurf('s*cos(t)','s*sin(t)','t')
case 10
ezsurf('s*cos(t)','s*sin(t)','s')
end
E6ercicio ;: disear un formulario o figura, tal que permita, ingresando los valores de X e
Y, obtener el grfico correspondiente.
Se utilizarn 2 cuadros de texto o rtulos (text), 2 cuadros de edicin (edit), un botn de comandos
(pus3!utton), y una subventana de grficos (axes).
Si el usuario ingresa 2 vectores de distinta longitud, se visualizar un cuadro de dilogo que
informe de ste error.
function pus@button5_Callback(hObject, eventdata, handles)
x=str2num(get(handles.edit1,'String'))
y=str2num(get(handles.edit2,'String'))
if length(x)==length(y)
plot(x,y,'^-'),title('f(x) vs.x'),xlabel('Valores de X'),ylabel('Valores de Y'),grid
else
msgbox('Los vectores tienen distinta longitud')
end
Programacin
Anexos
+nexo ,
Codificacin de Datos
?a pala'ra N0S087ES puede ser almacenada . procesada por un ordenador. Biene L letras
o caracteres. AsG como se o'ser#a en este te"to, est/ lista para ser leGda . asimilada por el usuario
comDn.
Sin em'ar+o, para otros ,ormatos de representaci!n necesariamente de'emos
descomponerla en los caracteres (ue la componen. :ada car/cter, a su #e5, puede ser escrito usando
distintos c!di+os. Por eemplo$
AS:00 M I S I O N E S
Decimal KK K3 L3 K3 KM KL >M L3
Te"adecimal AD AM =3 AM AQ AE A= =3
Binario 1661161 1661661 1616611 1661661 1661111 1661116 1666161 1616611
Resulta e#idente (ue, si intentamos ima+inar mecanismos ,Gsicos para almacenar o
transmitir esa in,ormaci!n, el c!di+o 'inario es el (ue meor se adapta, al estar representado por
dG+itos (ue pueden tomar solo 2 #alores (6 o 1). Es lo (ue se llama -it. ?a traducci!n directa de esta
,orma de representar los datos a ,en!menos ,Gsicos resulta e#idente$ la posici!n 4encendido< o
4apa+ado< de un interruptor, un punto de un soporte ma+n*tico (ue est* imantado o no, un
conductor el*ctrico (ue ten+a o no corriente, un lu+ar de una tareta de cart!n (ue est* per,orado o
no, etc.
Usando 4pa(uetes< de 'its .a podemos representar m/s datos. ?os pa(uetes de L bits,
llamados -.tes, permiten representar todos los caracteres (ue conocemos.
Si ima+inamos, dentro de un ordenador, un lu+ar de recepci!n ,Gsica (ue detecta a tra#*s de
L conductores el*ctricos comunicados con el teclado el pulsado de una tecla, . si sa'emos (ue
a(uellos conductores (ue tienen corriente el*ctrica se representan con 1, . los (ue no con 6,
podemos con#ertir esa in,ormaci!n a un ,ormato m/s 4ami+a'le<. AsG, si se detecta una pulsaci!n
de tecla con la secuencia 61666661, es por(ue se puls! la 4A<.
1ase de numeracin
Se re,iere al nDmero de sGm'olos di,erentes usados para representar un #alor.
:!di+o 1inario ('ase 2)$ utili5a 46< . 41<.
:!di+o "e9adecimal ('ase 1>)$ utili5a 46<, 41<, ...<M<, . 4A<, 4B<, ... 4Q<.
:!di+o 'ecimal ('ase 16)$ utili5a 46<, 41<, ... 4M<.
Bodo dato tiene su correspondencia con estos sistemas de numeraci!n.
Sistema 1inario
:onsiderando (ue utili5a 2 sGm'olos para representar #alores (46< . 41<), com'inando los
mismos se tienen los si+uientes eemplos$
@ Utili5ando 1 dG+ito, se o'tienen 2 com'inaciones$ 6 . 1.
Programacin
@ Utili5ando 2 dG+itos, se o'tienen A com'inaciones$ 66, 61, 16, . 11.
@ Utili5ando 3 dG+itos, se o'tienen L com'inaciones$ 666, 661, 616, 611, 166, 161, 116, 111.
@ Utili5ando 7 dG+itos, se o'tienen 2
7
com'inaciones. En los 3 casos anteriores, se tendrGa$ 2
1
,
2
2
, . 2
3
com'inaciones.
Utili5ando cada una de esas com'inaciones para representar los nDmeros enteros, se tiene el
Sistema o :!di+o 'ecimal$ 6, 1, 2, 3, A, =, ...etc.
1inario 6 1 16 11 166 161 116 111 1666 1661 1616 1611 1166 1161 1116 1111 16666
'ecimal 6 1 2 3 A = > K L M 16 11 12 13 1A 1= 1>
Se puede +enerali5ar diciendo (ue a partir de un #alor escrito en :!di+o Binario se o'tiene
el correspondiente #alor 7atural Entero (Sistema Decimal), e"pres/ndolo como una sumatoria de
potencias de 4.
AsG, un nDmero escrito en c!di+o Binario usando 7 dG+itos$ a
7@ 1
a
7@ 2
a
7@ 3
. . . . a
2
a
1
a
6
, puede
con#ertirse en el correspondiente #alor Decimal con la e"presi!n a
6
2
6
% a
1
2
1
% a
2
2
2
% . . . . . %
a
7@ 1
2
7@ 1
$
611666161166116661 7 dG+itos 'inarios
a
7@ 1
a
7@ 2
a
7@ 3
. . . . a
2
a
1
a
6 9
a
6
2
6
% a
1
2
1
% a
2
2
2
% . . . . . % a
7@ 1
2
7@ 1
9
Una ,orma pr/ctica de con#ertir #alores de un sistema a otro es a tra#*s de la utili5aci!n de
una sencilla ta'la, asociando el nDmero decimal correspondiente a cada uno de los dG+itos 'inarios
utili5ados, de derec-a a i5(uierda, . sumar los correspondiente a los dG+itos 4acti#os< en la
codi,icaci!n 'inaria (1).
=12 2=> 12L >A 32 18 L A 4 1 Decimal 1> % 2 9 1L
6 6 6 6 6 1 6 6 1 6 Binario 16616
8tra manera consiste en ir di#idiendo el #alor decimal por 2. Por eemplo, si partimos del
decimal K1, o'tendremos (ue le corresponde el #alor 'inario 1666111
K1 2
1 3= 2
1 1K 2
1 L 2
6 A 2
6 2 2
6 1 Bomando desde atr/s -acGa adelante$ 1666111
=12 2=> 12L 8: 32 1> L : 4 1 8: ; : ; 4 ; 1 < =1
6 6 6 1 6 6 6 1 1 1
/peraciones con n0meros binaros
?as operaciones con nDmeros 'inarios son sencillas. Se utili5a casi el mismo ra5onamiento
(ue al tra'aar con #alores decimales. AsG$ 1 % 6 9 1, 6 % 6 9 6, 1 " 6 9 6, 1 " 1 9 1. Sin em'ar+o, 1
i N
i
i
a
=
1
6
2
Programacin
% 1 9 16 (no 2). !jemplo$ el decimal 16 tiene la si+uiente e(ui#alencia 'inaria$ 1616. El decimal M,
por otra parte, 1661. :on la suma . el producto de am'os #alores decimales o'tenemos 1M . M6.
V:!mo se reali5arGa el c/lculo tra'aando con #alores 'inariosW
Suma Producto
1 6 1 6 1 6 1 6
% "
1 6 6 1 1 6 6 1
1 6 1 6
1 6 6 1 1 6 6 6 6
6 6 6 6
(1M) 1 6 1 6
1 6 1 1 6 1 6
(M6)
Sistema "e9adecimal
Utili5a 1> sGm'olos para representar #alores (los 16 dG+itos num*ricos, 46< a 4M<, . las >
primeras letras, 4A< a 4Q<. Estos caracteres, en ese orden, se corresponden con los #alores 6 a 1=
del c!di+o decimal.
?o (ue se puede representar con A dG+itos del c!di+o 'inario, se puede representar con un
sGm'olo del c!di+o -e"adecimal. :on ese criterio, podemos reali5ar las con#ersiones.
!jemplos$
231
(16
9 1116 6111
(2
9 EK
(1>
E K
Binario Te"adecimal Decimal
11 3 3
161 = =
1161 D 13
1111 Q 1=
1 6666 16 1>
1 6661 11 1K
1 1111 1Q 31
16 6666 26 32
16 1116 2E A>
1 1616 1161 1AD A2M
1) 1digo +'122
Programacin
Un ordenador procesa . almacena in,ormaci!n binaria. Sin em'ar+o, para representar
caracteres, se de,ine el c!di+o !SCII (American Standard Code 3or In3ormation Interc#ange).
Para ello, se usan octetos de dG+itos 'inarios o Bits (de Binar. Digit). Esos 4pa(uetes< de L 'its,
denominados Bytes, permiten 2
L
9 2=> com'inaciones posi'les. ?os primeros 12L (decimal 6 a
12K) constitu.en el con>unto )?sico uni(ersal, mientras (ue los si+uientes 12L son utili5ados de
manera di,erente por los di#ersos ,a'ricantes de e(uipos . desarrolladores de So,tXare. Adem/s, los
32 primeros #alores est/n reser#ados para control de comunicaciones, de impresoras . otros (el
retorno de carro est/ representado por el 4car/cter< AS:00 con #alor decimal 13).
El (ue corresponde a decimal 6 (primer #alor de la ta'la), indica 4#acGo< (una cadena de caracteres
de lon+itud 6, lo (ue no de'e con,undirse con un dato 4nulo< o ine"istente). El car/cter
correspondiente al decimal 32 (espacio en 'lanco) inicia el set de caracteres (ue normalmente
encontramos en cual(uier teclado. Es importante tener la ta'la de con#ersi!n$ en cualquier
momento podemos generar el carcter escribiendo en el teclado num!rico el n"mero
correspondiente en el cdigo decimal# mientras se mantiene pulsada la tecla A$%.
Se de'e destacar (ue caracteres como Y, Z, [, etc, se encuentran .a en el conunto e"tendido de
caracteres (entre decimal 12L . 2==).
En los eemplos anteriores se -a #isto (ue en el sistema Binario se utili5an dG+itos (6 o 1)
puestos uno al lado del otro. :ada uno de los dG+itos se llama 1it (de Binar. Digit).
Un octeto de dG+itos 'inarios resulta su,iciente para representar cual(uiera de los sGm'olos
utili5ados normalmente en un teclado. De esa manera se de,ine el 1@te, . el c!di+o donde se
representa cada sGm'olo (letras, nDmeros, sGm'olos, etc.) se denomina AS:00 (1digo !st4ndar
+mericano para el 2ntercambio de 2n3ormacin). Un B.te puede tomar 2=> com'inaciones
posi'les$ su,icientes para (ue cada una de ellas represente un car4cter.
1onj*nto -4sico 5ni6ersal de 1aracteres +'122
1inario 'ecimal "e9adecimal !SCII 1inario 'ecimal "e9adecimal !SCII
6 6 6 +(acio- 1666661 >= A1 !
1 1 1 1666616 >> A2 1
16 2 2 1666611 >K A3 C
11 3 3 1666166 >L AA '
166 A A 1666161 >M A= E
161 = = 1666116 K6 A> F
116 > > 1666111 K1 AK G
111 K K 1661666 K2 AL "
1666 L L 1661661 K3 AM I
1661 M M 1661616 KA AA A
1616 16 A 1661611 K= AB B
1611 11 B 1661166 K> A: .
1166 12 : 1661161 KK AD M
1161 13 D 1661116 KL AE N
1116 1A E 1661111 KM AQ O
1111 1= Q 1616666 L6 =6 P
16666 1> 16 1616661 L1 =1 #
16661 1K 11 1616616 L2 =2
16616 1L 12 1616611 L3 =3 S
16611 1M 13 1616166 LA =A T
16166 26 1A 1616161 L= == $
16161 21 1= 1616116 L> => V
16116 22 1> 1616111 LK =K C
Programacin
16111 23 1K 1611666 LL =L &
11666 2A 1L 1611661 LM =M D
11661 2= 1M 1611616 M6 =A E
11616 2> 1A 1611611 M1 =B F
11611 2K 1B 1611166 M2 =: G
11166 2L 1: 1611161 M3 =D H
11161 2M 1D 1611116 MA =E I
11116 36 1E 1611111 M= =Q J
11111 31 1Q 1166666 M> >6 K
166666 32 26 +es*acio- 1166661 MK >1 a
166661 33 21 L 1166616 ML >2 )
166616 3A 22 M 1166611 MM >3 c
166611 3= 23 N 1166166 166 >A d
166166 3> 2A O 1166161 161 >= e
166161 3K 2= P 1166116 162 >> Q
166116 3L 2> R 1166111 163 >K g
166111 3M 2K S 1161666 16A >L /
161666 A6 2L + 1161661 16= >M i
161661 A1 2M - 1161616 16> >A >
161616 A2 2A T 1161611 16K >B U
161611 A3 2B ; 1161166 16L >: l
161166 AA 2: V 1161161 16M >D m
161161 A= 2D W 1161116 116 >E n
161116 A> 2E % 1161111 111 >Q o
161111 AK 2Q 0 1116666 112 K6 *
116666 AL 36 6 1116661 113 K1 X
116661 AM 31 1 1116616 11A K2 r
116616 =6 32 4 1116611 11= K3 s
116611 =1 33 7 1116166 11> KA t
116166 =2 3A : 1116161 11K K= u
116161 =3 3= 5 1116116 11L K> (
116116 =A 3> 8 1116111 11M KK Y
116111 == 3K = 1111666 126 KL 9
111666 => 3L Z 1111661 121 KM @
111661 =K 3M [ 1111616 122 KA 3
111616 =L 3A : 1111611 123 KB \
111611 =M 3B 2 1111166 12A K: ]
111166 >6 3: ^ 1111161 12= KD _
111161 >1 3D < 1111116 12> KE `
111116 >2 3E a 1111111 12K KQ
111111 >3 3Q b 16666666 12L L6
1666666 >A A6 c
Programacin
Bibliograf8a&
o Mathews, John H.; Fink, Kurtis D. Mtodos Numricos con Matlab. Prentice Hall Madrid 2000 SBN:
84-8322-181-0
o Garca, Javier; Rodrguez, Jos; Brazales, Alfonso. ntroduccin al Matlab. Universitas (Universidad
Cientfica Universitaria) Crdoba, Argentina- 2002 SBN: 987-9406-06-8
o Etter, Delores M. Soluciones de problemas de ingeniera con Matlab - Prentice Hall 1998 SBN: 980-
17-0111-9.
Disponible en nternet&
Garca de Jaln, Javier. Aprenda ?atla! L.K como si estu#iera en primero. Escuela Tcnica
Superior de ngenieros ndustriales. Universidad Politcnica de Madrid. Agosto 2004
(http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab65/matlab65pro.pdf)
Aguilera Garca, Jos J. y otros. Fundamentos de ,nformtica. Coleccin Apuntes, Universidad de
Jan, 1997 (http://wwwdi.ujaen.es/asignaturas/fundTopo/TEMA1.pdf, ...TEMA2.pdf, .....etc.).
Cordn, Jos A. Curso de iniciaci'n a ?A5LA.. Dpto. de Matemticas, Estadstica y
Computacin (MATESCO) - Facultad de Ciencias
(http://personales.unican.es/cordonj/doctor98/curmat/index.html#tabla-contenidos)
Urea, Luis A.,y otros . Fundamentos de ,nformtica. 1999 Editorial Alfaomega. Ra-ma (citado en
http://www.mailxmail.com/curso/informatica/programacionestructurada/capitulo22.htm)
Direcciones .arias:
Sobre Visual Basic: http://mundovb.net/mundoc/
Sobre Programacin en distintos lenguajes: http://lawebdelprogramador.com/cursos/
Sobre ntegracin Numrica: http://usuarios.lycos.es/calculoint21/id39.htm
Sobre utilizacin de Matlab: http://internet-solutions.com.co/deacosta/matlab/Curmat1.html