Você está na página 1de 80

UNIVERSIDAD

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 2: FORMATOS DE NUMEROS


disp('FORMATOS DE NUMEROS')
disp('FORMAT SHORT')
format short
disp('FORMAT LONG')
format long
disp('FORMAT SHORT E')
format short e
disp('FORMAT LONG E')
format long e
disp('FORMAT SHORT G')
format short g
disp('FORMAT LONG G')
format long g
disp('FORMAT SHORT ENG')
format short eng
disp('FORMAT LONG ENG')
format long eng
disp('FORMAT BANK')
format bank
disp('FORMAT HEX')
format hex
disp('FORMAT RAT')
format rat
disp('FORMAT ')
format

%% TEMA 3: VARIABLES COMUNES


disp('VARIABLES COMUNES')
disp('ANS')
ans
disp('pi')
pi
disp('eps')
eps(2)
disp('inf')
inf('double')
disp('nan')
nan ('single')
disp('i y j')
4.5+8.09*sqrt(-1)
disp('realmin')
realmin('single')
disp('realmax')
realmax('double')

%% TEMA 4: TIEMPO
disp('TIEMPO')
clock
calendar
date

%% TEMA 5: FUNCIONES MATEMATICAS


disp('FUNCIONES MATEMATICAS')
disp('cell')
cell(1.56)
disp('fix')
fix([1.12 4.56 9.087 1.45])
disp('floor')
floor([3.56 6.91 5.34])
disp('round')
round([5.684 1.98 5.04;4.76 87.9 4.02])

%% TEMA 6: FUNCIONES TRIGONOMETRICAS


disp('FUNCIONES TRIGONOMETRICAS')
disp('Funcion seno')
sin(pi)
disp('Funcion coseno')
cos(pi/4)
disp('Funcion tangente')
tan(pi/9)
disp('Funcion secante')
sec(2*pi)
disp('Funcion cosecante')
csc(pi/7)
disp('Funcion cotangente')
cot(pi/3)
disp('Funcion seno en grados')
sind(90)
disp('Funcion coseno en grados')
cosd(45)
disp('Funcion tangente en grados')
tand(60)
disp('Funcion secante en grados')
secd(59)
disp('Funcion cosecante en grados')
cscd(189)
disp('Funcion cotangente en grados')
cotd(270)
disp('Funcion seno hiperbolica')
sinh(230)
disp('Funcione coseno hiperbolica')
cosh(130)
disp('Funcione tangente hiperbolica')
tanh(330)
disp('Funcione secante hiperbolica')
sech(28.9)
disp('Funcione cosecante hiperbolica')

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)

%% TEMA 7: ALGUNAS OPERACIONES


disp('ALGUNAS OPERACIONES')
disp('abs')
abs(-45.87)
disp('sign')
sign(-8617.1)
disp('exp')

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)

%% TEMA 8: NUMEROS COMPLEJOS


w=-0.87i;x=7.684;y=2.891;z=9.918;
disp('NUMERO COMPLEJOS')
disp('abs')
abs(x)
disp('angle')
angle(2.56-78.8i)
disp('complex')
complex(y,z)
disp('conj')
conj(x)
disp('imag')
imag(z)
disp('real')
real(x)
disp('sign')
sign(y)
disp('isreal')
isreal(w)

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]

%% TEMA 2: DIRECCIONAMENTO DE ELEMENTO DE VECTORES Y MATRICES


disp('DIRECCIONAMENTO DE ELEMENTO DE VECTORES Y MATRICES')
disp('Elemento del vector')
w(2)
x(end)
w(1:3)
x(1:2:5)
w([5 1 4])
disp('Elemento de la matriz')
y(2,1)
z(:,2)
y(2,2:3)
z(2,[2 1])
y([2 1], 2:3)
z(end, [1 2])
y(5)

%% TEMA 3: CONSTRUCCION ABREVIADA DE ALGUNOS VECTORES


disp('CONSTRUCCION ABREVIADA DE ALGUNOS VECTORES')

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)

con un valor inicial y un final')


similar al anterior pero con un incremento')
linealmente espaciado')
linealmente espaciado con 100 elementos')
logaritmicamente espaciado')
logartmicamente espaciado con 50 elementos')

%% TEMA 4: CONSTRUCCION DE MATRICES


disp('zeros de nxn')
zeros(5)
disp('zeros de nxm')
zeros(4,3)
disp('ones de nxn')
ones(2)

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)

%% TEMA 5: OPERACIONES DE MATRICES


