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');