Contents

EJERCICIO 1

%Curva Bézier

%Hace uso de las siguientes funciones:

%function b=bernstein(n,i,t)
%    b=combina(n,i)*t.^i.*(1-t).^(n-i);
%end

%function factorial_rec=fact(n)
% if n==0
%     factorial_rec=1
% else
%     factorial_rec=n*fact(n-1)
% end

% function c=combina(n,i)
% c=fact(n)/(fact(i)*fact(n-i));
% end

%apartado 3)
t=linspace(0,1,20);
n=3;
figure(1)
for i=0:3
    b=bernstein(n,i,t);
    hold on
    plot(t,b)
end
legend('b0','b1','b2','b3')
title('Gráfica de polinomios bernstein n=3')

%apartado 4)
t=linspace(0,1,100);
Vx=[1,2,4,4.6];
Vy=[1,3,-1,1.5];
V=[Vx;Vy];
figure(2)
plot(V(1,:),V(2,:),'-o');
title('Polígono de control y curva de Bézier')
n=size(V);
n=n(2);
s=size(t);
x=zeros(n,s(2));
y=zeros(n,s(2));
for i=1:n
    x(i,:)=bernstein(n-1,i-1,t)*V(1,i);
    y(i,:)=bernstein(n-1,i-1,t)*V(2,i);
end
a=sum(x);
b=sum(y);
hold on;
plot(a,b);

EJERCICIO 2

%apartado a)
%histograma de los datos de la velocidad del viento

dt_vel_viento1=xlsread('sotaventogaliciaanual.xlsx');
inter_clase=linspace(0,25,25);
figure(3);
hist(dt_vel_viento1,inter_clase);
xlabel('Velocidad (m/s)');
ylabel('Frecuencia (ni)');
title('Histograma de los datos de la velocidad del viento');

%apartado b)
%histograma de frecuencias y ajuste a una distribución de Weibull

dt_vel_viento2=xlsread('sotaventogaliciaanual.xlsx');

%si fuese necesario interpolar
if any(isnan(dt_vel_viento2)) %condición: si hay algún NaN
    t=1:length(dt_vel_viento2);
    i=find(~isnan(dt_vel_viento2));
    velocidad=interp1(t(i),dt_vel_viento2(i),t);
end
%hacemos el histograma y lo ajustamos a la función de Weibull
x=0.5:1:max(dt_vel_viento2);
tiempo_h=hist(dt_vel_viento2,x);
Fi=tiempo_h/sum(tiempo_h);
f=@(v,x) (v(1)/v(2))*((x/v(2)).^(v(1)-1)).*exp(-(x/v(2)).^v(1));
v0=[2 8];
vf=nlinfit(x,Fi,f,v0);
%dibujamos el diagrama de frecuencias y representamos la curva de ajuste
figure(4)
bar(x,Fi,'r');
hold on;
x=linspace(0,max(dt_vel_viento2),100);
y=f(vf,x);
plot(x,y,'b')
xlabel('Velocidad (m/s)')
ylabel('Frecuencia')
title('Ajuste a la distribución Weibull')
hold off;

%apartado c)
%Interpolar la curva de potencia del generador mediante un
%polinomio cúbico

POT=xlsread('sotavento_curva potencia.xlsx','B2:B27');
Pr=1300; v0=3.0;vr=20;v1=25;v=0:1:25;%datos
pot=POT(v>=v0 & v<=vr);
v=v0:1:vr;
figure(5);
plot(v,pot,'bo','markersize',5,'markerfacecolor','g')
axis([0 20 -15 1400]);
xlabel('Velocidad (m/s)');
ylabel('Potencia (MW)');
title('Ajuste de la curva de potencia de un generador');
hold on;
pol=polyfit(v,pot',3); %ajuste mediante un polinomio cúbico
ypol=polyval(pol,v);
plot(v,ypol,'m')
hold off

%apartado d)
%cálculo de la potencia media
k=2.3849; c=6.0208; %Parámetros de Weibull calculados previamente
%como:k=vf(1), c=vf(2)
f=@(x) (k/c)*((x/c).^(k-1)).*exp(-(x/c).^k); %función de Weibull
h=@(x) f(x).*polyval(pol,x);
pm=quad(h,v0,vr)+Pr*quad(f,vr,v1);
fprintf('Potencia media (MW)=%3.1f\n',pm)
clear all
Potencia media (MW)=203.4

EJERCICIO 3

%Movimiento de un sistema masa-resorte-amortiguador

%función EDO del muelle
% function x=muelle(t,x,c)
% x=[x(2);(-c*x(2)-20*x(1))/20];
% end

figure(6);
[t1, xx1]=ode45(@muelle, [0,40], [1,0],[ ], 5);
plot(t1,xx1(:,1))
hold on
[t2, xx2]=ode45(@muelle, [0,40], [1,0],[ ], 40);
plot(t2,xx2(:,1))
[t3, xx3]=ode45(@muelle, [0,40], [1,0],[ ], 200);
plot(t3,xx3(:,1))
legend('c=5','c=40','c=200');
xlabel('Tiempo (s)');
ylabel('Desplazamiento x(m) ');
title('Desplazamiento del muelle para los distintos coeficientes de amortiguamiento');