disp('OPERACIONES DE MATRICES')
a=[1 78;6 5];
b=[2 4.5; 0.175 12];
c=[1.5-12i 3+4.6i; 20-1i 7.5+4i];
disp('Suma de matrices')
a+c
disp('Resta de matrices')
b-c
disp('Multiplicacion de matrices')
a*b
disp('Multiplicacion de elemento a elemento')
a.*b
disp('Divisipm de matrices por la derecha')
a/c
disp('Division elemento a elemento por la derecha')
b./a
disp('Division por la izquierda')
c\a
disp('Division elemento a elemento por la izquierda')
b.\c
disp('Potenciacion')
b^5.2
disp('Potenciacion elemento a elemento de matrices')
c.^a
disp('Trasnpuesta conjugada')
c'
disp('Transposcion de matrices')
b.'

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)

%% TEMA 2: FUNCIONES PARA EL ANALISIS DE MATRICES


disp('FUNCIONES PARA EL ANALISIS DE MATRICES')
a=[1 2 3 4;7 8 9 2; 2 4 6 8;4 3 7 9];
v=[1.41234 7.51123 9.12314];
disp('Numero de condicion')
cond(a)
disp('Determinate')
det(a)
disp('Crea una matriz diagonal con el vector v sobre la diagonal')
diag(v)
disp('Extrae la diagonal de la matric a como un vector columna')
diag(a)
disp('Valores propios')
eig(a)
disp('Matriz inversa')
inv(a)
disp('Maxima dimension')
length(a)
disp('Norma')
norm(a)
disp('Norma-n')
norm(a,2)
disp('Estima de la norma-2')
normest(a)
disp('Espacio nulo')
null(a)
disp('Ortogonalizacion')
orth(a)
disp('Pseudoinversa')
pinv(a)
disp('Polinomio caracteristico')
poly(a)
disp('Rango')
rank(a)
disp('Reduccion mediante la eliminacion de Gauss de una matriz')
rref(a)
disp('Dimensiones')
size(a)
disp('Matriz triangular inferior a partir de la matriz a')
tril(a)
disp('Matriz triangular superior a partit de la matriz a')
triu(a)

%% TEMA 3: OTRAS OPERACIONES CON MATRICES


disp('OTRAS OPERACIONES CON MATRICES')
A=[2*pi pi/9;pi/4 pi/3];
disp('Devuelve los indices: find')
find(A)
disp('Intercambia la matriz de izquierda a derecha: flipr')

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

%% PASOS GUIAS PARA GRAFICAR


disp('PASOS GUIA PARA GRAFICAR')
figure (1);
title('GRAFICO 1');
x=[-4 -2 2 5 6 8]; y=[4 1 4 0 3 10];
plot(x,y);

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

colorea el area bajo la

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')

%% TEMA 2: OPERACIONES CON ESTRUCTURAS


disp('Devuelve los campos de la estructra alum')
fieldnames(alum)
disp('Devuelve 1 por ser cierto que nombre es un campo de alumno')
isfield(alum,'nombre')
disp('Devuelve 1 porque es cierto que alum es una estructura')
isstruct(alum)
disp('Elimina el campo que se asigne de la estructura alum')
rmfield(alum,'segundo_apellido')

%% TEMA 3: VECTORES Y MATRICES COMO CELDAS


disp('VECTORES Y MATRICES COMO CELDAS')

disp('CREAMOS UN VECTOR DE CELDAS DEFINIENDO CELDA A CELDA')


celda(1)={[3 5 5;3 8 9;7 4 1]};
celda(2)={'cadena de caracteres'};
celda(3)={eye(3)};
celda(4)={-8};
% Matriz por celdas
disp('Matriz por celdas')
disp('Otra forma de crear celdas')
c={[4 1;2 4],'caracteres',eye(4),-9};
disp('Hipermatriz de celdas se haria de forma similar')
cell(2,3) % crea una matriz de celdas vacias
celldisp(c) % escribe el contenido de las celdas de c
cellplot(c) % representa graficamente como son las celdas de c
iscell(c)
A=eye(3,2);
num2cell(A)
celda

%% TEMA 4: OPERACIONES, RELACIONS Y LOGICAS


disp('Creamos dos variables y comparamos entre ellas')
x=6;
y=5;
x<y
x>=y
y~=x
x= y
disp('Como matriz')
X=4:2;
Y=X-2;
X<Y
Y<=X
Y>X
% Operadores logicos and, not y or(&,~,|)
a=[5 0 6 2 7];
b=[-6 0 3 4 4];
d=[8 8 8 8 8];
d>a & d>b
a>b | a>d
disp('Otros ejemplos')
e=[Inf 2 4 -5 NaN 9.4];
exist('e') % pregunta si existe alguna variable llamada e
isnan(e) % pregunta cuando e es NaN, devuelve 1 cuando es verdadero y
0 cuando es falso
isinf(e) % pregunta cuando e es Inf, devuelve 1 cuando es verdadero y
0 cuando es falso
isfinite(e) % pregunta cuando e es finito, devuelvo 1 cuando es
verdadero y 0 cuando es falso
all(e)
any(e)

