PRCTICA 1: CARACTERSTICAS BSICAS FUNCIONES
MATEMTICAS COMUNES
10
11
PRCTICA 2: VECTORES Y MATRICES, CARACTERSTICAS Y
OPERACIONES
12
13
14
15
16
17
18
19
20
21
22
PRCTICA 3: OPERACIONES RELACIONALES Y LGICAS
23
24
25
26
27
28
29
30
31
32
PRCTICA 4: GRFICAS 2-D Y 3-D
33
34
35
36
37
38
39
40
PRCTICA 5: PROGRAMACIN EN MATLAB
41
42
43
44
45
46
47
48
49
PRCTICA 6: POLINOMIOS
ANLISIS NUMRICOS
50
51
52
53
54
55
56
57
PRCTICA 7 : OPTIMIZACIN
58
59
60
61
62
63
64
65
66
67
1)APLICACIONES SOBRE EL USO DE MATLAB
1. En el campo de las Comunicaciones, MATLAB permite realizar modelado
y diseo de sistemas DSP, trabajar con sistemas conmutados, con
telefona fija/mvil o ADSL y con modelado de canal/emisor/receptor
2. En el campo Aeroespacial/Defensa, MATLAB permite trabajar en sistema
radar, unidades de seguimiento y rastreo, avinica, modelado y control
de sistemas de potencia y guiado, y navegacin y control
3. En el campo de la Automocin, MATLAB posibilita aplicaciones para
trabaja en la ingeniera de control, sistemas de suspensin, sistemas
ABS y diseo de bloques de embrague.
4. En el campo de los Perifricos para ordenadores, MATLAB dispone de
drivers para discos, de perifricos de control para posicin/velocidad y
de instrumentacin.
5. MATLAB, a travs de Simulink, permite disear sistemas dinmicos
sencillos o complejos y realizar modelado y simulacin mediante un
lenguaje agradable basado en diagramas de bloques. Admite sistemas
en tiempo continuo, sistemas de control y control inteligente, y
aplicaciones de procesado de seal digital y comunicaciones
6. Permite integrar la expresin y el clculo simblicos (clculo,
transformadas, lgebra lineal, ecuaciones) al entorno de clculo y
visualizacin
68
2)COMANDOS PARA MATRICES Y
VECTORES
69
3)EJERCICIOS DE MATRIZ Y VECTOR
70
4)CDIGO ASCII:
El ASCII en informtica se conoce como cdigo fuente al texto desarrollado
en un lenguajede programacin que debe ser compilado o desarrollado
para poder ejecutar en un ordenador, que es una presentacin de los
caracteres alfanumricos que es cuando est formado por letras y nmeros y
se hace fcil para la comunicacin entre los diferentes dispositivos digitales.
71
5)DEFINICIN DE GRADIENTE
CON EJERCICIO DE APLICACIN
El gradiente es una operacin vectorial, que opera sobre una funcin escalar,
para producir un vector cuya magnitud es la mxima razn de cambio de la
funcin en el punto del gradiente y que apunta en la direccin de ese mximo.
En coordenadas rectangulares el gradiente de la funcin f(x,y,z) es:
Aplicaciones en fsica
La interpretacin fsica del gradiente es la siguiente: mide la rapidez de
variacin de una magnitud fsica al desplazarse una cierta distancia. Un
gradiente alto significa que de un punto a otro cercano la magnitud puede
presentar variaciones importantes (aqu se entiende por gradiente alto o
grande uno tal que su mdulo es grande). Un gradiente de una magnitud
pequeo o nulo implica que dicha magnitud apenas vara de un punto a otro.
El gradiente de una magnitud fsica posee innumerables aplicaciones en
fsica, especialmente en electromagnetismo y mecnica de fluidos. En
particular, existen muchos campos vectoriales que puede escribirse como el
gradiente de un potencial escalar.
Uno de ellos es el campo electrosttico, que deriva del potencial
elctrico:
Todo campo que pueda escribirse como el gradiente de un campo
escalar, se denomina potencial, conservativo o irrotacional. As, una fuerza
conservativa deriva de la energa potencial como:
72
Los gradientes tambin
aparecen en los procesos de
difusin que verifican la ley de Fick o la ley de Fourier para la temperatura.
As, por ejemplo, el flujo de calor en un material es directamente
proporcional al gradiente de temperaturas
siendo
la conductividad trmica.
CLCULO DE GRADIENTE
73
6)REALIZAR 2 EJEMPLOS DE
APLICACIN DE PROGRAMACIN MATLAB, USANDO POR LO MENOS 15
LNEAS.
EJERCICIO 1:
74
EJERCICIO 2:
75
PRCTICA 1:
CARACTERSTICAS BSICAS
FUNCIONES MATEMTICAS COMUNES
clc
%%EDISON PILLAJO GARCA
%%QUINTO NIVEL
%%INGENIERA ELCTRICA
%%------------------------------%% 1)OPERACIONES MATEMTICAS COMUNES %%
a=7 %damos valor a la variable a y la escribe en la pantalla
b=4; %no escribe el valor de b por el ; del final
a+b %realiza la suma de dos variables y guarda la solucin en la
variable ans
a-b %resta
a*b %multiplicacion
a/b %divisin
a^b %potenciacin
who
whos
%% 2)FORMATOS DE NMEROS
% modifica la forma de presentacin
% format short , Formato coma fija con 4 digitos despues de la
coma(formato que viene pro defecto
% format long , Formato coma fija con 14 o 15 digots despues de la coma
% format short e , Formato coma flotante con 4 dgitos despues de la coma
% format long e , Formato coma flotante con 14 o 15 digitos despues de
la coma
% format short g ,La mejor entre coma fija o flotante con 4 digitos
despues de la coma
% format long g , La mejor entre coma fija o flotante con 14 o 15 digitos
% despues de la coma
% format short eng , Notacion cientifica con 4 digitos despues de la coma
y un exponente de 3
% format long eng , Notacion cientifica con 16 digitos significantes y un
exponente de3
% format bank , Formato como fija con 2 digitos despues de la coma
% format hex , Hexadecimal
% format rat , Aproximacion racional
% format + , Positivo, negativo o espacio en blanco
format short
pi
%% 3)VARIABLES ESPECIALES
% ans , VARIABLE USADA POR DEFECTO PARA ALMACENAR EL ULTIMO RESULTADO
% pi , RAZON DE UNA CIRCUNFERENCIA A SU DIAMETRO
% eps , NUMERO MAS PEQUEO, TAL QUE CUANDO SE LE SUMA 1, CREA UN NUMERO
EN
% COMA FLOTANTE EN EL COMPUTADOR MAYOR QUE 1
% inf , INFINITO
% nan , MAGNITUD NO NUMRICA
76
% i y j , i=j=square(-1)
% realmin , EL NMERO REAL POSITIVO MS PEQUEO QUE ES UTILIZABLE
% real max , EL NEMRO REAL POSITIVO MS GRANDE QUE ES UTILIZABLE
clock %AO MES DA HORA MINUTOS Y SEGUNDOS EN ESTE ORDE
date
%DIA-MES-AO
calendar %mes actual
%% FUNCIONES MATEMTICAS COMUNES
% ceil(x)
, REDONDEO HACIA EL INFINITO
% fix(x)
, "" HACIA CERO
% floor(x)
, "" REDONDEO HACIA MENOS INFINITO
% round(x)
, "" REDONDEO HACIA EL ENTERO MS PRXIMO
x=5.92
ceil(x)
fix(x)
floor(x)
round(x)
round([19.54646 13.656 -2.1565 0.78])
%% FUNCIONES TRIGONOMTRICAS
% sin(x) , seno
% cos(x) , coseno
% tan(x) , tangente
% csc(x) , cosecante
% sec(x) , secante
% cot(x) , cotangente
% ...d(x) , fucin trigonomtrica con el ngulo expresado en grados
% sind(x) , seno(grados)
% ...h(x) , funcin trigonomtricas hiperbolica con el ngulo expresado
en
% radianes
% sinh(x) , seno hiperblico (radianes)
% a...(x) , inversa de la funcion
% asin(x)
sin(pi/2)
sind(-90)
cosd(60)
%% ALGUNAS OPERACIONES ESPECIALES
% abs(x)
, valor absoluto o magnitud de un nmero complejo
% sign(x)
, signo del argumento si x es un valor real (-1si es
negativo, 0 si es cero, 1 si es positivo)
% esp(x)
, esponencial
% gcd(m,n)
, mximo comun divisor
% lcm(m,n)
, minimo comun multiplo
% log(x)
, logaritmo neperiamo o natural
% log2(x)
, logaritmo en base 2
% log10(x)
, logaritmo decimal
% mod(x,y)
, modulo despues de la division
% rcm(x,y)
, resto de la division entera
% sqrt(x)
, raiz cuadrada
77
% nthroot(x,n) , raiz n-sima de x
abs(-7) % valor absoluto
sign(10) % signo del numero 10
gcd(9,12) %maximo comun divisor entre 9 y 12
lcm(10,25) %mnimo comn multiplo
%% NMEROS COMPLEJOS
% abs(x)
, magnitud del nmero real complejo x
% angle(x)
, ngulo (en radianes) del complejo x
% complex(y,z) , genera el complejo y+zi
% conj(x)
, conjugado del nmero complejo x
% imag(x)
, parte imaginaria del nmero complejo x
% real(x)
, parte real del nmero complejo
% sign(x)
, divide el complejo x por su magnitud, devuelve un nmero
% complejo con el mismo ngulo de fase pero con magnitud 1
% isreal(x)
, devuelve 1 si es real, y 0 si es complejo
x=3+4i
y=2
z=7
abs(x)
angle(x)
complex(y,z)
conj(x)
imag(x)
real(x)
sign(x)
isreal(x)
TAREA 1
clc
%% TAREA 1
%% A) CREE Y PRUEBE LA SINTAXIS MATLAB PARA EVALUAR LAS SIGUIENTES
EXPRESIONES
%% Y VERIFIQUE SUS RESPUESTAS CON CALCULADORA A MANO
%1)
5+3/9-1 %LA RESPUESTA EN CALCULADORA ES 4.3333
%2)
2^3-3/5+3 %LA RESPUESTA EN CALCULADORA ES 10.4000
%3)
5^2+1/4-1 %LA RESPUESTA EN CALCULADORA ES 24.2500
%4)
41/2*52/3 %LA RESPUESTA EN CALCULADORA ES 355.333
%5)
(5+6*7/3-2^2)/(2/3*(3/3*6)) %LA RESPUESTA EN CALCULADORA ES 3.7500
78
%% B) RESUELVA EL SIGUIENTE PROBLEMA
%% EL SOL IRRADIA 385x10^24 J/S DE ENERGA, LOS CUALES SE GENERAN
%% MEDIANTE REACCCIONES NUCLEARES QUE CONVIERTEN LA MATERIA EN ENERGA.
%% UTILIC MATLAB Y LA ECUACIN DE EINSTEIN PARA DETERMINAR CUNTA
MATERIA
%% SE DEBE CONVERTIR EN ENERGA PARA PRODUCIR ESA CANTIDAD DE RADIACIN
%% EN EUN DA.
%% GUAS
%1) RAPIDEZ DE LA LUZ C=3.0x10^8 m/s , MASA(m) EN KG
%2) ENERGA IRRADIADA EN UN DA -> FACTOR DE CONVERSIN
%3) ECUACIN DE EINSTEIN -> E=mc^2
%4) RESPUESTA MATERIA m=3.7 x10^14 J/m^2/s^2
%5) LA MASA EN KG -> 1J=1Kgm^2/s^2
%6)ESTABLEZCA CONCLUSIONES LITERALES O GRFICAS
%
E=385*10^24 %ENERGA IRRADIADA EN UN SEGUNDO
c=3.0*10^8
%VELOCIDAD DE LA LUZ
Ea=E*3600*24 %ENERGA IRRADIADA EN UN DA
m=Ea/c^2
%MATERIA DE UN DA
%%CONCLUSIN:
%LA FORMA MS FACIL DE REALIZAR ESTE EJERCICIO ES TRANSFORMANDO
%LA ENERGA IRRADIADA EN UN SEGUNDO A LA DE UN DA LUEGO USAMOS
%LA FORMULA
%% C) DOS EJERCICIOS DE CADA TEMA
%1) OPERACIONES MATEMTICAS COMUNES
a=2; b=3, c=8;
x=(a+b)/(c*2*b) %EJERCICIO 1...........LA RESPUESTA ES 0.1042
y=(a+b+c)*(a/b) %EJERCICIO 2...........LA RESPUESTA ES 8.6667
%2) FORMATOS DE NMEROS
format short
%EJERCICIO 1...........LA RESPUESTA ES 0.1042 (este
comando permite dar una respuesta aproximada con 4 decimales)
x
format long
%EJERCICIO 2...........LA RESPUESTA ES 8.666666666666666
(este comando permite dar una respuesta aproximada con 15 decimales)
y
%3) VARIABLES ESPECIALES
date
%EJERCICIO 1 ESTE COMANDO NOS PERMITE MOSTRAR EL DIA-MES-AO
calendar %EJERCICIO 2 ESTE COMANDO NOS PERMITE MOSTRAR EL CALENDARIO DEL
mes actual
%4) FUNCIONES MATEMTICAS COMUNES
ceil(x) %EJERCICIO 1 REDONDEO HACIA EL INFINITO
fix(y)
%EJERCICIO 2 REDONDEO HACIA CERO
%5) FUNCIONES TRIGONOMTRICAS
sin(pi/2) %EJERCICIO 1 FUNCION SENO EN REDIANES
79
sind(-90) %EJERCICIO 2
SENO EN GRADOS
%6) ALGUNAS OPERACIONES ESPECIALES
log(x)
%EJERCICIO 1 logaritmo neperiamo o natural
log2(y)
%EJERCICIO 2 logaritmo en base 2
%7) NMEROS COMPLEJOS
com=9+4i
angle(com) %EJERCICIO 1
complejo com
real(com) %EJERCICIO 2
FUNCIN
NOS PERMITE SACAR EL ngulo (en radianes) del
NOS PERMITE SACAR EL NMERO REAL DEL IMAGINARIO
80
PRCTICA 2: VECTORES Y MATRICES, CARACTERSTICAS Y
OPERACIONES
clc
%%EDISON PILLAJO GARCA
%%QUINTO NIVEL
%%INGENIERA ELCTRICA
%%------------------------------clc
%% PRTICA N2
%% TEMA: VECTORES Y MATRICES
%% 1)COMO VAMOS A DEFINIRLOS
%PARA CREAR UN VECTOR INTRODUCIMOS LOS VALORES DESEADOS SEPARADOS (O
COMAS
%TODO) ELLO ENTRE CORCHETES []. SI LO QUE QUEREMOS ES CREAR UNA MATRIZ LO
%HACEMOS DE FORMA ANLOGA PERO SEPARADO LAS FILAS CON PUNTOS Y COMAS (;).
%GENERALMETE USAREMOS LETRAS MAYSCULAS CUANDO NOMBREMOS A LAS MATRICES Y
%MINSCULA PARA VECTORES Y ESCALARES. ESTO NO ES IMPRESCINDIBLE Y MATLAB
NO
%LO EXIGE, PERO RESULTA UTIL.
%EJEMPLOS
x=[5 7 -2 4 -6] %es un vector, los elementos los separamos con espacios
y=[2,1,3,7]
%es otro vector, los elementos los separamos con comas
z=[0 1 2,3 4,5] %es otro vector, da igual separar los elementos por
comas o espacios
A=[1 2 3;4 5 6]
%es una matriz con 2 filas y 3 columnas
%% 2)DIRECCIONAMIENTO DE ELEMENTOS DE VECTORES Y MATRICES
%PARA ACCEDER A LOS ELEMENTOS INDIVIDUALES DE UN VECTOR LO HAREMOS
%UTILIZANDO SUBNDICES, AS x(n) SERA EL N-SIMO ELEMETO DEL VECTOR X.
SI
%QUEREMOS ACCEDER AL LTIMO PODEMOS INDICARLO USANDO end COMO SUBNDICE.
x(2)
%segundo elemento del vector x
x(end) %ltimo elemento del vector x
%PARA ACCEDER A UN BLOQUE DE ELEMENTOS A LA VEZ, SE USA LA NOTACIN DE
DOS
%PUNTOS (:), ASI x(m:n) NOS DA TODOS LOS ELEMENTOS DESDE EL M-SIMO DEL
VECTOR x.
x(2:4) %devuelve desde el segundo al cuarto elemento del vector x
%SI INTRODUCIMOS UN NMERO ENTRE EL PRIMERO Y EL SEGUNDO TAMBIN SEPARADO
%POR DOS PUNTOS (:) SE MOSTRARN LOS ELEMENTOS DEL PRIMERO AL LTIMO
%INDICADO, INCREMENTADOS SEGN EL NMERO QUE APARE CE EN EL CENTRO (O
DECREMENTADOS SI EL NMERO ES NEGATIVO)
x(1:3:5) %devuelve el primero, tercero y quinto elemento del vector x
%OTYRA FORMA DE OBTENER UN CONJUNTO CONCRETO DE ELEMENTOS DEL VECTOR ES
%INDICADO ENTRE CORCHETES [] LAS POSICIONES DE LOS ELEMENTOS QUE QUEREMOS
%OBTENER PONIENDO PARENTESIS FUERA DE LOS CORCHETES.
x([3 5 1]) %devueleve el tercero, quinto y primer elemento del vector x
81
%PARA ACCEDER A LOS ELEMENTOS DE UNA MATRIZ NECESITAMOS DAR DOS VALORES,
EL
%PRIMERO INDICA LA FILA Y EL SEGUNDO LA COLUMNA
A(2,1) %elemento de la matriz que est en la fila 2 y en la columna 1
%SIQUEREMOS QUEREMOS QUE ESCRIBA TODA UNA FIALA USAREMOS LOS DOS PUNTOS
%PARA INDICAR QUE QUEREMOS TODOS LOS ELEMENTOS.
A(2,:) %escribe la segunda fila de la matriz
%Y SIMILAR SI QUEREMOS QUE ESCRIBA TODA UNA COLUMNA PERO AHORA SITUAMOS
LOS
%DOS PUNTOS EN EL LUGAR DE LA FILAS PARA INDICAR QUE QUEREMOS TODAS LAS
%FILAS DE ESTA COLUMNA.
A(:,2)
%escribe la segunda columna de la matriz
%AL IGUAL QUE CON LOS VECTORES PODEMOS INDICAR QUE ESCRIBA UNA SERIE DE
%FILAS O COLUMNAS LA MANERA DE HACERLO SERA MUY PARECIDO
A(2,2:3) %escribe de la segunda fila de la matriz, las columnas de la 2 a
la 3
A(2,[3 1]) %escribe de la segunda fila de la matriz, las columnas 3 y 1
A([2 1],2:3) %escribe de las filas 2 y 1 de la matriz, las columnas de la
2 a la 3
A(end,[1 3]) %escribe de la ltima fila, las columnas 1 y 3
%MATLAB TIENE ADEMS OTRA FORMA DE IDENTIFICAR CADA ELEMENTO DE UNA
MATRIZ,
%DE MODO QUE PODEMOS ACCEDER A UN ELEMENTO DE UNA MATRIZ INDICANDO SLO
UN
%VALOR Y NO DOS, PERO DEBEMOS SABER QUE EL ORDEN ELEGIDO POR MATLAB ES
POR
%COLUMNAS AS LOS ELEMENTOS DE LA MATRIZ A SERAN DENOMINADOS
%
.........................
%
. A(1) . A(3) . A(5) .
%
. A(2) . A(4) . A(6) .
%
.........................
A(5) %accede al elemento 5 de la matriz, es decir, igual que si
escribiramos A(1,3)
%% 3)CONSTRUCCIN ABREVIADA DE ALGUNOS VECTORES
%A PARTE DE DEFINIR UN VECTOR INTRODUCIENDO CADA UNO DE SUS ELEMENTOS,
%TAMBIN PODEMOS CREALO HACIENDO USO DE LAS SIENGUIENTES SENTENCIAS:
%
%
%
b
%
%
%
%
a
%
(a:b) crea un vector que comienza en el valor a y acaba en el valor b
aumentando de 1 en 1
(a:b:c) crea un vetor que comienza en el vector a y acaba en el vector
aumentando de c en c
linspace(a,b,c) genera un vector linealmente espaciado entre los
valores a y b con c elementos.
linspace(a,b) genera un vector linealmente espaciado entre los valores
y b con 100 elementos.
82
% logspace(a,b,c) genera un
vector logaritmicamente espaciado
entre los
% valores 10^a y 10^b con c elementos.
% logspace(a,b) genera un vector logarcmicamente espaciado entre los
% valores 10^a y 10^b con 50 elementos.
(1:7)
%crea un vector que comienza en 1, aumenta de 1 en 1 ya acaba
en 7
(1:3:10) %crea un vector que comenzando en 1, aumenta de 3 en 3 hasta el
10
(1:4:10) %comenzando en 1, aumenta de 4 en 4 hasta el 10 y por eso acaba
en 9
(-50:-7:1)
%crea un vector que comenzando en 50, disminuye de 7 en 7
hasta el 1
linspace(2,6,3) %genera un vector desde el 2 al 6 con 3 elementos
equdistantes
linspace(2,6,4) %genera un vector desde el 2 al 6 con 4 elementos
equdistantes
logspace(0,2,4) %genera un vector logarmicamente espaciado entre 10^0 y
10^2 con 4elementos
%% 4)CONSTRUCCIN DE ALGUNAS MATRICES
%AL IGUAL QUE PASA CON LOS VECTORE, EXISTEN UNAS SENTENCIAS QUE NOS
AYUDAN
%A CREAR MS RPIDAMENTE ALGUNAS MATRICES QUE MATLAB YA TIENE
%PREDEFINIDAS (m y n DEBEN TOMAR VALORES NATURALES)
% zeros(n)
crea una matriz cuadrada n x n de ceros
% zeros(m,n) crea una matriz m x n de ceros
% ones(n)
crea una matriz cuadrada n x n de unos
% ones(m,n)
crea una matriz m x n de unos
% rand(n)
crea una matriz cuadrada n x n de nmeros aleatorios con
% distribucin uniforme (0,1)
% rand(m,n)
crea una matriz n x n de nmeros aleatorios con
distribucin uniforme (0,1)
% randn(n)
crea una matriz cuadrada n x n de nmeros aleatorios con
% distribucin normal (0,1)
% randn(m,n) crea una matriz m x n de nmeros aleatorios con
% distribucin uniforme (0,1)
% eye(n)
crea una matriz cuandrada n x n de unos en la diagonal y
% ceros el resto
% eye(m,n)
crea una matriz m x n de unos en la diagonal y ceros el
resto
% magic(n)
crea un amatriz cuadrada n x n de enteros de modo que sumen
% lo mismo las filas y las columnas
% hilb(n)
crea una matriz cuadrada n x n de Hilbert, es decir, los
% elementos (i,j) responden a la expresin (1/(i+j-1)).
% invhilb(n) crea una matriz cuadrada n x n que es la inversa de la
matriz de Hilbert
%EJEMPLOS
zeros(3)
%matriz cuadrada de 3x3 de ceros
zeros(2,5)
%matriz cuadrada de 2x5 de ceros
ones(2,3)
%matriz de unos
83
randn(2,5)
eye(2)
rand(2,4)
%matriz de valores
aleatorios entre 0y1 segn la
uniforme (0,1)
%matriz de valores aleatorios segn la normal(0,1)
%matriz de vaores de uno diagonal
magic(4)
hilb(3)
%MATRIZ MGICA DE 4X4
%matriz Hilbert de 3x3
%% 5)OPERACIONES BSICAS CON MATRICES
% +
A+B
SUMA DE MATRICES
% A-B
RESTA DE MATRICES
% *
A*B
MULTIPLICACIN DE MATRICES
% .*
A.*B
MULTIPLICACIN ELEMENTO A ELEMENTO DE MATRICES
% /
A/B
DIVISIM DE MATRICES POR LA DERECHA
% ./
A./B
DIVISIN ELEMENTO A ELEMENTO DE MATRICES POR LA DERECHA
% \
A\B
DIVISIN DE MATRICES POR LA IZQUIERDA
% .\
A.\B
DIVISN ELEMENTO A ELEMENTO DE MATRICES POR LA IZQUIERDA
% ^
A^n
POTENCIACIM ()n DEBE SER UN NMERO, NO UNA MATRIZ
% .^
A.^B
POTENCIACIN ELEMENTO A ELEMENTO DE MATRICES
% '
A'
TRANSPOSICIM COMPLEJA CPNJUGADA
% .'
A.'
TRANSPOSICIN DE MATRICES
n=2
A=[1 2 3;4 5 6;4 5 6]
B=[1 1 1;0 1 6;1 5 9]
C=[2+8i 6+8i; 7+8i 9+i ]
A+B
%SUMA DE MATRICES
A-B
%RESTA DE MATRICES
A*B
%MULTIPLICACIN DE MATRICES
A.*B
%MULTIPLICACIN ELEMENTO A ELEMENTO DE MATRICES
A/B
%DIVISIM DE MATRICES POR LA DERECHA
A./B
%DIVISIN ELEMENTO A ELEMENTO DE MATRICES POR LA DERECHA
A\B
%DIVISIN DE MATRICES POR LA IZQUIERDA
A.\B
%DIVISN ELEMENTO A ELEMENTO DE MATRICES POR LA IZQUIERDA
A^n
%POTENCIACIM ()n DEBE SER UN NMERO, NO UNA MATRIZ
A.^B
%POTENCIACIN ELEMENTO A ELEMENTO DE MATRICES
C'
%TRANSPOSICIM COMPLEJA CONJUGADA
C.'
%TRANSPOSICIN DE MATRICES
84
PRCTICA 3: OPERACIONES RELACIONALES Y LGICAS
clc
%% PRACTICA NMERO 3
%% 1.OPERACIONES CON VECTORES
%% cross(x,y) producto vectorial entre los vectores x,y
% dot(x,y) producto escalar entre los vectores x,y
x=[1 2 3]
y=[2 4 5]
cross (x,y)
dot (x,y)
%% 2.FUNCIONES PARA EL ANALISIS DE MATRICES
%% cond (A) numero de condicion
%% det(A) determinante
% diag(v) crea una matriz diagonal con el vector v sobre la
% diag (A) extrae la diagonal de la matriz A como un vector
% eig(A) valores propios
% inv(A) matriz inversa
% length(A) maxima dimension
% norm(A) norma
% norm(A,n) norma-n
% normest(A) estyimacion de la norma-2
% null(A) espacio nulo
% orth (A) orotogonalizacion
% pinv(A) pseudoinversa
% poly(A) polinomio caracteristico
% rank(A) rango
% rref(A) reduccion mediante la eliminacion de Gauss de una
% size(A) dimensiones
% trace(A) traza
% tril (A) matriz triangular inferior a partir de la matriz
% triu (A) matriz triangular superior a partir de la matriz
diagonal
columna
matriz
A
A
% EJEMPLOS: sea A matriz, v vector y n numero natural
v=[1 2 3]
diag(v) % crea una matriz diagonal a partir del vector v
A=[1 2 3 ;7 8 9;2 4 6 ]
diag(A) %crea un vector columna a partir de la matriz A
size(A) % devuelve las dimensiones de la matriz como un vector fila
length(A) %devuelve la mayor de las dos dimensiones de la matriz
trace(A) % traza de la matriz, debe ser la matriz cuadrada
rank(A) % rango de la matriz
rref(A) %reudccion mediante Gauss
I=tril(A),u=triu(A) % convierte en ceros todos los elementos que quedan
encima de la diagonal principal y lo guarda en la variable I
% convierte en ceros todos los elementos que quedan
% debajo de la diagonal principal y lo guarda en la
85
variable u
%% 3. OTRAS OPERACIONES CON MATRICES
% find(A) devuelve los indices dond las entradas de A son distintos de
cero
% fliplr(A) intercambia la matriz de izquierda a derecha
% flipud(A) intercambia la matriz de arriba a abajo
%% reshape(A,m,n) devuelve una matriz mxn cuyos elecmentro se toman por
columnas de A, si A no contiene mxn elementos daria un error
% rot90(A) gira la matriz 90 en sentido contrario a las agujas del reloj
% rot90(A,n) gira la matriz nx90
% expm(A) matriz exponencial
% logm(A) matriz logaritmica
% sqrtm(A) matriz de raices cuadradas
% funm(A,@funcion) evalua la funcion que indiquemos en la matriz A
% exp, log, sqrt operan elemento a elemento
% [VE,VA]=eig(A) VE son los vectores propios y VA son los valores propios
% [L,U]= lu(A) factorizacion LU
% [Q,R]= qr(A) factorizacion QR
%% EJEMPLOS:
B=[pi 0;pi/4 pi/3]
find(B) % devuelve los indices como un vector columna
reshape(B,1,4)
rot90(B) % gira la matriz 90
rot90(B,3) % gira la matriz 270 (90x3=270)
funm(B,@sin) % calcula el seno de cada elemento de la matriz
expm(B)
%% 4. TEXTO
%% una cadena de caracteres es texto rodeado por comillas simples (') y
se maneja como vectores filas. Se direccionan y manipulan
%% igual que los vectores. Son posibles las operaciones matematicas sobre
cadenas. Una vez hecha la operacion matematica sobre una
%% cadena, esta se ve como un vector de numeros en ASCII
%% para ver la representacion ASCII de una cadena, podemos utilizar las
funciones abs, double o sumamos cero. Para restaurarla y verla
%% de nuevo como cadena de caracteres, usamos la funcion setstr. Si
queremos cambiar a minusculas aadiremos la diferencia entre 'a' y 'A'
%% Si queremos q escriba algo en pantalla podemos utilizar el comando
disp.
a='casa';b='gato'; % ay b son cadenas de caracteres (se manejaran como
vectores)
a+b
a+0 % vemos el codigo ASCII de la cadena
abs(a) % otra forma de ver la representacion ASCII de la cadena
double(a) %una tercera forma de ver la representacion ASCII de la cadena
setstr(ans) %convertimos un vector de numero enteros en caracteres
abs('a')-abs('A') % calculamos la diferencia entre minusculas y
mayusculas
86
setstr(a-32) %escribimos los
caracteres conociendo la
representacion ASCII
disp(a) %escribe el valor almacenado en la variable a
disp('escribe esto') %escribe el texto que haya entre comillas
%% 5. HIPERMATRICES
%% matlab permite trabajar con matrices de mas de dos dimensiones. Los
elementos de una hipermatriz pueden ser numeros caracteres
%% estructuras y vectores o matrices de celdas. Las funciones que operan
con matrices de mas de dos dimensiones son analogas a las
%% funciones vistas anteriormente aunque con algunas diferencias por
ejemplo, a la hora de definirlas:
HM(:,:,1)=[1 2 3;4 5 6] %definimos la primera capa
HM(:,:,2)=[7 8 9;10 11 12] %definimos la segunda capa
%% 6. OPERACIONES CON HIPERMATRICES
%% algunas funciones para generar matrices admiten mas de dos subindices
y pueden ser utilizadas para generar hipermatrices como
%% rand, randn, zeros y ones, tambien se pueden emplear con hipermatrices
las funciones size y reshape entre otras. La funcion eat
%% permite concatenar matrices segun las distintas "dimensiones"
A=zeros(2,3);B=ones(2,3); % definimos dos matrices de las mismas
dimensiones
cat(1,A,B) % las concatenan una debajo de la otra
cat(2,A,B) % las concatenan una al lado de la otra
cat (3,A,B) % las concatenan como distintas capas de una hipermatriz
%% Respecto al resto de funciones debemos tener en cuenta que:
%% 1.las funciones que operan sobre escalares como sin, cos,etc se
aplican sobre las hipermatrices elemento a elemento(igual que
%% ocurre al aplicarlas sobre vectores y matrices)
%% 2.Las funciones que operan sobre vectores como sum, max, etc se
aplican a matrices e hipermatrices segun la primera dimension,
%%resultando un array de una dimension inferior
%% 3.Las funciones matriciales propias del algebra lineal, como det,inv,
etc no se pueden aplicar a hipermatrices, para aplicarlas
%% habria que extraer las matrices correspondientes.
87
PRCTICA 4: GRFICAS 2-D Y 3-D
clc
%% PRACTICA NMERO 4
%% GRAFICAS 2-D
%LA ORDEN plot GENERA UNA GRFICA. LOS ARGUMENTOS DEBEN SER VECTORES DE
LA
%MISMA LONGITUD.
%EJEMPLO
x=[-2 -1 0 1 2 3] ;y=[4 1 0 1 4 9];
plot(x,y)
%SI QUEREMOS CAMBIAR LA APARENCIA DE LA GRFICA BASTA PINCHAR EN EL
LTIMO
%BOTN DE LA BARRA DE HERRAMIENTAS Y SE ABRIR UNOS CUADROS EN LOS
%LATERALES QUE NOS PERMITEN IR HACIENDO LOS CAMBIOS DESEADOS COMO DARLE
%NOMBRE A LO LEJOS
%LA FUNCIN plot NOS PERMITE OTRAS OPCIONES COMO GRFICAS SOBRE LOS
MISMOS
%EJES
z=[6 5 3 7 5 2];
plot(x,y,x,z)
%TAMBIN PODEMOS USAR DISTINTOS TIPOS DE LINEAS PARA EL DIBUJO DE LA
%GRFICA
plot(x,y,'*')
%ADEMS`PODEMOS COLOCAR ETIQUETAS O MANIPULAR LA GRFICA
% ETIQUETA SOBRE EL EJE X DE LA GRFICA ACTUAL
% ETIQUETA SOBRE EL EJE Y DE LA GRFICA ACTUAL
% TTULO EN LA CABECERA DE LA GRFICA ACTUAL
% TEXTO EN EL ELUGAR ESPECFICO POR LAS COORDENADAS
% TEXTO, EL LUGAR LO INDICAMOS DESPIS CON EL RATN
% DIBUJAR UNA REJILLA
% FIJA VALORES MXIMO Y MNIMO DE LOS EJES
ymin ymax])
% FIJA QUE LA ESCALA EN LOS EJES SEA IGUAL
% FIJA QUE LA GRFICA SEA UN CUADRO
% DESACTIVA axis equal y axis square
% ABRE UNA VENTANA DE GRFICO
% BORRA LO QUE HAY EN LA VENTANA DE GRFICO
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO DE ETIQUETA')
%text(x,y,'texto')
texto en los puntos
%gtext('texto')
grid
%axis([xmin xmax ymin ymax])
%axis equal
%axis square
%axis normal
%hold on
88
xlabel('texto')
ylabel('texto')
title('texto')
text(x,y,'texto')
gtext(''texto)
grid
axis([xmin xmax
axis
axis
axis
hold
hold
equal
square
normal
on
off
%hold off
%TODAS ESTAS OPERACIONES SE LA PODEMOS DAR DESDE LA PROPIA VENTANA DE LA
%GRFICA UNA VEZ QUE HEMOS ABIERTO LAS OPERACIONES CON EL BOTN INDICANDO
%ANTERIORMENTE.
%OTROS COMANDOS RELACIONADOS CON LA GRFICA SON LOS SIENGUIENTES:
%........................................................................
..
% ORDEN
.
QU HACE?
. IMAGEN
% area
. COLOREA EL REA BAJO LA GRFICA
% bar
. DIAGRAMA DE BARRAS (VERTICALES)
% barh
. DIAGRAMA DE BARRAS (HORIZONTALES)
% hist
. HISTOGRAMA
% pie
. SECTORES
% rose
. HISTOGRAMA SOLAR
% stairs
. GRFICO DE ESCALERA
% stem
. SECUENCIA DE DATOS DISCRETOS
% loglog
. COMO PLOT PERO CON ESCALA LOGARTMICA EN AMBOS EJES
% semilogx . COMO PLOT PERO ESCALA LOGARTMICA EN EL EJE X
% semilogy . COMO PLOT PERO ESCALA LOGARTMICA EN EL EJE Y
%PARA OBTENER UNA INFORMACIN MS SENCILLA
%help<orden>
%UNA VENTANA GRFICA SE PUEDE DIVIDIR EN m PARTICIONES HORIZONTALES Y EN
n
%VERTICALES, DE MODO QUE CADA SUBDIVISIN QUE SE CONVIERTE EN ACTIVA.
x=1:360; y1=sind(x); y2=cosd(x); y3=exp(x); y4=exp(-x);
subplot(2,2,1) , plot(x,y1), title('SENO')
subplot(2,2,2) , plot(x,y2), title('COSENO')
subplot(2,2,3) , plot(x,y3), title('EXPONENCIAL')
subplot(2,2,4) , plot(x,y4), title('-EXPONENCIAL')
subplot(1,1,1) %para regresar al modo normalde la pantalla
%PARA VOLVER AL MODO POR DEFECTO BASTA ESCRIBIR: subplot(1,1,1)
%PARA DIBUJAR POLGONOS PODEMOS USAR LA FUNCIN plot PERO TENIENDO EN QUE
%EL LTIMO PUNTO DE AMBOS VECTORES DEBEN COINCIDIR PARA QUE LA G`RAFICA
%QUEDE CERRADA. PERO SI LO QUE QUEREMOS ES QUE QUEDE COLOREADO TODO EL
%INTERIOR DEL POLGONO DEBEMOS USAR MEJOR LA FUNCIN fill, TIENE TRES
%ARGUMENTOS, LOS DOS VECTORES QUE FORMAN LOS PUNTOS Y UN TERCER ARGUMENTO
%PARA INDICAR EL COLOR.
x=[-2 0 2 0 -2] ; y=[4 8 4 0 4 ];
plot(x,y)
fill(x,y,'r') %COMANDO PARA DAR COLOR A LA GRFICA
%% GRAFICAS 3-D
%GRFICOS DE LNEA
%TAMBIN PODEMOS CREAR GRFICAS EN 3 DIMENSIONES, SE TRATA DE EXTENDER LA
%ORDEN DE plot(2-D) A plot3 (3-D) DONDE EL FORMATO SER IGUAL
x=-720:720 ; y=sind(x) ; z=cosd(x)
plot3(x,y,z)
%PODEMOS HACER GIRAR LA GRFICA USANDO LA BARRA DE HERRAMIENTAS EL BOTN
O
89
%HACERLA MS GRANDE O MS PEQUEA
CON. AL IGUAL QUE OCURRA CON LA
%GRAFICAS EN DOS DIMENSIONES PODEMOS NOMBRAR LOS EJES O HACER
%MODIFICACIONES ENTRANDO EN OPCIONES CON EL BOTN
%SI QUEREMOS REPRESENTAR UN POLGONO EN 3 DIMENSIONES LO HAREMOS CON LA
%FUNCIN fill3 DE FORMA SIMILAR A fill PERO AHORA CON 4 ARGUMENTOS,
SIENDO
%EL CUARTO EL QUE INDICA EL COLOR
x=[-2 0 2 0 -2] ; y=[4 8 4 0 4 ];
z=[3 5 10 5 3]
fill3(x,y,z,'b') %DIBUJA EN 3 D INDICA EL COLOR AZUL
%SUPERFICIE DE MALLA:
%LA ORDEN [X,Y]=meshgrid(x,y) CREA UN A MATRIZ X CUYAS FILAS SON COPIAS
DEL
%VECTOR X Y UNA MATRIZ Y CUYAS COLUMNAS SON COPIAS DEL VECTOR Y. PARA
%GENERAR LA GRFICA DE MALLA SE USA LA ORDEN mesh(X,Y,Z) , mesh ACEPTA UN
%ARGUMENTO OPCIONAL PARA CONTROLAR LOS COLORES. TAMBIN PUEDE TOMAR
MATRIZ
%SIMPLE COMO ARGUMENTO : mesh(Z).
%EJEMPLO
x=-10:0.5:10 ; y=-10:0.5:10; %RANGO PARA GRFICA
[X,Y]=meshgrid(x,y);
% CREA MATRICES PARA HACER LA MALLA
Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2+0.1); %FUNCIN
mesh(X,Y,Z)
%permite graficar en 3d
%HUBIERA DADO IGUAL SI HUBIRAMOS ESCRITO:
[X,Y]=meshgrid(-10:0.5:10);
Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2+0.1);
mesh(X,Y,Z)
%GRFICA DE SUPERFICIE:
%ES SIMILAR A LA GRFICA DE MALLA, PERO AQU SE RELLENAN LOS ESPACIOS
ENTRE
%LNEAS. LAORDEN QUE USAMOS ES surf CON LOS MISMOS ARGUMENTOS QUE PARA
%mesh.
%EJEMPLO
surf(X,Y,Z)
%LAS GRFICA DE CONTORNOS EN 2-D Y 3-D SE GENERA USANDO RESPECTIVAMENTE
%LAS FUNCIONES contour Y contour3.
%EJEMPLOS:
contour(X,Y,Z)
%DIBUJA LAS LNEAS DE CONTORNO
%LA FUNCIN pcolor TRANSFORMA LA ALTURA A UN CONJUNTO DE COLORES
%EJEMPLOO
pcolor(X,Y,Z)
%MANIPULACIN DE GRFICOS:
%FIJA EL NGULO DE VISIN ESPECIFICANDO EL azimut Y LA ELEVACIN
view(az,el)
90
%COLOCA SU VISTA EN UN VECTOR DE COORDENADA CARTESIANA (x,y,z) EN EL
view([x,y,z])
%ESPACIO 3-D
%ALMACENA EN az Y el LOS VALORES DE azimut Y DE LA ELEVACINDE LA VISTA
[az,el]=view
%ACTUAL.
%AADE ETIQUETAS DE ALTURA A LOS GRFICOS DE CONTORNO
clabel(C,h)
%AADE UNA BARRA DE COLOR VERTICAL MOSTRANDO LAS TRANSFORMACIONES:
colorbar
%EJEMPLOS
surf(X,Y,Z)
view(10,70) %NGULO DE VISTA
colorbar %aade la barra de color
a la figura actual
surf(X,Y,Z)
view([10,-12,2])
surf(X,Y,Z)
[az,el]=view
az=-37.5000
el=30
[C,h]=contour(X,Y,Z)
clabel(C,h)
%COMPRESNCIN DE LOS MAPAS DE COLOR
% COLOR
NOMBRE CORTO
% NEGRO
k
% BLANCO
w
% ROJO
r
% VERDE
g
% AZUL
b
% AMARILLO
y
% MAGENTA
m
ROJO/VERDE/AZUL
[0 0 0]
[1 1 1]
[1 0 0]
[0 1 0]
[0 0 1]
[1 1 0]
[1 0 1]
%LA SENTENCIA colormap(M) INSTALADA AL MATRIZ M COMO EL MAPA DE COLOR A
UTILIZAR POR LA FIGURA ACTUAL.
% FUNCIN
% Jet
% HSV
% Hot
% Cool
% spring
% summer
% Autumn
% Winter
% Gray
% Bone
% Copper
91
% Pink
% Lines
%EJEMPLOS:
surf(X,Y,Z)
colormap(summer)
M=[0 0 0; 1 0 0; 0 1 0; 0 0 1; 1 1 0 ];
colormap(M)
%CREAMOS UNA MATRIZ DE COLORES
TAREA 4
clc
%% 1)REALIZAR EJEMPLOS DE APLICACIN DE LOS COMANDOS NO CORRIDOS EN LA
PRIMERA PARTE (AREA,BAR,...)
x=[-2 -1 0 1 2 3] ;y=[4 1 0 1 4 9];
subplot(3,5,1)
plot(x,y)
area(x,y)
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 1')
subplot(3,5,2)
bar(x,y)
%DIAGRAMA DE BARRAS (VERTICALES)
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 2')
subplot(3,5,3)
barh(x,y)
%DIAGRAMA DE BARRAS (HORIZONTALES)
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 3')
subplot(3,5,4)
hist(y)
%HISTOGRAMA
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 4')
subplot(3,5,5)
pie(x,y)
%SECTORES
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 5')
subplot(3,5,6)
rose(x,y) %HISTOGRAMA SOLAR
xlabel('EJE X')
92
ylabel('EJE Y')
title('EJEMPLO 6')
subplot(3,5,7)
stairs(x,y) %GRFICO DE ESCALERA
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 7')
subplot(3,5,8)
stem(x,y)
%SECUENCIA DE DATOS DISCRETOS
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 8')
subplot(3,5,9)
loglog(x,y) %COMO PLOT PERO CON ESCALA LOGARTMICA EN AMBOS EJES
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 9')
subplot(3,5,10)
semilogx(x,y) %COMO PLOT PERO ESCALA LOGARTMICA EN EL EJE X
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 10')
subplot(3,5,11)
semilogy(x,y) %COMO PLOT PERO ESCALA LOGARTMICA EN EL EJE Y
xlabel('EJE X')
ylabel('EJE Y')
title('EJEMPLO 11')
%% 2)REALIZAR EL USO DEL SUBPLOT, CON 10 GAFICAS CON ETIQUETAS, TITULOS,
TEXTOS, COLORES, ...ETC
%% 3) USAR EN UN OBJETO, LA BARRA DE HERRAMIENTAS QUE OFRECE MATLAB PARA
GRFICAS
subplot(3,5,12)
[X,Y]=meshgrid(-10:0.5:10);
Z=X.^3+Y;
surf(X,Y,Z)
colormap(summer)
93
PRCTICA 5: PROGRAMACIN EN MATLAB
clc
%% PRACTICA 5
%% PROGRAMACIN BAJO MATLAB , ESTRUCTURAS, SENTENCIAS Y BUCLES
%% 1)ESTRUCTURA
% ES UNA AGRUPACINDE DATOS DE TIPO DIFERENTE BAJO UN MISMO NOMBRE. A LOS
% DATOS LES LLAMAMOS CAMPOS. NO HACE FALTA DEFINIR PREVIAMENTE EL MODELO
DE
% LA ESTRUCTURA, PODEMOS IR CREANDO LOS DISTINTOS CAMPOS UNO A UNO O BIEN
% CON EL COMANDO struct, DONDE LOS NOMBRES DE LOS CAMPOS SE escriben
ENTRE
% APSTROFES(') SEGUIDOS DEL VALOR QUE SE LE QUIERE ASIGNAR
%EJEMPLOS:
alumno.nombre='EDISON'; %INTRODUCIMOS EL CAMPO NOMBRE EN LA ESTRUCTURA
ALUMNO
alumno.apellido1='PILLAJO'; %INTRODUCIMOS EL CAMPO APELLIDO1 EN LA
ESTRUCTURA ALUMNO
alumno.apellido2='GARCA'; %INTRODUCIOMOS EL CAMPO APELLIDO2 EN LA
ESTRUCTURA ALUMNO
alumno.edad=20; %INTRODUCIOMOS EL CAMPO EDAD EN LA ESTRUCTURA ALUMNO
alumno %ESCRIBE POR PANTALLA LA INFORMACIM ALMACENADA EN LA ESTRUCTURA
alumno=
%% 2)USO struct:
alumno2=struct('nombre','EDISON','apellido1','PILLAJO','apellido2','GARC
A','edad',20)
%alumno2=%otro modo de introducir los campos
%% 3)OPERACIONES CON ESTRUCTURAS
% fieldnames(E)
devuelve el nombre de los campos de la estructura E
% isfield(E,'c') devuelve 1 si c es un campo de la estructura E Y 0 si
no
%lo es
% isstruct(E)
devuelve 1 si E es una estructura y 0 si no lo es
% rmfield(E,'c') elimina el campo c de la estructura E(E ES UNA
ESTRUCTURA Y C ES UN CAMPO)
%EJEMPLOS
fieldnames(alumno) %devuelve los campos de la estructura alumno
isfield(alumno,'nombre')
campo de alumno
isstruct(alumno)
estructura
%devuelve 1 por ser cierto que nombre es un
%devuelve 1 porque es cierto que alumno es una
rmfield(alumno,'edad') %elimina el campo edad de la estructura alumno
%% 4)VECTORES Y MATRICES COMO CELDAS
%UN VECTOR DE CELDAS ES UN VECTOR CUYOS ELEMTOS SON CADA UNO DE ELLOS UNA
94
%VARIABLE DE CUALQUIER TIPO. EN TODO VECTOR SUS ELEMENTOS PUEDE SE
NMEROS
%O CADENAS DE CARACTERES, PERO EN UN VECTOR DE CELDAS EL PRIMER ELEMENTO
%PUEDE SER UN NMERO, EL SEGUNDO UNA MATRIZ, EL TERCERO UNA ESTRUCTURA,
%ECT.
%PARA CREAR UN VECTOR DE CELDAS USAREMOS LLAVES ({}).
celda(1)={[0 1 2]}
; %crearemos un vetor de celdas definiendo celda a
celda
celda(2)={'cadena de caracteres'};
celda(3)={eye(2)};
celda(4)={-7}; %editemos las cuatro celdas
celda
%% 5)CELDA A CELDA DE OTRA FORMA
cel{1}=[0 1 2 3]; %crearemos otro vector de celdas definiendo celda a
celda de forma distinta
cel{2}='cadena de caracteres'
cel{3}=eye(2);
cel{4}=-7;
cel
%% 6)MATRICES CON CELDAS
%FUNCIN QU HACE?
% cell(m,n)
crea una matriz de celdas con m filas y n columnas
% celldisp(c) muestra el contenido de todas las celdas de c
% cellplot(c) muestra la representacion grafica de las celdas de c
% iscell(c)
devuelve 1 si es una matriz de celdas y 0 si no lo es
% num2cell(x) convierte el vector o matriz numrica en celdas
% NOTA:(m y n nmeros naturales , c celdas y x vestror o matriz)
c={[0 1 2],'cadena de carcteres',eye(2),-7}; %OTRA FORMA DE CREAR UN
VECTOR DE CELDAS
% SI QUERESMOS CREAR UNA MATTRIZ O UNA HIPERMATRIZ DE CELDAS SE HARA DE
% FORMA SIMILAR.
cell(2,3)
%crea una matriz de celdas vacas
celldisp(c) %escribe el contenido de las celdas de c
cellplot(c) %representa graficamente cmo son las celdas de c
iscell(c)
%num2cell(x)
A=eye(3,2);
num2cell(A)
%% 7)OPERACIONES RELACIONALES Y LGICAS
%COMO ENTRADAS A LAS EXPRESIONES RELACIONALES Y LGICAS, MATLAB CONSIDERA
%QUE CERO ES FALSO Y QUE CUALQUIER NMERO DISTINTO DE CERO ES VERDADERO.
LA
%SALIDA DE EXPRESIONES DE ESTE TIPO PRODUCE 1 SI ES VERDADERO Y 0 SI ES
%FALSO.
%%OPERADORES RELACIONALES
% OPERADOR QU SIGNIFICA?
% <
% >
95
% >=
% ~= distinto de(ALTGR4 -> )
% OPERADORES LGICOS
% & y
% | o
% - no
% EJEMPLO
x=5;
y=1;
x<y
%COMO MATRIZ
x=1:5;
y=x-4
x<y
%NOTA comparacin falsa para los primeros cuatro, no para el ltimo
% EJEMPLO2: OPERADORES LOGICOS AND,NOT Y OR(&,~,|)
X=[1,2,3,4,5];
Y=[-2,0,2,4,6];
Z=[8,8,8,8,8]
Z>X&Z>Y
X>Y|X>Z
%ADEMAS DE LOS OPERADORESN EXISTE OTRA FUNCIONES
% xor(x,y)
operacin "o" exclusiva, devuelve 0 si ambas son falsas o
% ambas verdaderas y devuelve 1 si una es falsa y la otra verdadera
% any(x)
devuelve 1 si algn elemento en un vector x es no nulo y
% devuelve 0 si son todos nulos, si se trata de una matriz da una
respuesta
% por cada columna
% all(x)
devuelve 1 si todos los elementos en un vector x son no nulos
y
% 0 si existe alguno nulo y si se trata de una matriz da una respuesta
por
% cada columna
% exist('x') devuelve uno si existe y cero si no existe
% isnan(x) devuelve unos en magnitudes no numricas (NaN) en x
% isinf(x) devuelve unos en magnitudes infinitas (Inf) en x
% isfinite(x) devuelve unos en valores finitos en x
%NOTA:
%PODEMOS VER MUCHOS MS CASOS PERO TODOS SERAN SIMILARES:
ischar,isempty,
%isequal, isfloat, isinteger, islogical, isnumeric, isprime, isreal,
%isscalar, isspace,...
%NOTA: EXISTE UN ORDEN DE PRECEDENCIA PARA OPERADORES ARITMTICOS,
LGICOS
%Y RELACIONALES, EN LA SIGUIENTE TABLA VAN DE MAYOR A MENOR PRECEDENCIA:
%ORDEN DE PRECEDENCIA DE OPERADORES
% 1 ^.^'.'
96
% 2 */\.*./.\
% 3 +-~+(unario)-(unario)
% 4 :><>=<===~=
% 5 |&
a=1:9, b=5-a
%definimos dos vectores
r1=a<6 %pregunta si a es menor que 6, devuelve 1 cuando es verdadero y 0
cuando es falso.
r2=a==b %pregunta si a igual a b, devuelve 1 cuando es verdadero y 0
cuando es falso
r4=(a>b)&(b>-3) %pregunta si a>b y b>-3, devuelve 1 cuando es verdadero
y 0 cuando es falso
c=[Inf 0 5 -8 NaN 94];
exist('c') %pregunta si existe alguna variable llamada c
isnan(c) %pregunta cuando c es NaN, devuelve 1 caundo es verdadero y 0
cuando es falso
isinf(c) %pregunta cuando c es Inf, devuelve 1 cuando es verdadero y 0
cuando es falso
isfinite(c) %pregunta cuando caundo c es finito, devuelve 1 caundo es
verdadero y 0 cuando es falso
%% 7)BUCLES
%% SENTENCIA FOR
%UN BLOQUE for EN CADA INTERACIN ASIGNA A LA VARIABALE LA COLUMNA ISIMA
%DE LA EXPRESIN Y EJECUTA LAS RDENES. EN LA PRCTICA LAS EXPRESIONES
%SUELEN SER DEL TIPO ESCALAR EN CUYO CASO LAS COLUMNAS SON ESCALARES.
% for variable=expresin
%
<orden>
%
<orden>
%
......
%
<orden>
% end
%EJEMPLO
for x=1:5
disp('x toma el valor') %escribe por pantalla el texto que se indica
entre las comillas
disp(x)
%escribe el valor de la variable x
end
%% SENTENCIA WHILE
%UN BLOQUE while EJECUTA LAS RDENES MIENTRAS TODOS LSO ELEMENTOS DE LA
%EXPRESIN SEAN VERDADERAS
% while <orden>
%
<orden>
%
<orden>
%
...
%
<orden>
% end
%EJEMPLO
a=3;
while a<5
97
disp('a es menor que 5 ya que vale')
disp(a)
a=a+1;
end
%% SENTENCIA IF
%UN BLOQUE if PUEDE ESCRIBIRSE DE VARIAS MANERAS DISTINTAS. LO QUE HACE
ES
%EEVALUAR UNA EXPRESIN LGICA Y SI ES CIERTA EJECUTA LAS RDENES QUE
%ENCUENTRE ANTES DEL end
% if <expresin>
%
<rdenes evaluadas si la expresin es verdadera>
% end
% PUEDE QUE NOS INTERESE QUE EN CASO DE NO EJECITAR DICHA ORDEN EJECUTE
% OTRA DISTINTA. ESTO SE LO INDICAREMOS USANDO else DENTRO DEL BLOQUE.
% if<expresin>
%
<rdenes evaluadas si la expresin es verdadera>
% else
%
<rdenes evaluadas si la expresin es falsa>
% end
%
% SI QUEREMOS DAR UNA ESTRUCTURA MUCHO MS COMPLETA, USAREMOS LA MS
% GENERAL DONDE SLO SE EVALAN LAS RDENES ASOCIADAS CON LA PRIMERA
% EXPRESIN VERDADERA DE TODAS. EN CUANTO LA EVALE DEJA DE LEER EL RESTO
Y
% SE DIRIGE DIRECTAMENTE AL end
% EJEMPLO:
b=2
if b==0 %ponemos no es una asignacin sino una expresi lgica
disp('b vale 0')
elseif b==1
disp('b vale 1')
elseif b==2
disp('b vale 2')
elseif b==3
disp('b vale 3')
else
disp('b no vale ni 0 ni 1 ni 2 ni 3')
end
%% SENTENCIA BREAK
% SI QUEREMOS QUE EN UN MOMENTO DADO TERMINE LA EJECUCIN DE UN BUCLE for
O
% UN BUCLE while USAREMOS break
%% SENTENCIA CONTINUE
%LA SENTENCIA continue HACE QUE SE PASE INMEDIATAMENTE A LA SIGUIENTE
%ITERACIN DEL BUCLE for O DEL BUCLE while SALTANDO TODAS LAS RDENES QUE
%HAY ENTRE EL continue Y EL FIN DEL BUCLE EN LA ITERACIN ACTUAL
%EJEMPLO
%PODEMOS MEZCLAR EN UN PROGRAMA VARIA SENTENCIAS DE ESTE ESTULO. AQU
%PODEMOS VER UN PROGRAMA QUE ESCRIBE POR PANTALLA LOS PRIMOS DEL 1 AL 100
98
%USANDO LAS SENTENCIAS if, while y for.
disp('ESTOS SON LOS NMEROS PRIMOS MENORES DE 100')
disp(2)
for i=2:100
n=2;
while n<=sqrt(i)
if rem(i,n)==0
n=i;
else n=n+1;
end
end
if n~=i disp(i)
end
end
%% 1)DEDUZCA QUE HACE CADA EJEMPLO?
%EJERCICIO 26
G=0
count=0
if G<50 %analiza si la variable G ES MENOR QUE 50
count=count+1; %empieza a contar
disp(G) %vizualiza la variable G
end
%este programa no tiene mucho sentido porque solo vizualiza el valor de G
%EJERCICIO 27
if x>0 %analiza si la variable x ES MAYOR QUE 0
Y=log(x) %BUSCA EL VALOR DEL LOGARITO DE LA VARIA X
else
beep %sonido
disp('la entrada de la funcin logartmica debe ser positiva')
%visualiza un mensaje
end
%EJERCICIO 28
age=19;
if age<16 %analiza si la variable age ES MENOR QUE 16
disp('lo siento. Tendr que esperar') %visualiza un mensaje
elseif age<18
%analiza si la variable age ES MENOR QUE 18
disp('puede obtener un permiso para conducir') %visualiza un mensaje
elseif age<70
%analiza si la variable age ES MENOR QUE 70
disp('puede obtener una licencia estandar') %visualiza un mensaje
else
disp('los conductores mayores que 70 aos requieren una licencia
especia') %visualiza un mensaje
end
%% 2)HALLAR BAJO SENTENCIAS DE PROGRAMACIN LA SOLUCIN DEL TRIANGULO DE
PASCAL O LA DEL FACTORIAL
n=8;
p=1;
99
for i=1:n;
p=p*i;
end
disp(p) %resultado
%% 3)HACER CORRER EJEMPLOS SOBRE: continue, break, for
% EJEMPLO USO DE continue:
for i=1:5
if rem(i,2)==0 %no me permite imprimir los numeros pares
continue;
end
disp(i);
end
%EJEMPLO USO DE break
m=8;
i=0;
while i<=m
disp(i);
i=i+1;
if i==5
break;
end;
end;
%EJEMPLO USO for
for z=1:4
disp('z toma el valor') %escribe por pantalla el texto que se indica
entre las comillas
disp(z)
%escribe el valor de la variable x
end
100
PRCTICA 6: POLINOMIOS ANLISIS NUMRICOS
clc
%% PRACTICA 6
%%TEMA: POLINOMIOS-ANLISIS NUMRICO
%% ANLISIS DE DATOS
%MATLAB EJECUTA ANLISIS ESTADSTICO SOBRE CONJUNTOS DE DATOS. ESTOS
%CONJUNTOS DE DATOS SE ALMACENAN EN MATRICES ORIENTADAS POR COLUMNAS.
%MATLAB INCLUYE, ENTRE OTRAS, LAS SIGUIENTES FUNCIONES ESTADSTICAS
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
FUNCIN
corrcoef(x)
cov(x)
cumprod(x)
cumsum(x)
diff(x)
hist(x)
iqr(x)
max(x)
mean(x)
median(x)
min(x)
prod(x)
rand(n)
randn(x)
range(x)
sort(x)
std(x)
sum(x)
tabulate(x)
var(x)
QU HACE?
doeficienbtes de correlacin
matriz de covarianza
producto acumulativo de columnas
suma acumulativa de columnas
diferencias entre elementos adyacentes de x
histograma o diagrama de barras
rango intercuartlico de la muestra
mximo de cada columna
media de los valores de vectores y columnas
media de los valores de vectores y columnas
mnimo de cada columna
producto de elementos en columnas
nmeros aleatorios distribuidos uniformemente
nmeros aleatorios distribuidos normalmente
rango de cada columna
ordena columnas en orden ascendente
desviacin estanda r de la muestra
suma de elementos en cada columna
tabla de frecuencias del vector
varianza de la muestra
X=[5 7 9 2 9 ; 3 1 7 5 1 ; 1 5 5 1 8]
n=2;
cumprod(X)
%productos acumulados
cumsum(X)
%suma acumulativa de columnas
mean(X)
%media de cada columna
median(X)
%mediana de cada columna
prod(X)
%producto de todos los elemento de cada columna
sort(X)
%ordena los valores de cada columna
sum(X)
%suma de todos los elementos de cada columna
var(X)
%varianza de los elementos de cada columna
max(X)
%valor mximo de cada columna
min(X)
%valor mnimos de cada columna
iqr(X)
%rango intercutilico de cada columna
Y=[5 7 9 2 9 3 1 7 5 1 3 9 2 7 5 1 5 5 1 8];
tabulate(Y) %tabla de frecuencias generada a partir de una serie de
valores
101
range(X)
mnimo)
%rango de cada columna(diferencia entre el mximo y el
%% POLINOMIOS
%% RACES
%UN POLINOMIO SE REPRESENTA POR UN VECTOR FILA CON SUS COEFICIENTES EN
%ORDEN DESCENDIENTE, NO DEBEMOS OLVIDAR COLOCAR LOS TRMINOS CON
%COEFICIENTE NULO.
%AS POR EJEMPLO SI QUEREMOS INDICAR EL POLINOMIO 5x^4+2x^2-x+7
ESCRIBIMOS
%[5 0 2 -1 7]
%PARA ENCONTRAR LAS RACES DE UN POLINOMIO p USAREMOS LA FUNCIN
roots(p).
%SI CONOCEMOS LAS RAICES DE UNA POLINOMIO ES POSIBLE CONSTRUIR EL
POLINOMIO
%ASOCIADO MEDAINTE LA FUNCIN poly(r).
%MATLAB TRABAJA CON LOS POLINOMIOS COMO VECTORES FILA Y CON LAS RACES
COMO
%VECTORES COLUMNAS.
%EJEMPLOS
p=[1 -9 13 9 -14] %representa al polinomio x^4-9x^3-9x-14
roots(p)
%calcula las raices
poly(ans)
%devuelve el polinomio generado por esas cuatro raices
%% OTRAS CARACTERSTICAS
%
FUNCIN
QU ES?
% conv(p,q)
multiplica los dos polinomios p y q
% deconv(c,q) divide el polinomio c entre q
% polyder(p)
calcula la derivada del polinomio p
% polyder(p,q) calcula la derivada del producto de los polinomios p y q
% polyval(p,A) evalun el polinomio p en todos los valores de la matriz A
% MATLAB NO TIENE INCORPORADA UNA FUNCIN PARA SUMAR POLINOMIOS
%EJEMPLO:
p=[1 2 7]
q=[1 3 6]
%polinomios
c=conv(p,q)
%producto de los polinomios p y q
deconv(c,q)
%conciente de dividir el polinomio c entre el polinomio q
polyder(p)
%derivada del polinomio p
polyder(p,q)
%derivada del producto de los polinomios p y q
polyval(p,[0 1 5])
%evala el polinomio en 0,1 y 5, es decir, halla
p(0),p(1) y p(5)
polyval(p,[0 1 2;-1 -2 -3;4 0 7])
%igual pero toma los valores de una
matriz
%% 3)ANLISIS NMRICO
%% REPRESENTACIN GRFICA
%EXISTE LA FUNCIN fplot QUE EVALA LA FUNCIN QUE SE DESEA REPRESENTAR
EN
%LA GRFICA DE SALIDA. COMO ENTRADA, NECESITA CONOCER EL NOMBRE DE LA
%FUNCIN COMO UNA CADESNA DE CARACTERES Y EL RANGO DE REPRESENTACIN COMO
102
%UN VECTOR DE DOS ELEMENTOS: fplot('nombre',[valor min, valor max]).
%EJEMPLO
fplot('sin',[-3*pi,3*pi])
%grafica funciones
title('FUNCIN SENO')
xlabel('EJE x')
ylabel('EJE y')
%% OTRAS CARCTERISTICAS
% FUNCIN
QU HACE?
% diff('f')
derivada de la funcin respecto a x
% diff('f',t)
derivada parcial de la funcin respecto a t
% diff('f',n)
derivada n-sima de la funcion respecto a x
% feval('f',a) evala la funcin en a
% fminbnd('f',a,b) calcula el mnimo de la funcin de una variable
% fzero('f',a) busca el cero de una funcin unidimensional f ms prsimo
al punto a
% quad('f',a,b) aproxima la integral definida(segn la cuadratura de
Simpson)
% trapz(x,y)
integral numrica trapezoidal de la funcin formada al
% emparejar los puntos de los vectores x e y
%(f funcin, n nmero natural, a y b valores numricos, x e y vectores
del mismo tamao)
% MATLAB INCORPORA UNA SERIE DE FUNCIONES PARA RESOLVER ECUACIONES
% DIFERENCIALES ORDINARIAS. SI SE TRATA DE UN PROBLEMA RIGIDO DEBERIAMOS
% USAR: ode15s, ode23s, ode23t u ode23tb, SIPOR EL CONTRARIO SE TRATA DE
% UNA PROBELMA SIN RIGIDEZ: ode113, ode 23 y ode45. PARA SABER MS DE
ESTAS
% FUNCIONES CONSULTAR LA AYUDA DE MATLAB.
%EJEMPLO:
%diff('sin(7*x)')
%derivada respecto a x
%diff('(exp(x)*cos(3*x*y))',y) %derivada parcial respecto a y
syms x
f(x)=sin(x^2);
df=diff(f)
syms x
f(x)=sin(7*x);
df=diff(f)
syms x
f(x)=cos(x^2)+2*x^3;
df=diff(f)
syms x
f(x)=cos(x^2)+sin(x+7*x^2);
df=diff(f)
%EL COMANDO diff TIENE LA DISTINTOS PARMETROS POR EJEMPLOS: diff(S) o
%diff(S,var).
103
%S PUEDE SE UNA EXPRESIN
SIMBLICA COMPLETA O EL NOMBRE DE UNA EXPRESIN
%SIMBLICA EXISTENTE.
%EN EL COMANDO diss(S), si la expresin contiene una sola variable
%simblica, el clculo se llevar a cabo con respecto a esa variable. SI
LA
%EXPRESIN MS DE UN VARIABLE, EL CLCULO SE LLEVARA A CABO CON RESPECTO
A
%LA VARIABLE SIMBLICA POR DEFECTO.
%EL COMANDO diff(S,var) SE UTILIZA PARA CALCULAR LA DERIVADA DE UNA
EXPRESIN
%CON MS DE UNA VARIABLE SIMBLICA.
%LAS SEGUNDA DERIVADA (Y OTRAS DE MAYOR ORDE) SE PUEDEN CALCULAR MEDIANTE
%LA SINTAXIS diff(S,n) O diff(S,var,n), DONDE n ES UN NMERO POSITIVO.
%ES POSIBLE UTILIZAR TAMBIN EL COMANDO diff INTRODUCIENDO LA ECUACIN
QUE
%SE VA A DERIVAR EN FORMA DE CADENA, AUNQUE SE RECUERDA, AL IGUAL QUE EN
%LOS COMANDOS VISTOS ANTERIORMENTE, QUE LAS VARIABLES SIMBLICAS
CONTENIDA
%EN LA CADENA SE UTILIZAN SLO PARA EL CLCULO, Y NO PODRN SER
UTILIZADAS
%POSTERIORMENTE COMO VARIABLES SIMBOLICAS INDEPENDIENTES.
%NOTE QUE, AUNQUE EL RESULTADO DE LA DERIVADA DE LA DERIVACIN PAREZCA
SER
%UN NPUMERO, ES UNA VARIABLE SIMBLICA . CON LA FINALIDAD DE USARLA EN UN
%CLCULO MATLAB, NECESITARA CONVERTIRLA A UN NPMERO PUNTO FLOTANTE DE
%PRECISIN DOBLE.
syms x;f=sin(5*x);
diff(f)
g=exp(x)*cos(x);
diff(g)
diff(g,2)
diff(diff(g))
%% INTEGRACIN O CLCULO DE PRIMITIVAS
%EL CLCULO DE PRIMITIVAS CON Matlab ES MUY SENCILLO. L INTEGRACIN
%SIMBLICA SE LLEVA UTILIZANDO EL COMANDO int, EMPLEANDO LA SINTAXIS
%int(S) o int(S,var) donde:
%-S puede ser una expresin simblica o el nombre de una expresin
%simblica.
%-EN EL COMANDO int(S), SI LA EXPRESION COONTIENE UNA PUNICA VARIABLE
%SIMBLICA, EL CLCULO SE LLEVAR A CABO CON RESPECTO A ESA VARIABLE. SI
LA
%EXPRESIN CONTIENE MS DE UNA VARIABLE, LA INTEGRACIN SE REALIZAR
%RESPECTO A LA VARIABL SIMBLICA POR DEFECTO (x):
%-EN EL COMANDO int(S,var), LA INTEGRACIN SE REALIZAR CON RESPECTO A LA
%VARIABLE var. ESTA SINTAXIS SE UTILIZA PARA INTEGRAR EXPRESIONES CON MS
%DE UNA VARIABLE SIMBLICA.
%DEL MISMO MODO QUE LA DERIVACIN, LA INTEGRACIN SE PUEDE EXTENDER A
%VECTORES Y MATRICES
%EJEMPLO: CALCULA S(2cos(x)-6x)dx
104
syms x;
S=2*cos(x)-6*x;
int(S)
%MATLAB NO INCLUYE LA CONSTANTE DE INTEGRACIN QUE SE DEBE EN CUANETA EN
EL
%CLCULO DE PRIMITIVAS.
syms x;
S=2*x^2*cos(x);
int(S);
%NOTA. SI x NO EST DEFINIDA COMO UNA VARIABLE SIMBLICA, UTILIZAREMOS LA
%SIGUIENTE SINTAXIS:
% int('S'.'x') %SIN CONTAR LAS COMILLAS
%EN EL CASO DEL EJEMPLO ANTERIOR, TENDRAMOS LO SIGUIENTE
int(2*cos(x)-6*x)
int(2*cos(x)-6*x,x)
%EJEMPLO
syms x;
A=(x+1)/((x^2+1)*(x^2+4));
int(A)
int((x+1)/((x^2+1)*(x^2+4)))
%% TRABAJO PRCTICO
% 1) HACER LAS 3 INTEGRALES Y 3 DERIVADAS
% INTEGRACIN
int(exp(4*x)) %EJERCICIO 1
int(x^5*log(x)) %EJERCICIO 2
int(cos(sin(x))) %EJERCICIO 3
%DERIVACIN
diff(exp(4*x)/4)
diff((x^6*(log(x) - 1/6))/6)
diff(int(cos(sin(x)), x))
% 2) PASAR PROBLEMA "MODELO MATEMTICO"
%PROBLEMA: UN EMPRESARIO DESEA PRODUCI RECIPIENTES CILNDRICOS DE
ALUMINIO
%DE UN LITRO DE CAPACIDAD. CADA RECIPIENTE DEBE TENER UN BORDE DE 0.5 cm.
%ADICIONALES PARA SELLARLO. DETERMINE LAS DIMENCIONES DEL RECIPIENBTE
PARA
%QUE LA CANTIDAD DE MATERIAL UTILIZADO EN LA FABRICACIN SE MNIMA
105
% 3) HACER CORRER LAS FUNCIONES DE DERIVADAS
d=cos(x^2)+sin(x+7*x^2); %FUNCIN
j=@cos
diff(d)
%derivada de la funcin respecto a x
diff(d,x)
%derivada parcial de la funcin respecto a t
diff(d,2)
%derivada n-sima de la funcion respecto a x
feval(j,1)
%evala la funcin en a
fminbnd(j,1,2) %calcula el mnimo de la funcin de una variable
fzero(j,2)
%busca el cero de una funcin unidimensional f ms prsimo
al punto a
quad(j,1,2)
%aproxima la integral definida(segn la cuadratura de
Simpson)
x=[1 2 3];
y=[4 5 6];
trapz(x,y)
%integral numrica trapezoidal de la funcin formada al
% emparejar los puntos de los vectores x e y
TAREA 6
clc
%% TRABAJO PRCTICO
% 1) HACER LAS 3 INTEGRALES Y 3 DERIVADAS
% INTEGRACIN
syms x
int(exp(4*x)) %EJERCICIO 1
int(x^5*log(x)) %EJERCICIO 2
int(cos(sin(x))) %EJERCICIO 3
%DERIVACIN
diff(exp(4*x)/4)
%EJERCICO 1
diff((x^6*(log(x) - 1/6))/6) %EJERCICIO 2
diff(int(cos(sin(x)), x))
%EJERCICIO 3
% 2) PASAR PROBLEMA "MODELO MATEMTICO"
%PROBLEMA: UN EMPRESARIO DESEA PRODUCI RECIPIENTES CILNDRICOS DE
ALUMINIO
%DE UN LITRO DE CAPACIDAD. CADA RECIPIENTE DEBE TENER UN BORDE DE 0.5 cm.
%ADICIONALES PARA SELLARLO. DETERMINE LAS DIMENCIONES DEL RECIPIENBTE
PARA
%QUE LA CANTIDAD DE MATERIAL UTILIZADO EN LA FABRICACIN SE MNIMA
%REA TOTAL
s=2*pi(x+0.5)^2+(2*py+0.5)h cm^2
(1)
%dato del volumen requerido: v=pi*x^2*h=1000 cm^3
(2)
%DE(2) OBETENEMOS h:
%
h=1000/(pi*x^2)
%SUSTITUIMOS EN (1)
% s(x)=2*pi*(x+0.5)^2+(1000*(2*pi*x+0.5)/pi*x^2)
%SE OBTIENE UNA FUNCINPARA LA QUE DEBE DETERMINARSE EL VALOR DE LA
%VARIABLE x QUE MINIMICE s
%EL CLCULO DIFERENCIAL NOS PROPORCIONA UN PROCEDIMIENTO PARA OBTENER LA
106
%RESPUESTA. SE DEBE RESOLVER LA
ECUACIN s'(x)=0. ESTE ES EL MODELO MATE
%MTICO DEL CUAL SE OBTENDR LA SOLUCIN
%ALGORITMO
% 1)DADO EL MODELO MATEMTICO s(x)
% 2)OBTENER s'(x)
% 3) resolver la ecuacin s'(x)=0
%elejir y validar la respuesta
s='2*pi*(x+0.5)^2+1000*(2*pi*x+0.5)/(pi*x^2)'
ezplot(s,[0,20]), grid on
%PARA OBTENER LA DERIVADA DE s(x)
d=diff(s)
%RESOLVER ECUACIN s'(x)=0
%x=eval(solve(d))
% 3) HACER CORRER LAS FUNCIONES DE DERIVADAS
d=cos(x^2)+sin(x+7*x^2); %FUNCIN
j=@cos
diff(d)
%derivada de la funcin respecto a x
diff(d,x)
%derivada parcial de la funcin respecto a t
diff(d,2)
%derivada n-sima de la funcion respecto a x
feval(j,1)
%evala la funcin en a
fminbnd(j,1,2) %calcula el mnimo de la funcin de una variable
fzero(j,2)
%busca el cero de una funcin unidimensional f ms prsimo
al punto a
quad(j,1,2)
%aproxima la integral definida(segn la cuadratura de
Simpson)
x=[1 2 3];
y=[4 5 6];
trapz(x,y)
%integral numrica trapezoidal de la funcin formada al
% emparejar los puntos de los vectores x e y
107
PRCTICA 7: OPTIMIZACIN
clc
%% PRCTICA 7
%TEMA: ANLISIS NUMRICO BSICO
%
%PEQUEOS EJEMPLOS VARIADOS
% 1)CLCULOS SENCILLOS
23.45+1.67*sqrt(32.74)/(1+exp(-2))
% 2)CCULO DE REA Y VOLUMEN DE LA ESFERA
r=17.4; area=4*pi*r^2
volumen=4/3*pi*r^3
% 3)HACER UNA PEQUEA TABLA Y PLOTEAR LA CURVA
x=0:6 , y=sin(pi*x/6), plot(x,y)
% 4)DIBUJAR DOS PARBOLAS
figure(1)
x=-10:10; y=x.*x-100;
f1=0.2*y; f2=0.5*y;
plot(x,f1,x,f2), title('DOS PARBOLAS')
% 5)ESCRIBIR VECTORES USANDO OPERACIONES ELEMENTO A ELEMENTO
figure(2)
x=[0.1 0.6 log(3) sqrt(2) 3*pi/4]
f=7*x.*exp(-x)
g=x.^2+f./x
plot(x,f,'o',x,f,x,g)
resultado=[x' f' g']
%Tabula el resultado en tres columnas
% 6)UNA ESPIRAL DADA EN FORMA PARAMTRICA
t=0:0.2:30; x=t.*cos(t); z=t.*sin(t);
plot(x,z); title('ESPIRAL')
% 7)OTRAS FUNCIONES MATLAB TILES
figure(3)
y=rand(1,7),plot(1:7,y,'x')
%7 valores al azar entre 0 y 1
ymax=max(y)
%maximo de las componentes de y
s=sum(y)
%Suma de componentes
y=round(100*y)
%ahora y es un vetor de enteros
%entre 0 y 100
z=sort(y)
%ordena el vector en forma creciente
zz=fliplr(z)
%da vuelta el vector (flipud lo da
%vuelta en vertical)
% 8)ESTRELLA : SE PLOTEAN 100 ESTRELLAS Y 400 PUNTOS AL AZAR
figure(4)
xs=rand(1,100); ys=rand(1,100);
xd=rand(1,400); yd=rand(1,400);
plot(xs,ys,'*',xd,yd,'.'); title('ESTRELLAS EN EL CIELO')
clear
%vacia todas las variables
108
% 9)CIRCULO : DIBUJAR UN CIRCULO
figure(5)
%centro y radio
xc=3; yc=-3; r=6.5;
n=50; k=0:n; fi=2*pi*k/n;
x=xc+r*cos(fi); y=yc+r*sin(fi);
plot(xc,yc,'x',x,y);
axis([-5 10 -10 6]), axis equal;
grid
%2 APLICACIONES ADICIONALES
% 10)clear
fprintf('\n1ra FORMA DE DIBUJAR UN TRIANGULO EN MATLAB POR
COORDENADAS\n');
A=[1,2];
B=[3,8];
C=[7,1];
figure(6)
figure(gcf);
x=[A(1) B(1) C(1) A(1)];
y=[A(2) B(2) C(2) A(2)];
plot(x,y)
% 11)estrella de 5 puntas:
figure(7)
n = 5;
R = 1;
tita = [0:(4*pi/n):4*pi]+pi/2;
x = R*cos(tita);
y = R*sin(tita);
plot(x,y)
%% OPTIMIZACIN DE MXIMOS Y MNIMOS (EXTREMOS)
%% OBJETIVOS
% ANALIZAR LOS EXTREMOS RELATIVOS Y ABSOLUTOS DE UNA FUNCIN DE DOS
% VARIABLES EN UN DOMINIO CERRADO Y ACOTADO.
%% COMANDO DE MATLAB
%TODOS LOS COMANDOS QUE SE UTILIZAN EN ESTA PRCTICA SE HAN VISTO EN
%PRCTICAS ANTERIORES
% EJEMPLOS RESUELTOS:
%% EJEMPLI 1 : CLCULO DE LOS PUN TOS CRTICOS
% DADA LA FUNCIN f(x,y)=x^3+y^3-3*x-12*y+25
%(a) REPRESENTAR LA FUNCIN
%(b) CALCULAR LOS PUNTOS CRTICOS
%(c) CALCULAR LOS EXTREMOS RELATIVOS DE f . ALCANZA ESTA FUNCIN UN
MXIMO
% O UN MNIMO ABSOLUTO?
%SOLUCIN
%(a) CDIGO MATLAB
109
[X,Y]=meshgrid(-3:0.2:3);
Z=X.^3+Y.^3-3*X-12*Y+25;
figure(8)
surf(X,Y,Z)
figure(9)
contour(X,Y,Z,25)
%(b) CDIGO MATLAB
syms x y
f=x^3+y^3-3*x-12*y+25;
fx=diff(f,x);
fy=diff(f,y);
disp('PUNTOS CRTICOS')
[a,b]=solve(fx,fy);
puntos=double([a b])
%(c) CDIGO MATLAB
fxx=diff(fx,x);
fxy=diff(fx,y);
fyy=diff(fy,y);
H=fxx*fyy-fxy^2;
valor_hessiano=subs(H,{x,y},{a,b})
valor_fxx=subs(fxx,{x,y},{a,b})
%% EJEMPLI 2:
% DADA LA FUNCIN f(x,y)=x^2*y+y^2-4xy+2*y+10 EN EL DOMINIO D DADO POR EL
% TRINGULO T DE VRTICES A(2,0),B(4,2) Y C(0,2), SE PIDE:
% (a)REPRESENTAR LA SUPERFICIE EN UN RECTNGULO QUE CONTENGA AL TRINGULO
T
% (b)CALCULAR LOS EXTREMOS DE f Y DETERMINAR CULES DE ELLOS SE
ENCUENTRAN
% EN EL INTERIOR DE T.
% REPRESENTAR EN EL DOMINIO EL SEGMENTO QUE UNE LOS PUNTOS A Y B Y SU
% IMAGEN POR f . CUL ES EL VALOR MXIMO Y MNIMO QUE TOMA LA FUNCIN
% SOBRE ESTE SEGMENTO?
% (d)REPRESENTAR EN EL DOMINIO EL SEGMENTO QUE UNE LOS PUNTOS B Y C Y SU
% IMAGEN POR f. CUL ES EL VALOR MXIMON Y MNIMO QUE TOMA LA FUNCIN
% SOBRE ESTE SEGMENTO?
% (e)REPRESENTAR EN EL DOMINIO EL SEGMENTO QUE UNE LOS PUNTOS C Y A Y SU
% IMAGEN POR f. CUL ES EL VALOR MXIMO Y MNIMO QUE TOMA LA FUNCIN
SOBRE
% ESTE SEGMENTO?
% (f)CUL ES EL VALOR MXIMO Y MNIMO QUE TOMA LA FUNCIN f SI SE
% CONSIDERA COMO DOMINIO EL TRINGULO T?
%NOTA: ESTE EJERCICIO ES EL PROPUESTO NMERO 17 DE LA HOJA DE PROBLEMAS .
%SOLUCIN
% (a)CDIGO MATLAB
figure(10)
[X,Y]=meshgrid(0:.25:4,0:0.25:3);
110
Z=(X.^2).*Y+Y.^2-4*X.*Y+2*Y+10;
h1=surf(X,Y,Z);
%DIBUJAMOS LA SUPERFICIE EN COLOR
MAGENTA, CON TRANSPARENCIA 0.5 Y COLOR DE
%LA RETCULA EN BLANCO
set(h1,'FaceColor','magenta','FaceAlpha',0.5,'EdgeColor','w')
%ETIQUETAMOS LOS EJES
xlabel('EJE x')
ylabel('EJE y')
zlabel('EJE z')
title('GRFICA DE f(x,y)=x^2*y+y^2-4xy+2*y+10')
view(22,22)
hold on
pX=[2 4 0 2];
pY=[0 2 2 0];
pZ=[0 0 0 0];
line(pX,pY,pZ,'linewidth',2,'color','blue')
% (b)CDIGO MATLAB
syms x y
funcion=x^2*y+y^2-4*x*y+2*y+10;
fx=diff(f,x)
fy=diff(f,y)
[a,b]=solve(fx,fy);
Puntos=double([a b])
fxx=diff(fx,x);
fxy=diff(fx,y);
fyy=diff(fy,y);
H=fxx*fyy-fxy^2;
valor_hessiano=subs(H,{x,y},{a,b})
valor_fxx=subs(fxx,{x,y},{a,b})
% (c)CDIGO MATLAB
%PARAMETRIZAMOS EL SEGMENTO que pasa por (2,0,0) y (4,2,0)
t=linspace(0,1);
X1=2+t*2;
Y1=0+t*2;
Z1=0*t;
%LA DIBUJAMOS CON GROSOR 2 Y COLOR AZUL
Z1=(X1.^2).*Y1+Y1.^2-4*X1.*Y1+2*Y1+10;
line(X1,Y1,Z1,'linewidth',2,'color','blue')
%CALCULAMOS LOS EXTREMOS DE f SOBRE ESTE SEGMENTO
syms u
f_sobre_AB=subs(funcion,{x,y},{2+u*2,2*u});
der1=diff(f_sobre_AB);
puntos=solve(der1);
puntos_AB=double(puntos)
valorf_puntosCriticosAB=double(subs(f_sobre_AB,u,[0 puntos(2) 1]))
% (d)CDIGO MATLAB
%PARAMETRIZAMOS EL SEGMENTO QUE PASA POR (4,2,0 ) Y (0,2,0)
111
t=linspace(0,1);
X1=4-t*4;
Y1=2+t*0;
Z1=0*t;
%LA DIBUJAMOS CON GROSOR 2 Y COLOR AZUL
Z1=(X1.^2).*Y1+Y1.^2-4*X1.*Y1+2*Y1+10;
line(X1,Y1,Z1,'linewidth',2,'color','yellow')
%CALCULAMOS LOS EXTREMOS DE fSOBRE ESTE SEGMENTO
f_sobre_BC=subs(funcion,{x,y},{4-4*u,2});
der1=diff(f_sobre_BC);
puntos=solve(der1);
puntos_BC=double(puntos)
valorf_puntosCriticosBC=double(subs(f_sobre_BC,u,[0 puntos(1) 1]))
% (e) CDIGO MATLAB
%PARAMETRIZAMOS EL SEGMENTO QUE PASA POR (0,2,0) Y (2,0,0)
t=linspace(0,1);
X1=0+t*2;
Y1=2-t*2;
Z1=0*t;
%LA DIBUJAMOS CON GROSOR 2 Y COLOR AZUL
Z1=(X1.^2).*Y1+Y1.^2-4*X1.*Y1+2*Y1+10;
line(X1,Y1,Z1,'linewidth',2,'color','cyan')
%CALCULAMOS LOS EXTREMOS DE fSOBRE ESTE SEGMENTO
f_sobre_CA=subs(funcion,{x,y},{2*u,2-u*2});
der1=diff(f_sobre_CA);
puntos=solve(der1);
puntos_CA=double(puntos)
valorf_puntosCriticosBC=double(subs(f_sobre_BC,u,[0 puntos(2) 1]))
%% 3)MTODOS ITERATIVOS
%LOS MTODOS ITERATIVOS SON PROCEDIMIENTOS PARA ACERCARSE A LA RESPUESTA
%MEDIANTE APROXIMACIONES SUCESIVAS. ESTOS MTODOS INCLUYEN FRMULAS QUE
%TIENEN LA PROPIEDAD DE PRODUCIR UN RESULTADO MS CERCANO A LA RESPUESTA
A
%PARTIR DE UN VALOR ESTIMADO INICIAL. EL RESULTADO OBTENIDP SE PUEDE USAR
%NIEVAMENTE COMO VALOR ANTERIOR PARA CONTINUAR MEJORANDO LA RESPUESTA:
%SE DEBEN CONSIDERAR ALGUNOS ASPECTOS TALES COMO LA ELECCIN DEL VALOR
%INICIAL, LA PROPIEDAD DE CONVERGENCIA DE LA FRMULA Y EL CRITERIO PARA
%TERMINAR LAS ITERACIONBES.
%ESTOS MTODOS SON AUTO-CORRECTIVOS. LA PRECISIN DE LA RESPUESTA EST
DADA
%POR LA DISTANCIA ENTRE EL LTIMO VALOR CALCULADO Y LA RESPUESTA
ESPERADA.
%ESTO CONSTITUYE EL ERROR DE TRUNCAMIENTO.
%EL SIGUIENTE GRFICO DESCRIBE A ESTRUCTURA DE UN MTODO ITERATIVO.
% VALOR ANTERIOR --> FRMULA ITERATIVA --> VALOR MEJORADO
%
^
^
%
|-----------------------------------------|
%
ITERACIN
112
%CADA CICLO SE DENOMIDA
ITERACIN. SI LA FRMULA CONVERGE
EN CADA
%INTERACIN LA RESPUESTA ESTAR MS SERCA DEL RESULTADO BUSCADO. AUNQUE
EN
%GENERAL NO ES POSIBLE LLEGAR ALA RESPUESTA EXACTA, SE PUEDE ACERCAR A
ELLA
%TANTO COMO LO PERMITA LA ARITMTICA COMPUTACIONAL DEL DISPOSITIVO DE
%CLCULO.
%% EJEMPLO. INSTRUMENTAR UN MTODO ITERATIVO PARA CALCULAR LA RAZ
CUADRADA
%% r DE UN NMERO REAL POSITIVO n MEDIANTE OPERACIONES ARITMTICAS
BSICA.
%MTODO NUMRICO
%SE USAR UNA FRMULA QUE RECIBE UN VALOR ESTIMADO PARA LA RAZ CUADRADA
Y
%PRODUCE UN VALOR MS CERCANO A LA RESPUESTA. SI SE USA REPETIDAMENTE LA
%FRMULA CADA RESULTADO TENDR A UN VALOR FINAL QUE SUPONEMOS ES LA
%RESPUEST BUSCADA. LA OBTENCIN DE ESTAS FRMULAS SE REALIZAR
%POSTERIORMENTE.
%SEA
x:VALOR ESTIMADO PARA LA RAZ r
%
frmula iterativa: y=1/2*(x+n/x)
%ALGORITMO
% 1)DADOS n Y LA PRECISIN REQUERIDA E
% 2)ELEGIR EL VALOR INICIAL x
% 3)REPETIR
% 4)CALCULAR y=1/2*(x+n/x)
% 5)ASIGNAR x A y
% 6)FINALIZAR SI |x-y| ES MENOR QUE E
% 7)EL LTIMO VALOR x SER UN VALOR APROXIMADO PARA LA RAZ r CON
% PRECISIN E
%
%% EJEMPLO: CALCULAR r=sqrt(7) CON LA FRMULA ITERATIVA INICIAL
%USAR x=3 COMO VALOR INICIAL
%CLCULOS EN MATLAB
format long
n=7;
x=3;
y=0.5*(x+n/x)
x=y;
y=0.5*(x+n/x)
x=y;
y=0.5*(x+n/x)
x=y;
y=0.5*(x+n/x)
TAREA 7
clc
%% 1) HACER EJERCICIOS 10 Y11
% 10)clear
subplot(1,5,1)
113
fprintf('\n1ra FORMA DE DIBUJAR
UN TRIANGULO EN MATLAB POR COORDENADAS\n');
A=[1,2];
B=[3,8];
C=[7,1];
x=[A(1) B(1) C(1) A(1)];
y=[A(2) B(2) C(2) A(2)];
plot(x,y)
% 11)estrella de 5 puntas:
subplot(1,5,2)
n = 5;
R = 1;
tita = [0:(4*pi/n):4*pi]+pi/2;
x = R*cos(tita);
y = R*sin(tita);
plot(x,y)
%% 2)EXTRAEMOS CON UNA SOLA VARIABLE
%% CLCULO DE LOS PUNTOS CRTICOS
%SOLUCIN
%(a) CDIGO MATLAB
[X]=meshgrid(-3:0.2:3);
Z=X.^3-3*X+25;
subplot(1,5,3)
surf(X,Z)
subplot(1,5,4)
contour(Z,12)
%(b) CDIGO MATLAB
syms x
f=x^3-3*x+25;
fx=diff(f,x);
disp('PUNTOS CRTICOS')
[a]=solve(fx);
%(c) CDIGO MATLAB
fxx=diff(fx,x);
H=fxx;
valor_hessiano=subs(H,{x},{a})
valor_fxx=subs(fxx,{x},{a})
%% 3)
%MTODO DE LA BISECCIN
%Metodo de Biseccion - Metodos Numericos Matlab
disp('MTODO DE LA BISECCIN')
114
Fx=input('Ingrese la funcion:
','s');
a=input('Ingrese a : ');
c=input('Ingrese c : ');
e=input('Ingrese el error : ');
x=a;
Fa=eval(Fx);
x=c;
Fc=eval(Fx);
fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n
','A','B','C','F(a)','F(b)','F(c)','|c-a|');
while abs(c-a)>e
b=(a+c)/2;
x=b;
Fb=eval(Fx);
fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f
\n',a,b,c,Fa,Fb,Fc,abs(c-a));
if Fa*Fb<=0
c=b;
Fc=Fb;
else
a=b;
Fa=Fb;
end
end
subplot(1,5,5)
fprintf('\nEl resultado sera %.4f\n',b);
ezplot(Fx);%graficamos la funcion
grid on;
115