Contents

Ejercicio 1

x = [10 20 40 60 80]';
y = [x log(x)]';
fprintf('Numero\tln(Numero) \n')
fprintf('%5d \t %.4f\n', y)
Numero	ln(Numero) 
   10 	 2.3026
   20 	 2.9957
   40 	 3.6889
   60 	 4.0943
   80 	 4.3820

Ejercicio 2

prompt1='Introduzca su peso en kg: ';
prompt2='Introduzca su altura en metros: ';
dlg_title='Cálculo del IMC';
peso=str2double(inputdlg(prompt1,dlg_title))
altura=str2double(inputdlg(prompt2,dlg_title))
imc=peso/altura^2;
if imc<16
    disp(['Su IMC es: ' num2str(imc) '. Infrapeso: delgadez extrema'])
elseif imc<16.99
    disp(['Su IMC es: ' num2str(imc) '. Infrapeso: delgadez moderada'])
elseif imc<18.49
    disp(['Su IMC es: ' num2str(imc) '. Infrapeso: delgadez aceptable'])
elseif imc<24.99
    disp(['Su IMC es: ' num2str(imc) '. Peso normal'])
elseif imc<29.99
    disp(['Su IMC es: ' num2str(imc) '. Sobrepeso'])
elseif imc<34.99
    disp(['Su IMC es: ' num2str(imc) '. Obeso: Tipo I'])
elseif imc<40
    disp(['Su IMC es: ' num2str(imc) '. Obeso: Tipo II'])
elseif imc>40
    disp(['Su IMC es: ' num2str(imc) '. Obeso: Tipo III'])
end
peso =

    75


altura =

    1.8000

Su IMC es: 23.1481. Peso normal

Ejercicio 3

Cambiamos el número 15 en base decimal a base hexadecimal:

cambia_base(15,16)
f 

Funcion usada para este ejercicio:

% function cambia_base(n,b)
%     basecad = '0123456789abcdef';
%     if (n>=b)
%         cambia_base(idivide(int64(n),int64(b)),b);
%     end
%     fprintf(basecad(mod(n,b)+1))
%     disp(' ')
% end

Ejercicio 4

Hacemos el caso pedido:

syms x
for i=[-0.75 -0.5 0 0.5 1.4]
    Valor_inicial=i
    sol=double(Ej4fun(x^3-sin(x),i,0.01))
end



% Funcion usada para este ejercicio:

% function [Xn]=Ej4fun(fun,Xn,tol)
% syms x
% der = diff(fun,x);
% error = 1;
% tolerancia = tol;
%     while error>=tolerancia
%          X1 = Xn - (subs(fun,Xn)/subs(der,Xn));
%          error = abs((X1-Xn)/X1);
%          Xn=X1;
%     end
% end
Valor_inicial =

   -0.7500


sol =

   -0.9286


Valor_inicial =

   -0.5000


sol =

    0.9287


Valor_inicial =

     0


sol =

     0


Valor_inicial =

    0.5000


sol =

   -0.9287


Valor_inicial =

    1.4000


sol =

    0.9286

Ejercicio 5

R1=100;R2=200;R3=50;R4=100;R5=300;Ta=50;Qc=25;
A=[R1 0 0 0 -1 1 0;0 R2 0 0 0 -1 1;0 0 R3 0 -1 0 0; 0 0 0 R4 0 -1 0; 0 R5 0 0 0 0 -1; 1 0 1 0 0 0 0; 1 -1 0 -1 0 0 0]
b=[0 0 -Ta -Ta -Ta Qc 0]'
sol=A\b;