%% TEMA 5: SENTENCIA FOR


disp('Sentencia for')
for t=1:4
disp('El valor de t es: ')
indica entre comillas
disp(t)
end

disp('Sentencia while')
r=input('Ingrese el numero: ')
while r<=8
disp('r es menor que 8')
disp(r)
r=r+1;
end

% escribe por pantalla el texto que se


% escribe el valor de la variable t

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

%% TEMA 3: ANALISIS NUMERICO


syms x y
disp('ANALISIS NUMERICO')
fplot('tan',[-3*pi,3*pi],'c');
ylabel('Funcion tangente')
xlabel('Tiende desde -3pi a 3pi')

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

%% TEMA 4: INTEGRACION POR CALCULO O CALCULO DE PRIMITIVAS


disp('INTEGRACION')
s=sqrt(2*x)-sin(x);
int(s)
disp('Integracion en funcion de una sola variable')
s1=sin(x)*cos(y)+tan(y);
int(s1,y)
% Otra forma de resolver
int(sqrt(x)-exp(x.^3)-sin(x),x)

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')

%% TEMA 2: MAXIMOS Y MINIMOS


% Dada la funcion f(x,y)=x^2+y^2-2x+4y+6, se pide:
% - 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.^2+Y.^2-2*X+4*Y+6;
subplot(1,2,1)
surf(X,Y,Z)
subplot(1,2,2)

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})

% Dada la funcion fxy=y^3x+y^2-4yx+2x+10 en el dominio D dado por el


% triangulo T de vertices A(2,0),B(4,2) y C(0,2), se pide:
% - Representar la superficie en un rectangulo que contenga al
triangulo T
% - Calcular los extremos de f y determinar cuales 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. Cual es el valor maximo y minimo que toma la funcion
sobre este segmento?
% - Representar en el dominio el segmento que une los puntos B y C y
su
% imagen por f. Cual es el valor maximo y minimo que toma la funcion
sobre este segmento?
% - Representar en el dominio el segmento que une los puntos C y A y
su
% imagen por f. Cua es el valor maximo y minimo que toma la funcion
sobre este segmento?
% Cual es el valor maximo y minimo que toma la funcion f si se
considera como dominio el triangulo T?
disp('Solucion')
% Literal A
figure(3)

[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]))

%% TEMA 2: METODO NUMERICO


disp('Interpolacion del punto fijo')
xf(1)=input('Ingrese el valor inicial: ');
tol=input('Ingrese el porcentaje de error: ');
syms x;
f=input('Ingrese la funcin f(x), despejada g(f(x)): ');
i=1;
ea(1)=100;
while abs(ea(i))>=tol,
xf(i+1) = subs(f,x,xf(i));
ea(i+1) = abs((xf(i+1)-xf(i))/xf(i+1))*100;
i=i+1;
end
fprintf('i
xf(i)
Error aprox (i) \n');
for j=1:i;
fprintf('%2d \t %11.7f \t %7.3f \n',j-1,xf(j),ea(j));
end

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 MATEMATICAS COMUNES***********


% cell(x): redondea hacia el infinito

% fix(x): redondea hacia cero


% floor(x): redondea hacia menos infinito
% round(x): redondea hacia el entero mas proximo ---> round([564684
6546465
% 3553453])

%*****************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

% Numeros, Vectores, Matrices


% Tamao del vector --> size(v)
%***********COMO DEFINIR*****************************
% Para crea un vector introducimos los valores deseados separados por
% espacios o comas todo ello entre corchetes. Si lo queremos es crear
una
% matriz lo hacemos de forma analoga pero separando las filas con
puntos y
% comas (;)
% Generalmente usaremos letras mayusculas cuando nombremos a las
matrices y
% minusculas para vectores y escalares. Esto no es imprecindible y
Matlab
% no lo exige, pero resulta util.
x=[5 7 -2 4 -6] % Es un vector los elementos separados por espacio
y=[2,1,3,7]
% elementos separados con comas
z=[0 1 2,3 4,5]
A=[1 2 3;4 5 6] % Es una matriz con 2 filas y 3 columnas
%************DIRECCIONAMIENTO DE ELEMENTO DE VECTORES Y MATRICES******
% Para acceder a los elementos individuales de un vector lo haremos
% utilizando subindices, asi x(n) seria el n-esimo elemento del vector
x.
% Si queremos acceder al ultimo podemos indicarlo usando end como
subindice
X=[5 7 -2 4 -6]
X(2)
% Segundo elemento del vector X
X(end)
% Ultimo elemento del vector X
% Para acceder a un bloque de elemento a la vez, se usa la notacion de
dos
% puntos (:), asi x(m;n) nos da todos los elementos desde el m-esimo
hasta
% el n-esimo del vector x
X(2:4)

% Devuelve desde el segundo al cuarto elemento del vector x

% Si introducimos un numero entre el primero y el segundo tambien


separado
% por dos punto(:) se mostrara los elementos del primer al ultimo
indicado,
% incrementados segun el numero que aparece en el centro (o
decrementando
% si el numero es negativo)
X(1:2:5) % Devuelve el primero el tercero y quinto elemento del vector
x
% Otra 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]) % Devuelve el tercer, quinto y primer elemento del vector x
% Para acceder a los elementos de una matriz necesitamos dar dos
valores,

