POLITECNICA
SALESIANA
SEMINARIO DE MATLAB
BASICO
Mgtr. XAVIER
ESPINOZA
ESTEBAN HERRERA
18 DE SEPTIEMBRE
DEL 2015
PRATICA #1
clc; close all; clear all;
%% TRABAJO FINAL DE SEMINARIO DE MATLAB BASICO
% TEMA 1: OPERACIONES MATEMATICAS COMUMES
disp('OPERACIONES MATEMATICA COMUNES')
a=9.203;b=2.908;c=3.981;
a+b
c/a
b^c
%% TEMA 4: TIEMPO
disp('TIEMPO')
clock
calendar
date
csch(170)
disp('Funcione cotangente hiperbolica')
coth(180)
disp('Funcion inversa seno')
asin(3*pi)
disp('Funcion inversa coseno')
acos(pi/4)
disp('Funcion inversa tangente')
atan(pi/9)
disp('Funcion inversa secante')
asec(2*pi)
disp('Funcion inversa cosecante')
acsc(pi/7)
disp('Funcion inversa cotangente')
acot(pi/3)
disp('Funcion inversa seno hiperbolica')
asinh(89.096)
disp('Funcione inversa coseno hiperbolica')
acosh(178)
disp('Funcione inversa tangente hiperbolica')
atanh(360)
disp('Funcione inversa secante hiperbolica')
asech(182.90)
disp('Funcione inversa cosecante hiperbolica')
acsch(89.161)
disp('Funcione inversa cotangente hiperbolica')
acoth(90.78)
exp(2.^6)
disp('gcd')
gcd(90,790)
disp('lcm')
lcm(80,624)
disp('log')
log(3.78)
disp('log2')
log2(3.65)
disp('log10')
log10(9.781)
disp('mod')
mod(10,678)
disp('rem')
rem(34,189)
disp('sqrt')
sqrt(2.^67-90+981)
PRACTICA #2
%% NUMEROS, VECTORES Y MATRICES
% TEMA 1: COMO DEFINIR
disp('COMO DEFINIR')
w=[4 91 75 64 5]
x=[2 78 91 81 9]
y=[1 52 78;23 76 43]
z=[5 90;67 12; 43 89]
disp('Crea un vector
(3:27)
disp('Crea un vector
(1:4:28)
disp('Crea un vector
linspace(1,5,2)
disp('Crea un vector
linspace(2,6)
disp('Crea un vector
logspace(1,3,5)
disp('Crea un vector
logspace(1,4)
disp('ones de nxm')
ones(5,2)
disp('rand de nxn')
rand(6)
disp('rand de nxm')
rand(2,6)
disp('randn de nxn')
randn(4)
disp('randn de nxm')
rand(3,2)
disp('eye de nxn')
eye(7)
disp('eye de nxm')
eye(1,4)
disp('magic de nxn')
magic(2)
disp('hilb de nxn de Hilbert')
hilb(5)
disp('invhilb de nxn inversa de Hlbert')
invhilb(5)
PRACTICA #3
%% TEMA 1: FUNCIONES PARA OPERAR VECTORES
disp('FUNCIONES PARA EL ANALISIS DE MATRICES')
x=[6 5 1]; y=[2 4 9];
disp('Producto vectorial')
cross(x,y)
disp('Producto escalar')
dot(x,y)
fliplr(A)
disp('Intercambia la matric de arriba a abajo: flipud')
flipud(A)
disp('Devuelve una matriz mxn; reshape')
reshape(A,1,4)
disp('Gira la matriz 90 grados antihorario: rot90')
rot90(A)
disp('Gira la matriz nx90 grados: rot90')
rot90(A,3)
disp('Matriz exponencial: expm')
expm(A)
disp('Matriz logaritmica: logm')
logm(A)
disp('Matriz de raices cuadradas: sqrtm')
sqrtm(A)
disp('Evalua la funcion que se indique: funm')
funm(A,@cos)
disp('VE son los vectores propios y VA son los valores propios:
[VE,VA]')
[VE,VA]=eig(A)
disp('Factorzizacion en LU')
[L,U]=lu(A)
disp('Factorizacion en QR')
[Q,R]=qr(A)
%% TEMA 4: TEXTO
disp('TEXTO')
disp('Cadenas de caracteres b y c')
b='carro'; c='perro';
b+c
disp('Vemos la representacion ASCII de la cadena')
b+0
disp('Otra forma de ver la representacion ASCII de la cadena')
abs(b)
disp('Tercera forma de ver la representacion ASCII de la cadena')
double(b)
disp('Convertimos un vector de numero enteros')
setstr(ans)
disp('Calculamos la diferencia entre minusculas y mayusculas')
abs('b')-abs('A')
disp('Se escribe los caracteres conociendo la representacion ASCII')
setstr(b-32)
disp('Escribe el valor almacenado en la variable b')
disp(b)
disp('Ecribe el texto que vaya entre las comillas')
disp('escribe esto')
%% TEMA 5: HIPERMETRICES
disp('HIPERMATRICES')
disp('Se define la primera capa')
HM(:,:,1)=[1.12 2.65 3.78;0.34 1.65 5.76];
disp('Se define la segunda capa')
HM(:,:,2)=[7.01 8.98 9.84;0.11 2.61 0.12] ;
disp(' ')
disp('OPERACIONES CON HIPERMATRICES')
q=ones(4,3); w=zeros(4,3); % definimos dos matrices de las mismas
dimensiones
disp('Concatena una debajo de la otra: cat')
cat(1,q,w)
disp('Concatena una al lado de la otra')
cat(2,q,w)
disp('Concatena como distintas capas de una hipermatriz')
cat(3,q,w)
PRACTICA #4
figure (2);
ylabel('GRAFICO 2');
X=[-2 -1 5 0 4 6];Y=[3 -1 5 6 -4 8]; Z=[4 -5 6 8 1 2];
plot(X,Y,X,Z);
figure (3);
title('GRAFICO 3');
plot(x,y,'*');
grid;
%% OTROS COMANDOS
figure(15)
subplot(2,5,1),area(x,y),xlabel('AREA')
grafica
subplot(2,5,2),bar(x,y),xlabel('BAR')
% diagrama de
barras(verticales)
subplot(2,5,3),hist(x),xlabel('HIST')
% histograma
subplot(2,5,4),pie(x),xlabel('PIE')
% sectores
subplot(2,5,5),rose(x,y),xlabel('ROSE') %
histograma polar
subplot(2,5,6),stairs(x,y),xlabel('STAIRS')
%
grafico de escalera
subplot(2,5,7),stem(x,y),xlabel('STEM') %
secuencia de datos
discretos
subplot(2,5,8),loglog(x,y),xlabel('LOGLOG')
%
como plot pero con
escala logaritmica en ambos ejes
subplot(2,5,9),semilogx(x,y),xlabel('SEMILOGX') %
como plot pero
escala logaritmica en el eje x
subplot(2,5,10),semilogy(x,y),xlabel('SEMILOGY') %
como plot pero
escala logaritmica en el eje y
%%
figure(4)
a=1:360;y1=cosd(a);y2=tand(a);y3=exp(-a);y4=exp(a);
subplot(2,2,1),plot(a,y1),title('coseno')
subplot(2,2,2),plot(a,y2),title('tangente')
subplot(2,2,3),plot(a,y3),title('-exponencial')
subplot(2,2,4),plot(a,y4),title('exponencial')
figure(5)
A=[-1 2 3 6 -2];B=[-4 8 0 0 4];
plot(A,B)
figure (6)
plot(A,B,'r')
%% GRAFICOS EN 3D
figure(7)
q=-640:640; w=cosd(q);e=tand(q);
plot3(q,w,e)
figure(8)
Q=[3 0 1 3 2];
fill3(A,B,Q,'b')
figure(9)
W=-12:0.5:12;E=-12:0.5:12;
[o,p]=meshgrid(W,E);
i=sin(sqrt(o.^2+p.^2))./sqrt(o.^2+p.^2+0.1);
mesh(o,p,i)
figure(10)
[O,P]=meshgrid(-12:0.5:12);
I=sin(sqrt(o.^2+p.^2))./sqrt(o.^2+p.^2+0.1);
mesh(O,P,I)
figure(11)
surf(o,p,i)
figure(12)
contour(o,p,i)
figure(13)
pcolor(o,p,i)
figure(14)
surf(o,p,i)
view(10,70)
PRACTICA #5
%% TEMA 1: PROGRAMACION BAJO MATLAB. ESTRUCTURAS, SENTENCIAS Y BUCLES
% ESTRUCTURA
disp('ESTRUCTURA')
alum.nombre='Esteban';
% introducimos el campo nombre en la
estructura alum
alum.primer_apellido='Herrera';
% introducimos el campo apellido1
en la estructura alum
alum.segundo_apellido='Cisneros';
% introducimos el campo apellido2
en la estructura alum
alum.edad=20;
% introducimos el campo edad en la
estructura alum
alum.carrera='Ingenieria Electrica'; % introducimos el campo carrera
en la estructura alum
alum.nivel='Quinto';
% introducimos el campo nivel en la
estructura alum
alum.hobby='Ciclismo';
% introducimos el campo hobby en la
estructura alum
alum
% escribe por pantalla informacion
almacenada en la estructura alum
% USO DEL STRUCT
disp('CON EL STRUCT')
alum2=struct('nombre','Bladimir','primer_apellido','Herrera','segundo_
apellido','Cisneros','edad',20,'carrera','Ingenieria
Electrica','hobby','Ciclismo')
disp('Sentencia while')
r=input('Ingrese el numero: ')
while r<=8
disp('r es menor que 8')
disp(r)
r=r+1;
end
disp('Sentencia if')
f=input('Ingrese un numero al azar: ');
if f==0
disp('No gana nada')
elseif f==5
disp('Su premio es de un cupon de descuento de 50%')
elseif f==7
disp('Su premio es de un cupon de descuento del 75%')
elseif f==12
disp('Su premio es de un cupon de descuento del 100%')
else
disp('Intento de nuevo XD')
end
disp('Sentencia break')
for B=0:16
if B==4
break
end
disp('Aun no termina la secuencia')
end
disp(' ')
disp('Sentencia continue')
fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
line = fgetl(fid);
if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
continue
end
count = count + 1;
end
fprintf('%d lines\n',count);
fclose(fid);
PRACTICA #6
%% TEMA 1: ANALISIS DE DATOS
disp('ANALISIS DE DATOS')
x1=[4 1 2 3 5;1 2 6 3 2;8 0 5 2 1;6 0 0 2 1];
cov(x1)
diff(x1)
corrcoef(x1)
cumprod(x1)
% Matriz de productos acumulados
cumsum(x1)
% Matriz de sumas acumuladas
std(x1)
mean(x1)
% Media de cada columna
median(x1)
% Mediana de cada columna
prod(x1)
% Producto de todos los elementos de cada columna
sort(x1)
% Ordena los valores de cada columna
sum(x1)
% Suma todos los elementos de cada columna
var(x1)
% Varianza de los elemento de cada columna
max(x1)
% Valor maximo de cada columna
min(x1)
% Valor minimo de cada columna
iqr(x1)
% Rango intercuartilico de cada columna
disp(' ')
y1=[1 5 4 7 8 5 4 3 4 6 9 0 2 3 4 5 6 ];
tabulate(y1)
% Tabla de frecuencias generando a partir de una serie
de valores
range(x1)
% Rango de cada columna (diferencia entre el maximo y
el minimo)
%% TEMA 2: POLINOMIOS
disp('POLINOMIOS')
p=[2 -9 0 9];
% representa al polinomio x^4-9x^3+13x^2-9x-14
roots(p)
% calculamos sus raices
poly(ans)
% devuelve el polinomio generado por esas
cuatro raices
disp(' ')
disp('Otras caracteristicas')
P=[3 5 9];
Q=[4 0 2];
c=conv(P,Q)
% producto de los polinomios p y q
deconv(c,Q)
% cociente de dividir el polinomio c entre el
polinomio q
polyder(P)
% derivada del polonomio p
polyder(P,Q)
% derivada del producto de los polinomios p y q
polyval(P,[5 6 0.5]) % evalua el polinomio en 0,1 y 5 es decir, halla
p(0), p(1) y p(5)
polyval(P,[5 3 2;-9 -1 -2;1 0 4]) % igual pero toma los valores de una
matriz
disp(' ')
disp('Otras caracteristicas')
f=(x-1)/(sqrt(x.^2-6*x+3)-cos(sec(x)));
f2=@(x)x./(sqrt(2*x.^7.5));
g=(x*y+sqrt(x.^y))/(y+3*x);
e=@(x)x.^3+2*x.^2-x+3;
f1=@cos;
x0=5;
X=[1 2 3 4 5 6];
Y=[23 56 78 98 89 6];
diff(f)
% derivada de la funcion respecto a x
diff(g,y)
% derivada parcial de la funcion con respecto a t
diff(f,3)
% derivada n-esima de la funcion respecto a x
q=fminbnd(e,1,3)
% calcula el minimo de una funcion de una variable
fzero(f1,x0)
% busca el cero de una funcion unidimensional de f
mas proximo al punto a
quad(f2,1,4)
% aproxima la integral definida (segun la
cuadratura de Simpson
Z=trapz(X,Y)
% integral numerica trapezoidal de la funcion
formada al emparejar los puntos de los vectores x e y
PRACTICA #7
%% PEQUEOS EJEMPLOS
disp('Calculo del volumen de un cilindro')
h=15.89;
r=6.18;
volumenc=pi*r.^2*h
disp('Dibujar un circulo')
subplot(1,2,1)
xc=3;yc=-5;r1=6;
n=40; k=1:n;fi=2*pi*k/n;
x1=xc+r1*cos(fi);y1=yc+r1*sin(fi);
plot(xc,yc,'x',x1,y1);
axis([-5 10 -10 6]), axis equal;
grid
subplot(1,2,2)
wx=25;
wy=15;
delta=8;
t=0:360;
x2=sind(wx*t);
y2=sind(wy*t+delta);
plot(x2,y2,'r');
text(0,0.2,'\omega_x/\omega_y=2/1')
xlabel('x');
ylabel('y')
title('Figuras de Lissajous')
contour(X,Y,Z,25)
disp('b')
syms x2 y2;
f3=x2.^2+y2.^2-2*x2+4*y2+6;
fx=diff(f3,x2);
fy=diff(f3,y2);
disp('Puntos criticos')
[a1,b1]=solve(fx,fy);
puntos=double([a1 b1])
disp('c')
fxx=diff(fx,x2);
fxy=diff(fx,y2);
fyy=diff(fy,y2);
H=fxx*fyy-fxy.^2;
valor_hessiano=subs(H,{x2,y2},{a1,b1})
valor_fxx=subs(fxx,{x2,y2},{a1,b1})
[X,Y]=meshgrid(0:.25:4,0:0.25:3);
Z=(Y.^3).*X+Y.^2-4*Y.*X+3*X+10;
subplot(1,2,1)
h1=surf(X,Y,Z)
% Dibujamos la superficie con color magenta, con transparencia 0.5 y
color
% de la reticula en blanco
set(h1,'FaceColor','magenta','FaceAlpha',0.5,'EdgeColor','w')
% Etiquetamos los ejes
xlabel('Eje x')
ylabel('Eje y')
zlabel('Eje z')
title('Grafica de f(x,y)=x^2*y+y^2-4*x+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')
% Literal B
syms x3 y3
f1=y3.^3*x3+y3.^2-4*y3*x3+3*x3+10;
fx1=diff(f1,x3)
fy1=diff(f1,y3)
[a3,b3]=solve(fx1,fy1);
Puntos=double([a3 b3])
fxx1=diff(fx1,x3);
fxy1=diff(fx1,y3);
fyy1=diff(fy1,y3);
H1=fxx1*fyy1-fxy1.^2;
valor_Hessiano=subs(H1,{x3,y3},{a3,b3})
valor_fxx=subs(fxx1,{x3,y3},{a3,b3})
% Literal C
% Parametrizamos el segmento que pasa por (2,0,0) y (4,2,0)
t1=linspace(0,1);
X1=2+t1*2;
Y1=0+t1*2;
Z1=0*t1;
% La dibujamos con grosor 2 y color azul
Z1=(Y1.^3).*X1+Y1.^2-4*Y1.*X1+3*X1+10;
line(X1,Y1,Z1,'linewidth',2,'color','blue')
% Calculamos los extremos de f sobre este segmento
syms u
f_sobre_AB=subs(f1,{x3,y3},{2+u*2,2*u});
der1=diff(f_sobre_AB);
puntos=solve(der1);
puntos_AB=double(puntos)
valorf_puntosCritiosAB=double(subs(f_sobre_AB,u,[0 puntos(2) 1]))
% Literal D
% Parametrizamos el segmento que pasa por (4,2,0) y (0,2,0)
t2=linspace(0,1);
X2=4-t2*4;
Y2=2+t2*0;
Z2=0*t2;
% La dibujamos con grosor 2 y color azul
Z2=(Y2.^3).*X2+Y2.^2-4*Y2.*X2+3*X2+10;
line(X2,Y2,Z2,'linewidth',2,'color','yellow')
% Calculamos los extremos de f sobre este segmento
f_sobre_BC=subs(f1,{x3,y3},{4-4*u,2});
der2=diff(f_sobre_BC);
puntos1=solve(der2);
puntos_BC=double(puntos1)
%valorf_puntosCritiosBC=double(subs(f_sobre_BC,u,[0 puntos1(1) 1]))
% Literal E
% Parametrizamos el segmento que pasa por (4,2,0) y (0,2,0)
t3=linspace(0,1);
X3=0+t3*2;
Y3=2-t3*2;
Z3=0*t3;
% La dibujamos con grosor 2 y color azul
Z3=(Y3.^3).*X3+Y3.^2-4*Y3.*X3+3*X3+10;
line(X3,Y3,Z3,'linewidth',2,'color','cyan')
% Calculamos los extremos de f sobre este segmento
f_sobre_CA=subs(f1,{x3,y3},{2*u,2-u*2});
der3=diff(f_sobre_CA);
puntos2=solve(der3);
puntos_CA=double(puntos2)
valorf_puntosCritiosCA=double(subs(f_sobre_CA,u,[0 puntos2(2) 1]))
ANEX
OS
PRACTICA #1
%Datos personales
%Nombre: Esteban Herrera
%Nivel: Quinto
%Fecha: 10 de septiembre del 2015
%Operaciones matematicas comunes
clc; close all; clear all;
a=7 % damos un valor a la variable a
b=4 % damos un valor a la variable b
a+b % suma de las dos variables
a/b
a^b
who;
whos;
%*******************FORMATOS DE NUMEROS********************+
% format short formato como fija con 4 digitos despues de la coma
% format long fija con 14 0 15 digitos despues de la coma
% format short e formato flotante con 4 digitos despues de la coma
% format long e formato flotante con 14 o 15 digitos despues de la
coma
% format short g la mejor entre la 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 de 3
% 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
%*************VARIABLES COMUNES***************
% ans: variables usada por defecto para lamacenar el ultimo resultado
% pi: razon de una circunferecnia 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 numerica
% i y j: i=j=sqrt(-1)
% realmin: el numero real positivo mas pequeo que es utilizable
% realmax: el numero real positivo mas grande que es utilizable
%**********TIEMPO**********
% clock: aos, mes, dia
% calendar
% date
%*****************FUNCIONES TRIG0NOMETRICAS*****
% ...(x): el angulo se expresa en radianes
% sin(x)
% cos(x)
% tan(x)
% cos(x)
% sec(x)
% cot(x)
% ...d(x): se expresa el angulo en grados
% ...h(x): funciones hiperbolicas
% a...(x): inversa de la funcion trigonometrica con el resultados
% expresado en radianes
% a...h(x): inversa de la funcion trigonometrica hiperbolica con el
% resultado expresado en radianes
%********ALGUNAS OPERACIONES*******
% abs(x): valor absoluto o magnitud de una numero complejo
% sign(x): signo del argumento si x es un valor real (-1 si es
negativo, 0
% si es cero, 1 si es positivo)
% exp(x): exponencial
% gcd(m,n): maximo comun divisor
% lcm(m,n): minimo comun multiplo
% log(x): logaritmo neperiano o natural
% log2(x): logaritmo en base 2
% log10(x): logaritmo decimal
% mod(x,y): modulo despues de la division
% rem(x,y): resto de la division
% sqrt(x): raiz cuadrada
% athroot(x,n): raiz n-esimna de x
%**********NUMEROS COMPLEJOS*************
% abs(x): magnitud del numero complejo x
% angle(x): angulo (en radianes ) del complejo x
% complex(y,z): genera el complejo y+zi
% conj(x): conjugado del numero complejo x
% imag(x): parte imaginaria del numero complejo x
% real(x): parte real del numero complejo x
% sign(x): divide el complejo x por si magnitud devuelve un numero
complejo
% con el mismo angulo de fase pero con magnitud 1
% isreal(x): devuelve 1 si es real y 0 si es complejo
PRACTICA # 2
%
%
%
%
Practica 2
Esteban Herrera
Quinto nivel
11 de septiembre del 2015
%
%
%
%
%
%
%
%
%**************PRACTICA****************
q=[3 24;6 8]
w=[1 0.5; 0.75 11]
e=[1+12i 2+2.5i; 30+1i 4.6+7i]
q+e
% suma de matrices
w-e
% resta de matrices
q*w
% multiplicamos dos matrices
q.*w
% multiplicacion de elemento a elemento
q/e
% division de matrices por la derecha
w./q
% division elemento a elemento por la derecha
e\q
% division por la izquierda
w.\e
% division elemento a elemento por la izquierda
w^5.2 % potenciacion
e.^q
% potenciacion elemento a elemento de matrices
e'
% transpuesta conjugada
w.'
% transposicion de matrices
PRACTICA #3
%Practica 3
%Esteban Herrera
% Continuacion de matrices
%**************FUNCIONES PARA OPERAR CON VECTORES************
% cross(x,y) producto vectorial entre los vectores x e y
% dot(x,y) producto escalar entre los vectores x e y
x=[1 2 3]; y=[4 5 6];
cross(x,y) % Producto vectorial
dot(x,y)
% Producto escalar
%**********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 diagonal
% diag(A) extrae la diagonal de la matriz A como un vector columna
% eig(A) valores propios
% inv(A) matriz inversa
% length(A) maxima dimension
% norm(A) norma
% norm(A,n) norma-n
% normest(A) estimacion de la norma-2
% null(A) espacio nulo
% orth(A) ortogonalizacion
% pinv(A) pseudoinversa
% poly(A) polinomio caracteristico
% rank(A) rango
% rref(A) reduccion mediante la eliminacion de Gauss de una matriz
%
%
%
%
%
size(A) dimensiones
trace(A) traza
tril(A) matriz triangular inferior a partir de la matriz A
triu(A) matriz triangular superior a partir de la matriz A
Con A matriz, v vector y n un numero natural
v=[1 2 3];
diag(v) % Crea una matriz diagonal a partir de un vector v
A=[1 2 3 4;7 8 9 2; 2 4 6 8];
diag(A) % crea un vector columna a partir de la diagonal 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 solo matrices cuadradadas
rank(A) % rango de la matriz
rref(A) % reduccion mediante Gauss
I=tril(A) %convierte a ceros todos los elementos que quedan encima de
la diagonal principal y lo guarda en la variable I
u=triu(A) %convierte en ceros todos los elementos que quedan debajo de
la diagonal principal y lo guarda en la variable u
%************OTRAS OPERACIONES CON MATRICES***********
% find(A) devuelve los indices donde 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
% reshpe(A,m,n) devuelve una matriz mxn cuyos elementos se toman por
% columnas de A, si A no contiene mxn elementos daria error
% rot90(A) gira la matriz 90 grados en sentido contrario a la agujas
del
% relog
% rot90(A,n) gira la matriz nx90 grados
% expm(A) matriz exponecial
% 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
% (con A matriz, m y n naturales)
a=[pi 0;pi/4 pi/3];
find(a)
% devuelve los indices como un vector columna
reshape(a,1,4)
rot90(a)
% gira la matriz 90 grados
rot90(a,3) % gira la matriz 270 grados (90*3=270)
funm(a,@sin) % calcula el seno de cada elemento de la matriz
expm(a)
%************************TEXTO********
% Una cadena de caractere es texto rodeando 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 una operacion matematica sobre la cadena, esta se ve como
un
% vector de numeros ASCII.
% 2.- Las funciones que opera sobre vectores, como sum, max, etc. se
% aplican a matricres 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.
PRACTICA #4
% PRACTICA #4
% Esteban Herrera
% 14 de Septiembre del 2015
%************PASOS GUIAS PARA GRAFICAR*********
% Graficas
% La orden plot genera una grafica. Los argumentos deben ser vectores
de la
% misma longitud.
figure (1);
xlabel('GRAFICO 1');
x=[-2 -1 0 1 2 3]; y=[4 1 0 1 4 9];
plot(x,y);
% Si queremos cambiar la apariencia de la grafica basta pinchar en el
% ultimo boton de la barra de herramientas y se abrira unos cuadros en
los
% laterales que nos permitiran ir haciendo los cambios deseados como
darle
% nombre a los ejes
% La funcion plot nos permite otras opciones como superponer graficas
sobre
% los mismos ejes:
figure (2);
ylabel('GRAFICO 2');
X=[-2 -1 0 1 2 3];Y=[4 1 0 1 4 9]; Z=[6 5 3 7 5 2];
plot(X,Y,X,Z);
% Tambien podemos usar distintos tipos de lineas para el dibujo de la
% grafica:
figure (3);
title('GRAFICO 3');
plot(x,y,'*');
grid;
% Ademas podemos colocar etiquetas o manipular la grafica:
% etiqueta sobre la X de la grafica actual:
xlabel('texto')
% etiqueta sobre la Y de la grafica actual:
ylabel('texto')
% titulo en la cabecera de la grafica actual:
title('texto')
% texto en el lugar especificado despues con el raton:
text(x,y,'texto')
% texto, el lugar lo indicamos despues con el raton:
gtext('texto')
% dibujar una rejilla:
grid
% fija los valores maximo y minimo de los ejes:
axis([xmin
xmax ymin ymax])
%
%
%
%
%
axis
axis
axis
hold
hold
equal
square
normal
on
off
figure(13)
pcolor(o,p,i)
% Manipulacion de graficos
%
% fija el angulo de vision especificado al ezimut y la elevacion
>>view(az,el)
% coloca su vista en un vector de coordenada cartesiana(x,y,z) en el
% espacio 3-D >>view([x,y,z])
% almacena en az y el los valores del azimut y de la elevacion de la
vista
% actual:
>> [az,el]=view
% aade etiquetas de altura a los graficos de contorno:
>>clabel(C,h)
% aade una barra de color vertical mostrando las transformaciones:
>>colorbar
figure(14)
surf(o,p,i)
view(10,70)
PRACTICA #5
% PRACTICA 5
% Esteban Herrera
% 15 de septiembre del 2015
%*********PROGRAMACION BAJO MATLAB. ESTRUCTURAS, SENTENCIAS Y
BUCLES******
% ESTRUCTURA
% Es una agrupacion de 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
% apostrofes (') seguidos del valor que se les quiere asignar.
% Ejemplos:
alumno.nombre='Esteban'; % introducimos el campo nombre en la
estructura alumno
alumno.apellido1='Herrera'; % introducimos el campo apellido1 en la
estructura alumno
alumno.apellido2='Cisneros'; % introducimos el campo apellido2 en la
estructura alumno
alumno.edad=20; % introducimos el campo edad en la estructura alumno
alumno.carrera='Ingenieria Electrica'; % introducimos el campo carrera
en la estructura alumno
alumno.nivel='Quinto'; % introducimos el campo nivel en la estructura
alumno
alumno.hobby='Ciclismo'; % introducimos el campo hobby en la
estructura alumno
alumno % escribe por pantalla informacion almacenada en la estructura
alumno=
% 2.- Uso de struct
alumno2=struct('nombre','Bladimir','apellido1','Herrera','apellido2','
Cisneros','edad',20) % alumno2= % otro modo de introducir los campos
% 3.- Pueden crearse vectores y matrices, por ejemplo:
%alumno(1)=struct('nombre','Esteban','apellido1','Herrera','apellido2'
,'Cisneros','edad',20)
%**********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 es 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') % devuelve 1 por ser cierto que nombre es un
campo de alumno
isstruct(alumno)
% devuelve 1 porque es cierto que alumno es una
estructura
rmfield(alumno,'edad') % elimina el campo edad de la estructura alumno
%*****************VECTORES Y MATRICES COMO CELDAS******************
% Un vector de celdas es un vector cuyos elemenos son cada uno de
ellos una
% variable de cualquier tipo. En todo vector sus elementos pueden ser
% numeros o cadenas de caracteres, pero en un vector de celdas el
primer
% elemento puede ser un numero, el segundo una matriz, el tercero una
% estructura,etc.
% Para crear un vector de celdas usaremos llaves({})
celda(1)={[0 1 2]}; % creamos un vector de celdas definiendo celda a
celda
celda(2)={'cadena de caracteres'};
celda(3)={eye(2)};
celda(4)={-7};
celda
% CELDA A CELDA DE OTRA FORMA:
cel{1}=[0 1 2]; % creamos otro vector de celdas definiendo celda a
celda de forma distinta
cel{2}='cadena de caracteres';
cel{3}=eye(2);
cel{4}=-7;
cel
% MATRICES
%
% 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 numerica en celdas
% Nota: m y n numeros naturales, c celdas y x vector o matriz
% Ejemplo:
disp('Matriz por celdas')
c={[0 1 2],'cadena de caracteres',eye(2),-7}; % otra forma de crear
celdas si queremos crear una matriz o una
% Nota: Podemos ver muchos mas casos pero todos serian similares:
ischar,
% isempty, isequal, isfloat, isinteger, islogical, isnumeric, isprime,
% isreal, isscalar, isspace,.....
% Nota: Existe un orden de precedencia para operadores aritmeticos,
logicos
% y relacionales, en la siguiente tabla van de mayor a menor
precedencia:
%
%
%
%
%
%
%
.'.'
*/.*./.
+-~+(unario)-(unario)
:><>=<===~=
|&
r=r+1;
end
% SENTENCIA IF
% Un bloque if puede escribirse de varias maneras distintas. Lo que
hace es
% evaluar una expresion logica y si es cierta las ordenes que
encuentre
% antes del end.
% Puede que nos interese que en caso de no ejecutar dicha orden
ejecute
% otra distinta. Esto se lo indicaremos usando else dentro del bloque.
% Si queremos dar una estructura mucho mas compleja, usaremos la mas
% general donde solo se evaluan las ordenes asociadas con la primera
% expresion verdadera de todas. En cuanto la evalue deja de leer el
resto y
% se dirige directamente al end.
% if <expresion1>
%
<ordenes evaluadas si la expresion1 es verdadera>
% elseif <expresion2>
%
<ordenes evaluadas si la expresion2 es verdadera>
% elseif <expresion3>
%
<ordenes evaluadas si la expresion3 es verdadera>
% elseif
%
......
%
......
% else
%
<ordenes evaluadas si la expresion es verdadera>
% end
disp('Sentencia if')
f=2;
if f==0
disp('f vale 0')
elseif f==1
disp('f vale 1')
elseif f==2
disp('f vale 2')
elseif f==3
disp('f vale 3')
else
disp('b no vale ni 0 ni 2 ni 3')
end
% Sentencia break
% Si queremos que en un momento dado determine la ejecucion de un
bucle for
% o un bucle while usaremos break
% Sentencia Continue
% La sentencia continue hace que se pase inmediatamente a la siguiente
% iteracion del bucle for o del bucle while saltando todas las ordenes
que
% hay entre el continue y el fin del bucle en la iteracion actual.
% Ejemplo:
% Podemos mezclar en un programa varias sentencias de este sitio. Aqui
% podemos ver un programa que escribe los primos de 1 al 100 usando
las
PRACTICA #6
% PRACTICA 6
% Esteban Herrera
% 16 de septiembre del 2015
%***POLINOMIOS-ANALISIS NUMERICO****
%
%% *****ANALISIS DE DATOS*********
% Matlab ejecuta analisis estadistico sobre conjuntos de datos. Estos
% conjuntos de datos se almacenan en matrices orientadas por columnas.
% Matlab incluye, entre, otras, las siguientes funciones estadisticas:
% 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(n)
% range(x)
% sort(x)
% std(x)
% sum(x)
% tabulate(v)
% var(x)
disp('EJEMPLOS')
x=[5 7 9 2 9;3 1
cumprod(x)
%
cumsum(x)
%
mean(x)
%
median(x)
%
prod(x)
%
sort(x)
%
sum(x)
%
var(x)
%
max(x)
%
coeficientes de correlacion
matriz de covarianzas
producto acumulativo de columnas
suma acumulativa de columnas
diferencias entre elementos adyacentes de x
histograma o diagrama de barras
rango intercuartilico de la muestra
maximo de cada columna
media de los valores de vectores y columnas
mediana de los valores de vectores y columnas
minimo de cada columna
producto de elementos en columnas
numeros aleatorios distribuidos uniformemente
numeros aleatorios distribuidos normalmente
rango de cada columna
ordena columnas en orden ascendente
desviacion estandar de la muestra
suma de elementos de cada columna
tabla de frecuencias del vector
varianza de la muestra
7 5 1;3 9 2 7 5;1 5 5 1 8];
Matriz de productos acumulados
Matriz de sumas acumuladas
Media de cada columna
Mediana de cada columna
Producto de todos los elementos de cada columna
Ordena los valores de cada columna
Suma todos los elementos de cada columna
Varianza de los elemento de cada columna
Valor maximo de cada columna
min(x)
% Valor
iqr(x)
% Rango
disp(' ')
y=[5 7 9 2 9 3 1 7 5 1
tabulate(y)
% Tabla
de valores
range(x)
% Rango
el minimo)
%% ******POLINOMIOS******
% RAICES
% Un polinomio se representa por un vector fila con sus coeficientes
en
% orden descendiente, no debemos olvidar colocar los terminos con
% coeficiente nulo.
% Asi por ejemplo si queremos indicar el polinomio 5x^4+2x^2-x+7
escribimos
% [5 0 2 -1 7].
% Para encontrar las raices de un polinomio p usaremos la funcion
roots(p).
% Si conocemos las raices de un polinomio es posible contruir el
polinomio
% asociado mendiante la funcion poly(r).
% Matlab trabaja con los polinomios como vectores fila y con las
raices
% como vectores columnas.
disp('Ejemplos')
p=[1 -9 13 9 -14];
% representa al polinomio x^4-9x^3+13x^2-9x-14
roots(p)
% calculamos sus raices
poly(ans)
% devuelve el polinomio generado por esas
cuatro raices
% OTRAS CARACTERISTICAS
% conv(p,q)
multiplica los dos polinomios p,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)
evalua el polinomio p en todos los valores de la
matriz A
% Matlab no tiene incorporado una funcion sumar polinomios.
P=[1 2 7];
Q=[1 3 6];
c=conv(P,Q)
% producto de los polinomios p y q
deconv(c,Q)
% cociente de dividir el polinomio c entre el
polinomio q
polyder(P)
% derivada del polonomio p
polyder(P,Q)
% derivada del producto de los polinomios p y q
polyval(P,[0 1 5]) % evalua 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
%% ******ANALISIS NUMERICO******
% REPRESENTACION GRAFICA
% Existe la funcion fplot que evalua la funcion que se desea
representar en
% la grafica de salida. Como entrada, necesita conocer el nombre de la
% funcion como una cadena de caracteres, y el rando de representacion
como
s3=sin(2*x)*cos(3*x);
int(s3)
% Si no esta definida x como una variable simbolica, utilizaremos la
% siguiente expresion
% int('S','x')
% En caso del ejemplo anterior, tendriamos lo siguiente:
int(2*cos(x)-6*x)
% La integral se resuelve sin poner las comillas
int((x+1)/((x.^2+1)*(x.^2+4)),x)
int(exp(4*x),x)
int(x.^5,x)
int(cos(sin(x)))
PRACTICA #7
%% PRACTICA 7
% Esteban Herrera
% 17 de septiembre del 2015
% Analisis numerico basico
% Modelo matematico
% Algoritmo
% Soluciones
% METODOS NUMERICOS
% 1.- PEQUEOS EJEMPLOS
23.45+1.67*sqrt(32.74)/(1+exp(-2))
disp('Calculo de area y volumen de la esfera')
r=17.4; are=4*pi*r.^2
volumen=4/3*pi*r.^3
disp('Hacer una pequea tabla y plotear la curva')
subplot(2,5,1)
x=0:6, y=sin(pi*x/6),plot(x,y)
disp('Dibujar dos parabolas')
subplot(2,5,2)
a=-10:10;b=a.*a-100;
f1=0.2*b;f2=0.5*b;
plot(a,f1,a,f2),title('Dos parabolas')
disp('Escribir vectores usando operaciones elemeno a elemento')
subplot(2,5,3)
q=[0.1 0.6 log(3) sqrt(2) 3*pi/4]
f=7*q.*exp(-q)
g=q.^2+f./q
plot(q,f,'o',q,f,q,g)
resultado = [q' f' g']
disp('Una espiral dada en forma parametrica')
subplot(2,5,4)
t=0:0.2:30;e=t.*cos(t);z=t.*sin(t);
plot(e,t);title('Espiral')
disp('Otras funciones Matlab utiles')
subplot(2,5,5)
r=rand(1,7),plot(1:7,r,'x')
% 7 valores al azar entre 0 y 1
ymax=max(r)
% Maximo de las componentes de r
s=sum(r)
% Suma de componentes
r=round(100*r)
% Ahora r es un vector de enteros
entre 0 y 100
z1=sort(r)
% Ordena el vector en forma
creciente
zz=fliplr(z1)
% Da vuelta al vector (flipud lo da
vuelta vertical)
disp('Estrellas: se plotea 100 estrellas y 400 puntos al azar')
subplot(2,5,6)
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')
disp('Circulo: dibujar un circulo')
subplot(2,5,7)
xc=3;yc=-3;r1=6.5;
n=50; k=0:n;fi=2*pi*k/n;
x1=xc+r1*cos(fi);y1=yc+r1*sin(fi);
plot(xc,yc,'x',x1,y1);
axis([-5 10 -10 6]), axis equal;
grid
disp('')
subplot(2,5,8)
wx=25;
wy=15;
delta=8;
t=0:360;
x=sind(wx*t);
y=sind(wy*t+delta);
plot(x,y,'r');
text(0,0.2,'\omega_x/\omega_y=2/1')
xlabel('x');
ylabel('y')
title('Figuras de Lissajous')
%% MAXIMOS Y MINIMOS
% Analizar los extremos relativos y absolutos de una funcion de dos
% variables en un dominio abierto y en un dominio cerrado y acotado
% Calculo de los puntos criticos
% Dada la funcion fxy=x^3+y^3-3x-12y+25
% - Representar la funcion
% - Calcular los puntos criticos
% - Calcular los extremos relativos de f.Alcanza esta funcion un
maximo o un minimo absoluto?
disp('a')
figure (2)
[X,Y]=meshgrid(-3:0.2:3);
Z=X.^3+Y.^3-3*X-12*Y+25;
subplot(1,2,1)
surf(X,Y,Z)
subplot(1,2,2)
contour(X,Y,Z,25)
disp('b')
syms x2 y2;
f3=x2.^3+y2.^-3*x2-12*y2+25;
fx=diff(f3,x2);
fy=diff(f3,y2);
disp('Puntos criticos')
[a1,b1]=solve(fx,fy);
puntos=double([a1 b1])
disp('c')
fxx=diff(fx,x2);
fxy=diff(fx,y2);
fyy=diff(fy,y2);
H=fxx*fyy-fxy.^2;
valor_hessiano=subs(H,{x2,y2},{a1,b1})
valor_fxx=subs(fxx,{x2,y2},{a1,b1})
% Dada la funcion fxy=x^2y+y^2-4xy+2y+10 en el dominio D dado por el
X1=2+t1*2;
Y1=0+t1*2;
Z1=0*t1;
% 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(f1,{x3,y3},{2+u*2,2*u});
der1=diff(f_sobre_AB);
puntos=solve(der1);
puntos_AB=double(puntos)
valorf_puntosCritiosAB=double(subs(f_sobre_AB,u,[0 puntos(2) 1]))
% Literal D
% Parametrizamos el segmento que pasa por (4,2,0) y (0,2,0)
t2=linspace(0,1);
X2=4-t2*4;
Y2=2+t2*0;
Z2=0*t2;
% La dibujamos con grosor 2 y color azul
Z2=(X2.^2).*Y2+Y2.^2-4*X2.*Y2+2*Y2+10;
line(X2,Y2,Z2,'linewidth',2,'color','yellow')
% Calculamos los extremos de f sobre este segmento
f_sobre_BC=subs(f1,{x3,y3},{4-4*u,2});
der2=diff(f_sobre_BC);
puntos1=solve(der2);
puntos_BC=double(puntos1)
valorf_puntosCritiosBC=double(subs(f_sobre_BC,u,[0 puntos1(1) 1]))
% Literal E
% Parametrizamos el segmento que pasa por (4,2,0) y (0,2,0)
t3=linspace(0,1);
X3=0+t3*2;
Y3=2-t3*2;
Z3=0*t3;
% La dibujamos con grosor 2 y color azul
Z3=(X3.^2).*Y3+Y3.^2-4*X3.*Y3+2*Y3+10;
line(X3,Y3,Z3,'linewidth',2,'color','cyan')
% Calculamos los extremos de f sobre este segmento
f_sobre_CA=subs(f1,{x3,y3},{2*u,2-u*2});
der3=diff(f_sobre_CA);
puntos2=solve(der3);
puntos_CA=double(puntos2)
valorf_puntosCritiosCA=double(subs(f_sobre_CA,u,[0 puntos2(2) 1]))
%%
% Los metodos iperativos son procedimientos para acercarse a la
respuesta
% mediante aproximanciones sucesivas. Estos metodos incluyen formulas
que
% tienen la propiedad de producir un resultado mas cercano a la
respuesta
% a partir de un valor estimado inicial. El resultado obtenido se
puede
% usar nuevamente como valor anterior para continuar mejorando la
% respuesta.
% Se deben considerar algunos aspectos tales como la elevacion del
valor
% inicial, la propiedad de convergencia de la formula y el criterio
para
%
%
%
%
Algoritmo
1.- Dados m y la precision requerida E
2.- Elegir el valor inicial de 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 ultimo valor x sera un valor aproximando para la raiz r con
precision E
x4=y;
y=0.5*(x4+n1/x4)