fprintf('Q1\t\t Q2\t\t Q3\t\t Q4\t\t Tc\t\t Tp\t\t Tw\t\t \n')
fprintf('%5d \t %5d \t %5d \t %5d \t %5d \t %5d \t %.4f\n', sol')
A =

   100     0     0     0    -1     1     0
     0   200     0     0     0    -1     1
     0     0    50     0    -1     0     0
     0     0     0   100     0    -1     0
     0   300     0     0     0     0    -1
     1     0     1     0     0     0     0
     1    -1     0    -1     0     0     0


b =

     0
     0
   -50
   -50
   -50
    25
     0

Q1		 Q2		 Q3		 Q4		 Tc		 Tp		 Tw		 
5.357143e+00 	 8.928571e-01 	 1.964286e+01 	 4.464286e+00 	 1.032143e+03 	 4.964286e+02 	 317.8571

Ejercicio 6

R1=100;R2=200;R3=50;R4=100;R5=300;Ta=50;Qc=25;
A=[R1 0 0 0 -1 1 0;0 R2 0 0 0 -1 1;0 0 R3 0 -1 0 0; 0 0 0 R4 0 -1 0; 0 R5 0 0 0 0 -1; 1 0 1 0 0 0 0; 1 -1 0 -1 0 0 0];
b=[0 0 -Ta -Ta -Ta Qc 0]';
fprintf('La matriz solución es:\n')
sol=A\b
fprintf('Con la matriz solución hacemos la condición:\n\n')
disp(['La condición de la matriz es ' num2str(cond(sol))])
fprintf('\nTambién hacemos la norma 1:\n')
norma_1=norm(sol,1)
fprintf('La norma 2:\n')
norma_2=norm(sol,2)
fprintf('La norma inf:\n')
norma_inf=norm(sol,inf)
fprintf('La norma Frobenius:\n')
norma_fro=norm(sol,'fro')

fprintf('Posteriormente hacemos la factorización LU:\n\n')
[L,U]=lu(A)
fprintf('Por último, hacemos la comprobación:\n')
sol_lu=inv(U)*inv(L)*b
La matriz solución es:

sol =

   1.0e+03 *

    0.0054
    0.0009
    0.0196
    0.0045
    1.0321
    0.4964
    0.3179

Con la matriz solución hacemos la condición:

La condición de la matriz es 1

También hacemos la norma 1:

norma_1 =

   1.8768e+03

La norma 2:

norma_2 =

   1.1888e+03

La norma inf:

norma_inf =

   1.0321e+03

La norma Frobenius:

norma_fro =

   1.1888e+03

Posteriormente hacemos la factorización LU:


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

Por último, hacemos la comprobación:

sol_lu =

   1.0e+03 *

    0.0054
    0.0009
    0.0196
    0.0045
    1.0321
    0.4964
    0.3179

Ejercicio 7

fprintf('Hallamos los autovalores y autovectores de la siguiente matriz:\n')
A=[0 1 -1;-6 -11 6;-6 -11 5]
[vectores valores] = eig(A)
fprintf('Ante las dos matrices anteriores, la primera de ellas contiene\nlos vectores propios en forma de columna, mientras que la segunda matriz "valores"\nalmacena en la diagonal principal los valores propios correspondientes a cada columna de la matriz "vectores"')
Hallamos los autovalores y autovectores de la siguiente matriz:

A =

     0     1    -1
    -6   -11     6
    -6   -11     5


vectores =

    0.7071   -0.2182   -0.0921
    0.0000   -0.4364   -0.5523
    0.7071   -0.8729   -0.8285


valores =

   -1.0000         0         0
         0   -2.0000         0
         0         0   -3.0000

Ante las dos matrices anteriores, la primera de ellas contiene
los vectores propios en forma de columna, mientras que la segunda matriz "valores"
almacena en la diagonal principal los valores propios correspondientes a cada columna de la matriz "vectores"

Ejercicio 8

fprintf('Las tensiones V1 y V2 son: \n\n')
A=[1.5-2*i -.35+1.2*i;-.35+1.2*i 0.9-1.6*i];
b=[20+40*i; 20+15*i];
sol=A\b;
fprintf('V1\t\t V2 \n')
fprintf('%5d \t %.4f\n', sol)
fprintf('\n La potencia generada por la fuente de la izquierda es de: \n')
S_izq=sol(1)*30+40*i
fprintf('La potencia generada por al fuente de la derecha es de: \n')
S_der=sol(2)*20+15*i
Las tensiones V1 y V2 son: 

V1		 V2 
5.813011e+03 	 5739.0335

 La potencia generada por la fuente de la izquierda es de: 

S_izq =

   1.7445e+05

La potencia generada por al fuente de la derecha es de: 

S_der =

   1.1480e+05

Ejercicio 9

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+1);
yint=zeros(1,n1);
y=f(xint);
n1=length(x);
for i=1:n1
    yint(i)=Lagrange(xint,y,x(i));