% el primer indica la fila y el segundo la columna


a=[1 2 3;4 5 6]
a(2,1)
% elemento de la matriz que esta en la fila 2 y en la
columna 1
% Si queremos que escriba toda una fila 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 la columna pero ahora


situamos los
% dos puntos en el lugar de las filas para indicar todas las filas de
esa
% columna
a(:,2);
% Al igual que con los vectores podemos escribir una serie de filas o
% columnas, la manera de hacerlo seria muy parecido.
a(2,2:3) % Escribe 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, la 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 ultima fila, las columnas 1 y 3

a(5) % accede al elemento 5 de la matriz, es decir, igual que si


escribieramos a(1,3)
%*************CONSTRUCCION ABREVIADA DE ALGUNOS
VECTORES***************
% A parte de definir un vector introduciendo cada uno de sus
elementos,
% tambien podemos crearlo haciendo uso de las siguientes sentencias:
% (a:b) crea un vector que comienza en el valor a y acaba en el valor
b
% aumentando de 1 en 1
% (a:c:b) crea un vector que comienza en el valor a y acaba en b
aumentando
% de c en c
% linspace(a,b,c) genera un vector linealmente espaciado entre los
valores
% de a y b con c elementos
% linspace(a,b) genera un vector linealmente espaciado entre los
valores
% a y b con 100 elementos
% 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 logaritmicamente espaciado 10^a y
10^b con
% 50 elementos
(1:7) % crea un vector que comienza en 1 y aumenta de 1 en 1 y termina
en 7

(1:3:10) % crea un vector que comienza en 1, aumenta de 3 en 3 y acaba


en 10
(1:4:10) % crea un vector que comienza en 1, aumenta de 4 en 5 y hasta
el 10 y por eso acaba en 9
(50:-7:1) % crea un vector comenzando en 50 disminuyendo de 7 en 7
hasta 1
linspace(2,6,3) % genera un vector desde 2 al 6 con 3 elementos
equidistantes
linspace(2,6,4) % genera un vector desde el 2 al 6 con 4 elementos
equidistantes
logspace(0,2,4) % genera un vector logaritmicamente espaciado entre
10^0 y 10^2 con 4 elementos
%********CONSTRUCCION DE MATRICES*******************
% Al igual que pasa con los vectores, existen unas sentencias que nos
ayuda
% a crear mas rapidamente algunas matrices que matlab ya tiene
predefinidas
% (m y n deben tomar valores naturales)
% zeros (n) crea una matriz cuadrada nxn de ceros
% zeros (n,m) crea una matriz nxm de ceros
% ones(n) crea una matriz cuadrada de nxn de unos
% ones(m,n) crea una matriz mxn de unos
% rand(n) crea una matriz cuadrada de nxn de numeros aleatorios con
% distribucion uniforme (0,1)
% rand(m,n) crea una matriz de mxn de numeros aleatorios con
distribucion
% uniforme (0,1)
% randn(n) crea una matriz cuadrada de nxn de numeros aleatorios con
% distribucion normal (0,1)
% randn(m,n) crea una matriz mxn de numeros aleatorios con
distribucion
% normal (0,1)
% eye(n) crea una matriz cuadrada nxn de unos en la diagonal y ceros
en el
% resto
% eye(m,n) crea una matriz mxn de unso en la diagonal y ceros el resto
% magic(n) crea una matriz cuadrada nxn de enteros de modo que sumen
lo
% mismo las fila y las columnas
% hilb(n) crea una matriz cuadrada de nxn de Hilbert, es decir, los
% elementos (i,j) responden a la expresion (1/(i+j-1))
% invhilb(n) crea una matriz cuadrada nxn que es la inversa de la
matriz de
% Hilbert
zeros(3) % Crea una matriz cuadrada de 3x3 de ceros
zeros(2,5) % matriz de 2x5 de ceros
ones(2,3) % matriz de unos
rand(2,4) % matriz de valores aleatorios entre 0 y 1 segun la uniforme
randn(2,5) % matriz de valores aleatorios segun la normal (0,1)
eye(2)
% matriz identidad o unidad
magic(4) % matriz magica de 4x4
hilb(3) % matriz de Hilbert 3x3
invhilb(3) % inversa de la matriz de Hilbert 3x3
%******OPERACIONES CON MATRICES**************
% a+b suma de matrices
% a-b resta de matrices
% a*b multiplicacion de matrices
% a.*b multiplicacion elemento a elemento de matrices

