Tarea Matlab OscarOcioVierna

Contents

EJERCICIO 1.A

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

EJERCICIO 1.B

% function y = combina(n,i)
%
%     y = factr(n)/(factr(i)*factr(n-i));
%
% end

EJERCICIO 1.C

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

t=linspace(0,1);
n=3;
figure(1);
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');

EJERCICIO 1.D

t=linspace(0,1);
Vx=[1 2 4 4.6];
Vy=[1 3 -1 1.5];
figure(2);
plot(Vx,Vy,'-o');
n=length(Vx);
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)*Vx(i);
    y(i,:)=bernstein(n-1,i-1,t)*Vy(i);
end
a=sum(x);
b=sum(y);
hold on;
plot(a,b);
legend('Poligono de control','Curva de Bezier');
xlabel('x');
ylabel('y');
title('Curva de Bezier dado un poligono');

EJERCICIO 2.A

vel=xlsread('sotaventogaliciaanual.xlsx','B2:B52129');
figure(4)
hist(vel,25)
hold on;
title('Histograma velocidad del viento');

EJERCICIO 2.B

clear all,clc
velocidad=xlsread('sotaventogaliciaanual.xlsx','B2:B52129');
%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
%hist
figure(5)
x=0.5:1:max(velocidad);
horas=hist(velocidad,x);
k=mean(velocidad);
c=(std(velocidad))^2;
%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=[k c];  %valor inicial de los parámetros
af=nlinfit(x,frec,f,a0)
hold on

%diagrama de frecuencias
bar(x,frec);

%representa la curva de ajuste
x=linspace(0,max(velocidad),100);
y=f(af,x);
plot(x,y,'r')

title('Ajuste no lineal a la función Weibull')
xlabel('Velocidad')
ylabel('Frecuencia')
hold off
af =

    2.3849    6.0208

EJERCICIO 2.C

clear all
x=xlsread('sotavento_curva potencia.xlsx','A2:A27');  %datos velocidad
y=xlsread('sotavento_curva potencia.xlsx','B2:B27');  %datos potencia
xd=linspace(0,25);
yd=interp1(x,y,xd,'pchip'); % interpolacion
figure(6)
plot(x,y,'*',xd,yd,'red');
hold on
xlabel('velocidad');
ylabel('potencia');
grid on;
title('Interpolación con un polinomio de tercer gardo');

EJERCICIO 2.D

clear all,clc
velocidad=xlsread('sotaventogaliciaanual.xlsx','B2:B52129');
%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
%hist
x=0.5:1:max(velocidad);
horas=hist(velocidad,x);
k=mean(velocidad);
c=(std(velocidad))^2;
%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=[k c];  %valor inicial de los parámetros
af=nlinfit(x,frec,f,a0);
f1=@(x) f(af,x);

x3=xlsread('sotavento_curva potencia.xlsx','A2:A27');  %datos velocidad
y3=xlsread('sotavento_curva potencia.xlsx','B2:B27');  %datos potencia
fd=@(xd) interp1(x3,y3,xd,'pchip'); % interpolacion

f3=@(x) f1(x).*fd(x);
potenciamedia=quad(f3,0,25)
potenciamedia =

  189.7883

EJERCICIO 3

m=20;
k=20;
c=[5 40 200];
%condiciones iniciales
x0=[1 0]; % 1 es la pos.inicial y 0 es la vel.inicial
tf=40; % tiempo final
figure(3)
for i=1:length(c)
    f=@(t,x) [x(2);(-c(i)*x(2)-k*x(1))/m];
    [t,x]=ode45(f,[0,tf],x0);
    plot(t,x(:,1));
    grid on;
    hold on;
end
xlabel('t');
ylabel('x');
legend('c = 5','c = 40','c = 200');
title('Movimiento sistema masa-resorte-amortiguador');

EJERCICIO 4

% Captura de funcionamiento para el caso particular dado
% El código está en los archivos aparte