end
plot(x,yint,'k')
hold on

p=polyfit(xdata,ydata,N);
y_fit=polyval(p,x);
poly_10=plot(x,y_fit,'b','linewidth',1);
hold on;
figure
plot(x,y_true,'r','linewidth',1);
hold on
N=20;
xdata=linspace(-1,1,N+1)';
ydata=f(xdata);
p=polyfit(xdata,ydata,N);
y_fit=polyval(p,x);
poly_20=plot(x,y_fit,'g','linewidth',1);
hold on;
fprintf('\nEn la figura 1 se representan:\nEn rojo la función original.\nEn negro la función aproximada usando Lagrange (10 puntos).\nEn azul, la función aproximada usando polyfit (10 puntos).\n\nEn la figura 2 se observa en rojo la función original y en verde \nla función aproximada usando polyfit con 20 puntos.\n\n ')
% Función de Lagrange usada:

% function Yint=Lagrange(x,y,Xint)
% n=length(x);
% L=ones(1,n);
% Yint=0;
% for i=1:n
%     L(i)=1;
%     for j=1:n
%         if j~=i
%             L(i)=L(i)*(Xint-x(j))/(x(i)-x(j));
%         end
%     end
% end
% Yint=sum(y.*L);
% end
En la figura 1 se representan:
En rojo la función original.
En negro la función aproximada usando Lagrange (10 puntos).
En azul, la función aproximada usando polyfit (10 puntos).

En la figura 2 se observa en rojo la función original y en verde 
la función aproximada usando polyfit con 20 puntos.

 

Ejercicio 10

lista=xlsread('winddata.xlsx');

%Apartado a)
subplot(2,2,1)
plot(lista(:,4))

%Apartado b)
subplot(2,2,2)
n=0:25;
hist(lista(:,4),n);

%Apartado c)
subplot(2,2,3)
n=linspace(0,2*pi,36);
rose(lista(:,4),n);
hold off

Ejercicio 11

x1=-4:0.3:4;
y1=-4:0.3:4;
[x,y]=meshgrid(x1,y1);
figure
surf(x,y,sin(x).*cos(y).*exp(-(x.^2+y.^2).^0.5))

Ejercicio 12

Siguiendo las directrices propuestas en el enunciado, tal y como se propone:

figure
Ejemploode

Las funciones usadas en este ejercicio han sido

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

% function y = HalfSine(t, y, z)
% h = sin(pi*t/5).*(t<=5);
% y = [y(2); -2*z*y(2)-y(1)+h];

Ejercicio 13

Tal y como se muestra en el ejemplo de los apuntes, aquí están representadas otras funciones:

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;
SampledSignal = Bo*sin(2*pi*fo*ts) + Bo/2*sin(2*pi*fo*2*ts);
An = abs(fft(SampledSignal, N))/N;
subplot(2,2,1)
plot(df, 2*An(1:N/2))

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

SampledSignal2 = sin(2*pi*fo*ts + 5*sin(2*pi*fo/10*ts));
An2 = abs(fft(SampledSignal2, N))/N;
subplot(2,2,3)
plot(df, 2*An2(1:N/2))

SampledSignal3 = sin(2*pi*fo*ts - 5*exp(-2*ts));
An3 = abs(fft(SampledSignal3, N))/N;
subplot(2,2,4)
plot(df, 2*An3(1:N/2))

Ejercicio 14

%Simplemente ejecutar
figure
theta = linspace(-pi, pi, 300);
p = 2-4*cos(theta);
polar(theta, p)