%
%
%
%
%
%
%
%

a/b division de matrices por la derecha


a./b division elemento a elemento de matrices por la derecha
a\b division de matrices por la izquierda
a.\b division elemento a elemento de matrices por la izquierda
a^n potenciacion (n debe ser un numero, no una matriz)
a.^b potenciacion elemento a elemento de matrices
a' transposicion compleja conjugada
a.' transposicion de matrices

%**************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.

% Para ver la representacion ASCII de una cadena, podemos utiliza 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 que escriba algo en pantalla podemos utilizar el comando
% disp.
b='casa'; c='gato'; % b y c cadenas de caracteres (se manejaran como
vectores)
b+c
b+0
% vemos la representacion ASCII de la cadena
abs(b)
% otra forma de ver la representacion ASCII de la cadena
double(b) % otra tercera forma de ver la representacion ASCII de la
cadena
setstr(ans) % convertimos un vector de numero enteros en caracteres
abs('b')-abs('A') % calculamos la diferencia entre minusculas y
mayusculas
setstr(b-32) % escribimos los caracteres conociendo la representacion
ASCII
disp(b)
% escribe el valor almacenado en la variable a
disp('escribe esto') % escribe el texto que vaya entre las comillas
%***********HIPERMATRICES**********
% COMO DEFINIRLAS
% Matlab permite trabajar con matrices d 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
% ms de dos dimensiones son analogas de las funciones vistas
anteriormente
% aunque con algunas diferencias, por ejempo, a la hora de definirlas.
HM(:,:,1)=[1 2 3;4 5 6];
HM(:,:,2)=[7 8 9;10 11 12]

% definimos la primera capa


% definimos la segunda capa

%************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 otra. La funcion cat permite concatenar matrices segun
las
% distintas dimensiones.
q=zeros(2,3); w=ones(2,3); % definimos dos
dimensiones
cat(1,q,w)
% las concatena
cat(2,q,w)
% las concatena
cat(3,q,w)
% las concatena
hipermatriz
%
%
%
%

matrices de las mismas


una debajo de la otra
una al lado de la otra
como distintas capas de una

Respecto al resto de funciones debemos tener en cuenta que:


1.- Las fumciomes que operam sobre escalares, como sin, cos, etc. se
aplican sobre hipermatrices elemento a elemento (igual que ocurre al
aplicarlas sobre vectores y matrices)

% 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])

%
%
%
%
%

fija que la escala en los ejes sea igual:


fija que la grafica sea un cuadrado:
desactiva axis equal y axis square
abre una ventana de grafico:
borra lo que hay en la ventana de grafico:

axis
axis
axis
hold
hold

equal
square
normal
on
off

% Todas estas ordenes se las podemos dar desde la propia ventana de la


% grafica una vez que hemos abierto las opciones con el boton
% indicado anteriormente
% Otros comandos con las graficas son los siguientes:
%
% area
colorea el area bajo la grafica
% bar
diagrama de barras(verticales)
% barth
diagrama de barras (horinzontales)
% hist
histograma
% pie
sectores
% rose
histograma polar
% stairs
grafico de escalera
% stem
secuencia de datos discretos
% loglog
como plot pero con escala logaritmica en
ambos ejes
% semilogx
como plot pero escala logaritmica en el eje
x
% semilogy
como plot pero escala logaritmica en el eje
y
% Para obtener una informacion mas detallada se recomienda utilizar la
% ayuda de Matlab
% help <orden>
% Una ventana grafica se puede dividir en m particiones horizontales y
en n
% verticales, de modo que cada subventana tiene sus propios ejes, y
para
% hacer esto vamos a usar subplot(m,n,p) donde p indica la subdivision
que
% se convierte en activa.
figure(4)
a=1:360;y1=sind(a);y2=cosd(a);y3=exp(a);y4=exp(-a);
subplot(2,2,1),plot(a,y1),title('seno')
subplot(2,2,2),plot(a,y2),title('coseno')
subplot(2,2,3),plot(a,y3),title('exponencial')
subplot(2,2,4),plot(a,y4),title('-exponencial')
% Para volver al modo por defecto basta escribir: subplot(1,1,1).
% Para dibujar poligonos podemos usar la funcion plot pero teniendo en
% cuenta que el ultimo punto de ambos vectores deben coincidir para
que la
% grafica quede cerrada. Pero si lo que queremos es que quede
coloreado
% todo el interior del poligono debemos mejor usar la funcion fill,
tiene
% tres argumento, los dos vectores que forman los puntos y un tercer
% argumento para indicar el color
figure(5)
A=[-2 0 2 0 -2];B=[4 8 4 0 4];
plot(A,B)
figure (6)
plot(A,B,'r')
%********GRAFICOS EN 3D***************

