COMPUTACIÓN APLICADA A LA INGENIERÍA
Tarea Matlab: Christian Viota Barquín
Contents
EJERCICIO 1
% apartado a type factr %apartado b type combina % apartado c type bernstein % apartado d t=linspace(0,1); V=[1 2 4 4.6;1 3 -1 1.5]; plot(V(1,:),V(2,:),'-o'); n=size(V); n=n(2); s=size(t); x=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); % Muestra de la gráfica t=linspace(0,1); n=3; for i=0:n b=bernstein(n,i,t); plot(t,b); hold on; end xlabel('t') ylabel('Polinomio de Bernstein') title('Polinomios de Bernstein de grado 3') legend('B_3_,_0','B_3_,_1','B_3_,_2','B_3_,_3')
function f=factr(n) if n==0 f=1; else f=n*factr(n-1); end end function c=combina(n,i) c=factr(n)/(factr(i)*factr(n-i)); end function ber=bernstein(n,i,t) ber=combina(n,i)*(t.^i).*(1-t).^(n-i); end

EJERCICIO 2
%Histograma datos viento datos_viento=xlsread('sotaventogaliciaanual.xlsx'); intervalos=0:1:25; %figure; hist(datos_viento,intervalos); title('Histograma datos viento'); xlabel('Velocidad (m/s)'); ylabel('Frecuencia'); hold off; %Ajuste a la funcion Weibull velocidad=xlsread('sotaventogaliciaanual.xlsx'); %interpolar si es necesario if any(isnan(velocidad)) %si hay algún NaN x=1:length(velocidad); i=find(~isnan(velocidad)); velocidad=interp1(x(i),velocidad(i),x); end %histograma x=0.5:1:max(velocidad); horas=hist(velocidad,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); %diagrama de frecuencias figure; bar(x,frec,'c'); hold on; %Curva de ajuste x=linspace(0,max(velocidad),100); y=f(af,x); plot(x,y,'r') title('Ajuste a la función Weibull') xlabel('Velocidad (m/s)') ylabel('Frecuencia') hold off %APARTADO C %Interpolar la curva de potencia del generador Pr=1300; x0=3.0;xr=20;x1=25; %datos de la curva de potencia potencia=xlsread('sotavento_curva potencia.xlsx','B2:B27'); x=0:1:25; pot=potencia(x>=x0 & x<=xr); x=x0:1:xr; figure; plot(x,pot,'ro','markersize',3,'markerfacecolor','r') title('Ajuste de la curva de potencia de un generador'); axis([0 22 0 1400]); xlabel('Velocidad (m/s)'); ylabel('Potencia (MW)'); grid on; hold on; %ajuste p=polyfit(x,pot',3); %ajuste a un polinomio de tercer grado yp=polyval(p,x); plot(x,yp,'k') hold off %Potencia media k=2.3849; c=6.0208; %Parámetro de wibull calculados antes 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 (MW) es: %3.1f\n',power)
La potencia media (MW) es: 203.4



EJERCICIO 3
m=20; k=20; c=5;c1=40;c2=200; x0=[1,0];% Desplazamiento y velocidad iniciales tf=40; %Tiempo final f=@(t,x) [x(2);-c*x(2)/m-k*x(1)/m]; [t,x]=ode45(f,[0,tf],x0); plot(t,x(:,1)) grid on xlabel('t') ylabel('x') title('Sistema masa-resorte-amortiguador') hold on f1=@(t,x) [x(2);-c1*x(2)/m-k*x(1)/m]; [t,x]=ode45(f1,[0,tf],x0); plot(t,x(:,1)) f2=@(t,x) [x(2);-c2*x(2)/m-k*x(1)/m]; [t,x]=ode45(f2,[0,tf],x0); plot(t,x(:,1))
