Contents

ejercicio 1

%apartado a

% function f=factr(n)
%     if n==0
%         f=1;
%     else
%         f=n*factr(n-1);
%     end
% end

%apartado b
% function f1=combina(n,i)
%    f1=factr(n)/(factr(i)*factr(n-i));
% end

%apartado c
% function f2=bernstein(t,n,i)
%    f2=combina(n,i)*(t.^i).*((1-t).^(n-i));
% end
% apartadod
t=linspace(0,1);
n=3;
for i=0:n;
    f2=bernstein(t,n,i);
    figure(1);plot(t,f2)

    hold on
end
xlabel('t')
    ylabel('polinomio de Bernstein')
    title('polinomio de Bernstein gr3')
    legend('B_3_,_0','B_3_,_1','B_3_,_2','B_3_,_3');


t=linspace(0,1);
V=[1 2 4 4.6;1 3 -1 1.5];
figure(2);plot(V(1,:),V(2,:),'-o')
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(t,n-1,i-1)*V(1,i);
    y(i,:)=bernstein(t,n-1,i-1)*V(2,1);
end
a=sum(x);
b=sum(y);
hold on;
figure(3); plot(a,b);

ejercicio 2

%apartado a
dw=xlsread('sotaventogaliciaanual.xlsx');
nbins=linspace(0,25,25);
figure(3);plot(dw)
figure;
hist(dw,nbins)
%apartado b
dw=xlsread('sotaventogaliciaanual.xlsx');
%interpolar si es necesario
if any(isnan(dw)) %si hay algún NaN
    x=1:length(dw);
    i=find(~isnan(dw));
    velocidad=interp1(x(i),dw(i),x);
end
%histograma
x=0.5:1:max(dw);
horas=hist(dw,x);

%convierte a frecuencias y ajusta a la función de Weibull
frec=horas/sum(horas);
f=@(a,x) (a(1)/a(2))*((x/a(2)).^(a(1)-1)).*exp(-(x/a(2)).^a(1));
a0=[2 8];  %valor inicial de los parámetros
af=nlinfit(x,frec,f,a0);
hold on

%diagrama de frecuencias
bar(x,frec,'c');

%para representar la curva de ajuste
x=linspace(0,max(dw),100);
y=f(af,x);
figure(4);plot(x,y,'r')

title('Ajuste a la función Weibull')
xlabel('Velocidad')
ylabel('Frecuencia')
hold off
%apartado c

Pr=1300; x0=3.0;xr=20;x1=25; %datos de la curva de potencia
k=2.3849; c=6.0208; %parametros weibul calculados anteriormente
potencia=xlsread('sotavento_curva potencia.xlsx','B2:B27');
x=0:1:25;
pot=potencia(x>=x0 & x<=xr);
hold on
x=x0:1:xr;
plot(x,pot,'ro','markersize',3,'markerfacecolor','r')
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);
figure(5);plot(x,yp,'k')
hold off
%apartado d
%cálculo de la potencia media
Pr=1300; x0=3.0;xr=20;x1=25; %datos de la curva de potencia
k=2.3849; c=6.0208; %parametros weibul calculados anteriormente
potencia=xlsread('sotavento_curva potencia.xlsx','B2:B27');
x=0:1:25;
pot=potencia(x>=x0 & x<=xr);
x=x0:1:xr;


p=polyfit(x,pot',3); %ajuste a un polinomio de tercer grado
%calculo 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

Ejercicio 3

ejer3

movimiento muelle

function ejer3 %para coef amortiguamiento 5 [t1, xx1]=ode45(@muelle, [0,40], [1,0],[ ], 5); plot(t1,xx1(:,1),'g')

hold on %para coef amortiguamiento 40 [t2, xx2]=ode45(@muelle, [0,40], [1,0],[ ], 40); plot(t2,xx2(:,1),'r')

%para coef amortiguamiento 200 [t3, xx3]=ode45(@muelle, [0,40], [1,0],[ ], 200); figure(7);plot(t3,xx3(:,1)) end

ejer3
% funcion muelle