% Tambien podemos crear graficos en 3 dimensiones, se trata de


extender la
% orden plot(2D) a plot3(3D) donde el formato sera igual pero los
datos
% estaran en tripletes:
figure(7)
q=-720:720; w=sind(q);e=cosd(q);
plot3(q,w,e)
% Podemos hacer girar la grafica usando la barra de herramientas el
boton o
% hacerla mas grande o mas pequea con la lupa. Al final que ocurria
con
% las graficas en dos dimensiones podemos nombrar los ejes o hacer
% modificaciones entrando en opciones con el boton.
% Si queremos representar un poligono en 3 dimensiones lo haremos con
la
% funcion fill3 de forma similar a fill pero ahora con 4 argumentos,
siendo
% el cuarto el que indica el color.
figure(8)
Q=[3 5 10 5 3];
fill3(A,B,Q,'b')
% Superficie de malla
% La orden [X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son
copias del
% vector x y una matriz Y cuyas columnas son copias del vector y. Para
% generar la grafica de malla se usa la orden mesh(X,Y,Z), mesh acepta
un
% argumento opcional para controlar los colores. Tambien puede tomar
una
% matriz simple como argumento: mesh(Z).
figure(9)
W=-10:0.5:10;E=-10:0.5:10;
[o,p]=meshgrid(W,E);
i=sin(sqrt(o.^2+p.^2))./sqrt(o.^2+p.^2+0.1);
mesh(o,p,i)
% Hubiera dado igual si hubieramos escrito:
figure(10)
[O,P]=meshgrid(-10:0.5:10);
I=sin(sqrt(o.^2+p.^2))./sqrt(o.^2+p.^2+0.1);
mesh(O,P,I)
% Grafica de la superficies
% Es similar que la grafica de malla, pero aqui se rellenan los
espacios
% entre lineas. La orden que usamos es surf con los mismo argumentos
que
% para mesh
figure(11)
surf(o,p,i)
% Las graficas de contorno en 2-D y en 3-D se generan usando
% respectivamente las funciones contour y contour3.
figure(12)
contour(o,p,i) % Dibuja las lineas de contorno
% La funcion pcolor transforma la altura a un conjunto de colores

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

% hipermatriz de celdas se haria de forma similar


cell(2,3) % crea una matriz de celdas vacias
celldisp(c) % escribe el contenido de las celdas de c
cellplot(c) % representa graficamente como son las celdas de c
iscell(c)
A=eye(3,2);
num2cell(A)
disp('end')
%*****OPERACIONES RELACIONES Y LOGICAS************
% Como entradas a las expresiones relacionadas y logicas, Matlab
considera
% que cero es falso y que cualquier numero distinto de cero es
verdadero.
% La salida de expresiones de este tipo produce 1 si es verdadero y 0
si es
% falso
% OPERADORES RELACIONALES
% <
menor que
% <=
menor o igual que
% >
mayor que
% >=
mayor o igual que
% =
igual a
% ~=
distinto de
% OPERADORES LOGICOS
% &
y
% |
o
% ~
no
x=5;
y=1;
x<y
% Como matriz
X=1:5;
Y=X-4;
X<Y
% Nota comparacion falsa para los primeros cuatro, no para el ultimo
% Ejemplo 2: Operadores logicos and, not y or(&,~,|)
a=[1 2 3 4 5];
b=[-2 0 2 4 6];
d=[8 8 8 8 8];
d>a & d>b
a>b | a>d
% Ademas de los operadores relacionales y logicos basicos anteriores,
% matlab proporciona una serio de funciones relacionales y logicas
% adicionales que incluyen:
% xor(x,y) operaciones "o" exculsiva, 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 algun 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 respues
por
% cada columna
% exist('x') devuelve 1 su existe y 0 si no existe
% isnan(x) devuelve unos en magnitudes no numericas (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 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:
%
%
%
%
%
%
%

Orden de precedencia de operadores


1
2
3
4
5

.'.'
*/.*./.
+-~+(unario)-(unario)
:><>=<===~=
|&

q=1:9;w=5-q; % definimos dos vectores


r1=q<6 % pregunta si q es menor que 6, devuelve 1 cuando es verdadero
y 0 cuando es falso
r2=q==w % pregunta si q es igual a w, devuelve 1 cuando es verdadero
y 0 cuando es falso
r3=q~=w % pregunta si q es distinto a w, devuelve 1 cuando es
verdadero y 0 cuando es falso
r4=(q>w)&(w>-3) % pregunta si q>w y w>-3, devuelve 1 cuando es
verdadero y 0 cuando es falso
e=[Inf 0 5 -8 NaN 94];
exist('e') % pregunta si existe alguna variable llamada e
isnan(e) % pregunta cuando e es NaN, devuelve 1 cuando es verdadero y
0 cuando es falso
isinf(e) % pregunta cuando e es Inf, devuelve 1 cuando es verdadero y
0 cuando es falso
isfinite(e) % pregunta cuando e es finito, devuelvo 1 cuando es
verdadero y 0 cuando es falso
%***********SENTENCIA FOR*******************
% Un bloque for en cada iteracion asigna a la variable la columna iesima
% de la expresion y ejecuta las ordenes. En la practica las
expresiones
% suelen ser del tipo escalar: escalar en cuyo caso las columnas son
% escalares
disp('Sentencia for')
for t=1:5
disp('t toma el valor') % escribe por pantalla el texto que se
indica entre comillas
disp(t)
% escribe el valor de la variable t
end
% Sentencia While
% Un bloque while ejecuta las ordenes mientras todos los elementos de
la
% expresion sean verdaderos
disp('Sentecia while')
r=3;
while r<5
disp('r es menor que 5 ya que vale')
disp(r)

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

% sentencias if, while y for


disp('Estos son los numeros 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

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)

minimo de cada columna


intercuartilico de cada columna
3 9 2 7 5 1 5 5 1 8];
de frecuencias generando a partir de una serie
de cada columna (diferencia entre el maximo y

%% ******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

% un vector de dos elementos: fplot('nombre',[valor min, valor max]).


disp('EJEMPLOS')
fplot('sin',[-3*pi,3*pi],'c');
ylabel('Funcion seno')
xlabel('Tiende desde -3pi a 3pi')
% Otras caracteristicas
%
% diff('f')
derivada de la funcion respecto a x
% diff('f',t)
derivada parcial de la funcion con respecto a t
% diff('f',n)
derivada n-esima de la funcion respecto a x
% feval('f',a)
evalua la funcion en a
% fminbnd('f',a,b) calcula el minimo de una funcion de una variable
% fzero('f',a)
busca el cero de una funcion unidimensional de f
mas
% proximo al punto a
% quad('f',a,b)
aproxima la integral definida (segun la cuadratura
de
% Simpson)
% trapz(x,y)
integral numerica trapezoidal de la funcion formada
al
% emparejar los puntos de los vectores x e y
%
% (f funcion, n numero natural, a y b valores numericos, 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
% unar: ode15s, ode23s, ode23t u ode23tb, si por el contrario se trata
de
% un problema sin rigidez: ode113, ode 23 y ode45. Para saber mas de
estas
% funciones consultar la ayuda de Matlab.
disp(' ')
disp('EJEMPLOS')
syms x;syms y;
h= sin(7*x);
q=diff(h)% derivada respecto a x
w=exp(x)*cos(3*x*y);
a=diff(w,y)
% derivada parcial respecto a y
f= sin(x.^2);
df=diff(f,2)
% segunda derivada con respecto a x
g=cos(3*x.^4)+tan(x);
d1=diff(g,3)
% tercera derivada
g1=sec(0235*x);
d2=diff(g1)
% derivada
g2=cos(x.^y);
d3=diff(g2,y)
% derivada en funcion de y
% - El comando diff tiene distintos parametros por ejemplo: diff(S) o
diff(S,var).
% - S puede ser una expresion simbolica completa o el nombre de una
% expresion sumbolica existente.
% - En el comando diff(S), si la expresion contiene una sola variable
% simbolica, el calculo se llevara a cabo con respecto a esa variable.
Si
% la expresion contiene mas de una variable, el caculo se llevara a
cabo
% con respecto a la variable simbolica por defecto.
% - El comando diff(S,var) se utiliza para el calcular la derivada de
una

% expresion con mas de una variable simbolica.


% - Las segundas derivadas ( y otras de mayor orden) se pueden
calcular
% mediante la sintaxis diff(S,n) o diff(S,var,n), donde n es un numero
% positivo
% - Es posible utilizar tambien el comnado diff introduciendo la
ecuacion
% que se va a derivar en forma de cadena, aunque se recuerda, al igual
que
% en los comandos vistos anteriormente, que las variables simbolicas
% contenidas en la cadena se utilizan solo para el calculo, y no
podran ser
% utilizadas posteriormente como variable simbolicas independientes.
% - Note que, aunque el resultados de la derivacion pareza ser un
numero,
% es una variable simbolica. Con la finalidad de usarla en el calculo
de
% Matlab, necesitara convertirla a un numero punto flotante de
precision
% doble.
disp(' ')
disp('EJEMPLOS')
f1=sin(5*x);
diff(f1)
f2=exp(x)*cos(x)-exp(x)*sin(x);
diff(f2,2)
diff(diff(f2))
%% ***INTEGRACION CON CALCULO O CALCULO DE PRIMITIVAS********
% El calculo de primitivas con Matlab es muy sencillo. La integracions
se
% lleva utilizando el comando int, empleando las sintaxis
%
int(S) o int(S,var)
% - S puede ser una expresion simbolica o el nombre de una expresion
% simbolica
% - En el comando int(S), si la expresion contiene una unica variable
% simbolica, el calculo se llevara a cabo con respecto a esa variable.
Si
% la expresion contiene mas de una variable, la integracion se
realizara
% con respecto a la variable simbolica por defecto (x).
% - En el comando int(S,var), la integracion se realizara con respecto
a la
% variable var. Esta sintaxis se utiliza para integrar expresiones con
mas
% de una variable simbolica.
% Del mismo modo que la derivacion, la integracion se puede extender a
% vectores y matrices.
disp(' ')
disp('EJEMPLO DE INTEGRALES')
s=2*cos(x)-6*x;
int(s)
% Matlab no incluye la constante de integracion que se debe tener en
cuenta
% en el calculo de primitivas
s1=(sqrt(cos(x)))-2.^x;
int(s1)
s2=cos(sqrt((2*x)/1-x));
int(s2)

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

% triangulo T de vertices A(2,0),B(4,2) y C(0,2), se pide:


% - Representar la superficie en un rectangulo que contenga al
triangulo T
% - Calcular los extremos de f y determinar cuales 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. Cual es el valor maximo y minimo que toma la funcion
sobre este segmento?
% - Representar en el dominio el segmento que une los puntos B y C y
su
% imagen por f. Cual es el valor maximo y minimo que toma la funcion
sobre este segmento?
% - Representar en el dominio el segmento que une los puntos C y A y
su
% imagen por f. Cua es el valor maximo y minimo que toma la funcion
sobre este segmento?
% Cual es el valor maximo y minimo que toma la funcion f si se
considera como dominio el triangulo T?
disp('Solucion')
% Literal A
figure(3)
[X,Y]=meshgrid(0:.25:4,0:0.25:3);
Z=(X.^2).*Y+Y.^2-4*X.*Y+2*Y+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=x3.^2*y3+y3.^2-4*x3*y3+2*y3+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=(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

% terminar las iteraciones.


% Estos metodos son auto-correctivos. La precision de la respuesta
esta
% dada por la distancia entre el ultimo valor calculado y la respuesta
% esperada. Esto constituye el error de truncamiento.
% El siguiente grafico describe la estructura de un metodo iterativo

%
%
%
%

Valor anterior----> Formula iterativa---->Valore mejorado


|
|
|________________________________________|
Iteracion

% Cada ciclo se denomina iteracion. Si la formula converge, en cada


% iteracion la respuesta estara mas cerca del resultado buscado.
Aunque en
% general .
% Ejempl: Instrumentar un metodo iterativo para calcular la raiz
cuadrada
% de r de un numero real positivo n mediante operaciones basicas
% Metodo numerico
% Se usara una formula que recibe un valor para la raiz cuadrada y
produce
% un valor mas cercano a la respuesta. Si se usa repetidamente la
formula
% cada resultado tendere a un valor final que suponemos es la
respuesta
% buscada. La obtencion de estas formulas se realizara posteriormente
% Sean:
% x: valor estimado para la raiz r
% formula iterativa: y=(1/2)*(x+n/x)
%
%
%
%
%
%
%
%
%

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

% Calcular r=sqrt(7) con la formula anterior


% Usaremos x=3 como valor inicial
format long
n1=7;
x4=3;
y=0.5*(x4+n1/x4)
x4=y;
y=0.5*(x4+n1/x4)
x4=y;
y=0.5*(x4+n1/x4)
x4=y;
y=0.5*(x4+n1/x4)
x4=y;
y=0.5*(x4+n1/x4)
x4=y;
y=0.5*(x4+n1/x4)

x4=y;
y=0.5*(x4+n1/x4)