Ejercicio 2
Velocidad del viento y potencia de un aerogenerador
Contents
Apartado a: Histograma de la velocidad del viento
[NUM TXT RAW]=xlsread('sotaventogaliciaanual.xlsx'); figure('Name','Histograma de la velocidad del viento') histogram(NUM) %NUM contiene los valores de velocidad del viento title('Histograma de la velocidad del viento') grid on xlim([0 25]) %Límitamos el histograma a valores en el intervalo [0,25]
Apartado b: Distribución de Weibull de la velocidad del viento
x=0.5:1:max(NUM); A=hist(NUM,x); k=mean(NUM); %Media aritmética de las velocidades del viento c=std(NUM); %Desviación estándar de las velocidades del viento c=c^2; a0=[k c]; frec=A/sum(A); %Hallamos las frecuencias f=@(a,x) (a(1)/a(2))*((x/a(2)).^(a(1)-1)).*exp(-(x/a(2)).^a(1)); af=nlinfit(x,frec,f,a0); yweib=f(af,x); figure('Name','Histograma y ajuste a distribución de Weibur de las velocidades del viento') bar(x,frec,'c') xlim([0 25]) hold on grid on plot(x,yweib,'r') title('Distribución de Weibull de la velocidad del viento')
Apartado c: Interpolación de la curva de potencia mediante un polinomio cúbico
[POW TXT RAW]=xlsread('sotavento_curva potencia.xlsx'); figure('Name','Curva de potencia del generador') plot(POW(:,1),POW(:,2),'*-','DisplayName','Valores de la tabla') title('Ajuste de la curva de potencia de un generador') xlabel('Velocidad del viento (m/s)') ylabel('Potencia (MW)') grid on hold on x=0:0.01:25; plot(x,pchip(POW(:,1),POW(:,2),x),'DisplayName','Interpolada') legend('Location','northwest') legend show
Apartado d: Potencia media (Obtenida mediante integración)
Pr=1300; x0=3;xr=20;x1=25; %datos de la curva de potencia k=af(1); c=af(2); %parámetros de ajuste de la función de Weibull potencia=POW(:,2); x=0:1:25; pot=potencia(x>=x0 & x<=xr); hold on x=x0:1:xr; figure('Name','Ajuste de la curva de potencia mediante polyfit') plot(x,pot,'ro','markersize',3,'markerfacecolor','r') grid on hold on title('Ajuste de la curva de potencia de un aerogenerador'); axis([0 15 -10 1550]) xlabel('velocidad') ylabel('potencia') grid on %Ajuste p=polyfit(x,pot',3); %Ajuste a un polinomio de tercer grado yp=polyval(p,x); plot(x,yp,'k') hold off %Cálculo de la potencia media f=@(x) (k/c)*((x/c).^(k-1)).*exp(-(x/c).^k); %Función de Weibull h=@(x) f(x).*polyval(p,x); power=quad(h,x0,xr)+Pr*quad(f,xr,x1); fprintf('La potencia media es: %3.1f\n',power)
La potencia media es: 203.4