Contents

Ejercicio 1

%Imprimir una tabla formateada (entero, real 4d, real 6d) del logaritmo natural y logaritmo
% decimal de los siguientes números: 10, 20, 40, 60, 80, 100.
% Nota: Usar el comando fprintf y vectores
x=[10;20;40;60;80;100];
y=[x,log(x),log10(x)];

fprintf('\n Numero \t ln(Numero) \t log(Numero) \n')
fprintf('\t%4i\t\t%8.4f\t\t%8.6f\n',y')
 Numero 	 ln(Numero) 	 log(Numero) 
	  10		  2.3026		1.000000
	  20		  2.9957		1.301030
	  40		  3.6889		1.602060
	  60		  4.0943		1.778151
	  80		  4.3820		1.903090
	 100		  4.6052		2.000000

Ejercicio 2

%Programa que invoca una función y devuelve el imc de una persona.
% function [ v m ] = imcdef(p,e)
%
% v = p / (e^2);
%
% if ( v<16 )
%     m='Infrapeso: Delgadez Severa';
% elseif ( v<17 )
%     m='Infrapeso: Delgadez Moderada';
% elseif ( v<18.5 )
%     m='Infrapeso: Delgadez Aceptable';
% elseif ( v<25 )
%      m='Peso normal';
% elseif ( v<30)
%      m='Sobrepeso';
% elseif ( v<35)
%      m='Obeso: Tipo I';
% elseif ( v<40 )
%      m='Obeso: Tipo II';
% else
%      m='Obeso: Tipo III';
% end
%
% end

c=1;
while c==1
	p= str2double(inputdlg('Ingrese el peso en kg: '));
	e= str2double(inputdlg('Ingrese estatura en m: '));
	[v m]=imcdef(p,e);
	fprintf('%.3f Su medico dice: %s\n',v,m)
	c=str2double(inputdlg('¿Desea continuar? Sí(1)/No(0). '));
end
22.498 Su medico dice: Peso normal

Ejercicio 3

%Imprimimos una tabla de números en base decimal y otra tabla equivalente,
%pero en otra base:
% function cambio_base(n,b)
%     basecad = '0123456789abcdef';
%     if (n>=b)
%         cambio_base(floor(n/b),b);
%     end
%     fprintf('%c',basecad(mod(n,b)+1))
%
% end

n=2:128;
b=16;
for i=1:128
    fprintf('%5d \t ',i)
    cambio_base(i,b)
    fprintf('\n')
end
    1 	 1
    2 	 2
    3 	 3
    4 	 4
    5 	 5
    6 	 6
    7 	 7
    8 	 8
    9 	 9
   10 	 a
   11 	 b
   12 	 c
   13 	 d
   14 	 e
   15 	 f
   16 	 10
   17 	 11
   18 	 12
   19 	 13
   20 	 14
   21 	 15
   22 	 16
   23 	 17
   24 	 18
   25 	 19
   26 	 1a
   27 	 1b
   28 	 1c
   29 	 1d
   30 	 1e
   31 	 1f
   32 	 20
   33 	 21
   34 	 22
   35 	 23
   36 	 24
   37 	 25
   38 	 26
   39 	 27
   40 	 28
   41 	 29
   42 	 2a
   43 	 2b
   44 	 2c
   45 	 2d
   46 	 2e
   47 	 2f
   48 	 30
   49 	 31
   50 	 32
   51 	 33
   52 	 34
   53 	 35
   54 	 36
   55 	 37
   56 	 38
   57 	 39
   58 	 3a
   59 	 3b
   60 	 3c
   61 	 3d
   62 	 3e
   63 	 3f
   64 	 40
   65 	 41
   66 	 42
   67 	 43
   68 	 44
   69 	 45
   70 	 46
   71 	 47
   72 	 48
   73 	 49
   74 	 4a
   75 	 4b
   76 	 4c
   77 	 4d
   78 	 4e
   79 	 4f
   80 	 50
   81 	 51
   82 	 52
   83 	 53
   84 	 54
   85 	 55
   86 	 56
   87 	 57
   88 	 58
   89 	 59
   90 	 5a
   91 	 5b
   92 	 5c
   93 	 5d
   94 	 5e
   95 	 5f
   96 	 60
   97 	 61
   98 	 62
   99 	 63
  100 	 64
  101 	 65
  102 	 66
  103 	 67
  104 	 68
  105 	 69
  106 	 6a
  107 	 6b
  108 	 6c
  109 	 6d
  110 	 6e
  111 	 6f
  112 	 70
  113 	 71
  114 	 72
  115 	 73
  116 	 74
  117 	 75
  118 	 76
  119 	 77
  120 	 78
  121 	 79
  122 	 7a
  123 	 7b
  124 	 7c
  125 	 7d
  126 	 7e
  127 	 7f
  128 	 80

Ejercicio 4

%Desarrollar una función Newton para aproximar una raíz real de una función mediante
%el método de Newton

% function y=funcion()
% syms x
% f=x^3-sin(x);
% df=diff(f);
% y=[f df];
% end

% function newton(f,df,x0,tol)
% syms x
% i=1;
% fx(i)=x0;
% f1=subs(f,x,fx(i));
% d=subs(df,x,fx(i));
%
% e(1)=100;
% while abs(e(i))>=tol
%     fx(i+1)=fx(i)-f1/d;
%     f1=subs(f,x,fx(i+1));
%     d=subs(df,x,fx(i+1));
%     e(i+1)=abs(fx(i+1)-fx(i));
%     i=i+1;
% end
% fprintf('\n i \t   fx(i) \t   Error aproximado (i) \n');
% for j=1:i
%     fprintf('%2i \t %11.5f \t %7.3f \n',j,fx(j),e(j));
% end
% end

fprintf('\nEjercicio 4')
y=funcion();
f=y(1);
df=y(2);
tol=inputdlg('Introduzca la tolerancia: ');
tol=str2double(tol);
newton(f,df,-0.75,tol)
newton(f,df,-0.5,tol)
newton(f,df,0,tol)
newton(f,df,0.5,tol)
newton(f,df,1.4,tol)
Ejercicio 4
 i 	   fx(i) 	   Error aproximado (i) 
 1 	    -0.75000 	 100.000 
 2 	    -1.02177 	   0.272 
 3 	    -0.93990 	   0.082 
 4 	    -0.92882 	   0.011 
 5 	    -0.92863 	   0.000 

 i 	   fx(i) 	   Error aproximado (i) 
 1 	    -0.50000 	 100.000 
 2 	     2.27801 	   2.778 
 3 	     1.59597 	   0.682 
 4 	     1.19612 	   0.400 
 5 	     0.99728 	   0.199 
 6 	     0.93507 	   0.062 
 7 	     0.92869 	   0.006 

 i 	   fx(i) 	   Error aproximado (i) 
 1 	     0.00000 	 100.000 
 2 	     0.00000 	   0.000 

 i 	   fx(i) 	   Error aproximado (i) 
 1 	     0.50000 	 100.000 
 2 	    -2.27801 	   2.778 
 3 	    -1.59597 	   0.682 
 4 	    -1.19612 	   0.400 
 5 	    -0.99728 	   0.199 
 6 	    -0.93507 	   0.062 
 7 	    -0.92869 	   0.006 

 i 	   fx(i) 	   Error aproximado (i) 
 1 	     1.40000 	 100.000 
 2 	     1.09202 	   0.308 
 3 	     0.95898 	   0.133 
 4 	     0.93000 	   0.029 
 5 	     0.92863 	   0.001 

Ejercicio 5

%Resolver el sistema de ecuaciones expresado matricialmente de la hoja
A=[100 zeros(1,3) -1 1 0;0 200 zeros(1,3) -1 1;0 0 50 0 -1 0 0;zeros(1,3) 100 0 -1 0;0 300 zeros(1,4) -1; 1 0 1 zeros(1,4);1 -1 0 -1 zeros(1,3)];
b=[0 0 -50 -50 -50 25 0]';
x=A\b
x =

   1.0e+03 *

    0.0054
    0.0009
    0.0196
    0.0045
    1.0321
    0.4964
    0.3179

Ejercicio 6

%Para la matriz de coeficientes anterior hallar el número de condición, las normas 1,2, Inf y frobenius, la factorización LU
A=[100 zeros(1,3) -1 1 0;0 200 zeros(1,3) -1 1;0 0 50 0 -1 0 0;zeros(1,3) 100 0 -1 0;0 300 zeros(1,4) -1; 1 0 1 zeros(1,4);1 -1 0 -1 zeros(1,3)];
b=[0 0 -50 -50 -50 25 0]';
n=cond(A)
n1=norm(A,1)
n2=norm(A,2)
ninf=norm(A,Inf)
nfrob=sqrt(trace(A'*A))
[L U]=lu(A)
C=L*U
%Resolvemos el sistema:
X=inv(U)*inv(L)*b
n =

   2.6488e+04


n1 =

   501


n2 =

  360.5570


ninf =

   301


nfrob =

  390.5278


L =

    1.0000         0         0         0         0         0         0
         0    0.6667         0         0         0    1.0000         0
         0         0    1.0000         0         0         0         0
         0         0         0    1.0000         0         0         0
         0    1.0000         0         0         0         0         0
    0.0100         0    0.0200         0    1.0000         0         0
    0.0100   -0.0033         0   -0.0100    0.3333    0.0167    1.0000


U =

  100.0000         0         0         0   -1.0000    1.0000         0
         0  300.0000         0         0         0         0   -1.0000
         0         0   50.0000         0   -1.0000         0         0
         0         0         0  100.0000         0   -1.0000         0
         0         0         0         0    0.0300   -0.0100         0
         0         0         0         0         0   -1.0000    1.6667
         0         0         0         0         0         0   -0.0311


C =

  100.0000         0         0         0   -1.0000    1.0000         0
         0  200.0000         0         0         0   -1.0000    1.0000
         0         0   50.0000         0   -1.0000         0         0
         0         0         0  100.0000         0   -1.0000         0
         0  300.0000         0         0         0         0   -1.0000
    1.0000         0    1.0000         0         0         0         0
    1.0000   -1.0000         0   -1.0000         0         0         0


X =

   1.0e+03 *

    0.0054
    0.0009
    0.0196
    0.0045
    1.0321
    0.4964
    0.3179

Ejercicio 7

Hallamos los autovalores y autovectores de la matriz A:
A=[0 1 -1;-6 -11 6;-6 -11 5];
[X,D]=eig(A);
fprintf('\n Autovectores (Columnas de la matriz)\n')
X(:,1)
fprintf('\n Autovalores (Diagonal)\n')
 Autovectores (Columnas de la matriz)

ans =

    0.7071
    0.0000
    0.7071


 Autovalores (Diagonal)

Ejercicio 8

Para el circuito de la hoja, determinamos los voltajes de los nodos V1 y V2 y la potencia entregada por cada fuente

Y=[1.5-2j -.35+1.2j;-.35+1.2j 0.9-1.6j];
I=[30+40j;20+15j]
V=Y\I
S=V.*conj(I)
I =

  30.0000 +40.0000i
  20.0000 +15.0000i


V =

   3.5902 +35.0928i
   6.0155 +36.2212i


S =

   1.0e+03 *

   1.5114 + 0.9092i
   0.6636 + 0.6342i

Ejercicio 9

%Desarrollar una función mediante una interpolación de Lagrange y otra
%serie de métodos

f= @(x) 1./(1+25*x.^2);
x=linspace(-1,1,500);
y_true=f(x);
figure;
plot(x,y_true,'r','linewidth',1);
hold on;
N=10;
xint=linspace(-1,1,N);
yint=zeros(1,N);
y=f(xint);
n1=length(x);
for i=1:n1
    yint(i)=LagrangeINT(xint,y,x(i));
end
plot(x,yint,'k')
hold on;
N=10;
xdata=linspace(-1,1,N)';
ydata=f(xdata);
p=polyfit(xdata,ydata,N-1);
y_fit=polyval(p,x);
poly_10=plot(x,y_fit,'b','linewidth',1);
hold on;
plot(xdata,ydata,'k','markersize',12);
hold on;
N=20;
xdata=linspace(-1,1,N)';
ydata=f(xdata);
p=polyfit(xdata,ydata,N-1);
y_fit=polyval(p,x);
poly_20=plot(x,y_fit,'g','linewidth',1);
hold on;
axis([-1 1 -5 5]);
lh=legend([poly_10,poly_20],{'N = 10','N = 20'});
set(lh,'fontsize',10);
hold off;

Ejercicio 10

%A partir de los datos del viento de un fichero excel (winddata),
%obetener una serie de gráficos
date=xlsread('winddata','Hoja1','A2:A78877');
time=xlsread('winddata','Hoja1','B2:B78877');
dir=xlsread('winddata','Hoja1','C2:C78877');
speed=xlsread('winddata','Hoja1','D2:D78877');
[xds,yds]=datastats(time,dir)
[xds,yds]=datastats(time,speed)
%
hist(time,25)
hold on;
xlabel('Rango (Tiempo)','FontSize',11);
ylabel('Número de vientos','FontSize',11);
hold off;
%
t=pi/180;
hist(dir*t,36)
hold on;
xlabel('Rango (Direccion)','FontSize',11);
ylabel('Número de vientos','FontSize',11);
hold off;
xds = 

       num: 78876
       max: 24
       min: 1
      mean: 12.5009
    median: 13
     range: 23
       std: 6.9222


yds = 

       num: 78876
       max: 990
       min: 0
      mean: 195.4474
    median: 200
     range: 990
       std: 96.1384


xds = 

       num: 78876
       max: 24
       min: 1
      mean: 12.5009
    median: 13
     range: 23
       std: 6.9222


yds = 

       num: 78876
       max: 22.8000
       min: 0
      mean: 6.2293
    median: 5.7000
     range: 22.8000
       std: 3.0272

Ejercicio 11

Grafica de la curva de la hoja
[x,y]=meshgrid(-4:0.3:4);
z=sin(x).*cos(y).*exp(-(x.^2+y.^2).^0.5);
mesh(x,y,z)

Ejercicio 12

Resolvemos la ec. diferencial de la hoja function y = HalfSine(t, y, z) h = sin(pi*t/5).*(t<=5); y = [y(2); -2*z*y(2)-y(1)+h];

ej_ode
[t, yy] = ode45(@HalfSine, [0 35], [1 0], [ ], 0.15);
plot(t, yy(:,1))

Ejercicio 13

Tomando como base las condiciones del ejemplo de la transformada de Fourier de los apuntes (pág. 124), graficamos para las siguientes señales la gráfica de la señal en el tiempo y la gráfica de la amplitud espectral en función de la frecuencia (Mirar hoja)

k = 5; m = 10; fo = 10;Bo = 2.5; N = 2^m; T = 2^k/fo;
ts = (0:N-1)*T/N; df = (0:N/2-1)/T;

g1 = Bo*sin(2*pi*fo*ts)+Bo/2*sin(2*pi*fo*2*ts);
An1 = abs(fft(g1, N))/N;
plot(df, 2*An1(1:N/2))

g2 = exp(-2*ts).*sin(2*pi*fo*ts);
An2 = abs(fft(g2, N))/N;
plot(df, 2*An2(1:N/2))

g3 = sin(2*pi*fo*ts+5*sin(2*pi*(fo/10)*ts));
An3 = abs(fft(g3, N))/N;
plot(df, 2*An3(1:N/2))

g4 = sin(2*pi*fo*ts-5*exp(-2*ts));
An4 = abs(fft(g4, N))/N;
plot(df, 2*An4(1:N/2))

Ejercicio 14

Grafica de la función de la hoja curva en coordenadas polares
theta = linspace(-pi, pi, 300);
p = abs(besselj(2, -4*cos(theta)));
polar(theta, p/max(p))

Ejercicio 15

%Ejercicio para obtener una serie de parámetros definidos mediante
%ecuaciones no lineales, de una catenaria
syms T
f=inline('15-((T/10)*cosh((10/T)*50)+5-(T/10))');
solve(f)
%Comprobación
f(ans)
%
g=inline('(2*1266.32/10)*sinh(20*x/1266.32)');
g(150)
%
f=inline('15-((T./10).*cosh((10./T)*50)+5-(T./10))');
T=linspace(-50,100,100);
y=f(T);
plot(T,y,'k','markersize',12)
 
ans =
 
1266.324360399888280635385997007
 
 
ans =
 
0.0
 

ans =

   1.3415e+03

%Trabajo realizado por: Alfonso de Lama Rojo
% 3/1/2018
% Confirmo que este trabajo es de elaboración propia.