%Ejercicio 1

%Apartado a

function x = factr(n)
    if n<=1
        x=1;
        return
    end
    x=n*factr(n-1);
end

%Apartado b

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

%Apartado c

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

%Apartado d

t=linspace(0,1,20);
n=3;
for i=0:3
    b=bernstein(n,i,t);
    plot(t,b);
end
title('Polinomios de Bernstein para n=3')
legend('b0', 'b1', 'b2', 'b3')

t=linspace(0,1);
vx=[1 2 4 4.6];
vy=[1 3 -1 1.5];
v=[vx;vy];
plot(v(1,:),v(2,:));
n=size(v);
s=size(t);
x=zeros(n(2),s(2));
y=zeros(n(2),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)
title('Curva de Bézier')
legend('Polígono de control','Curva de Bézier')
hold off




%Ejercicio 2

%Apartado a
datosViento=xlsread('sotaventogaliciaanual.xlsx');
x=0:1:25;
hist(datosViento,x);
title('Datos del viento')
ylabel('Frecuencia')
xlabel('Velocidad')

%Apartado b

vel=xlsread('sotaventogaliciaanual.xlsx');
velMax=max(vel);
x=0.5:1:velMax;
histograma=hist(vel,x)
frec=histograma/sum(histograma);
f=@(a,x) (a(1)/a(2))*((x/a(2)).^(a(1)-1)).*exp(-(x/a(2)).^a(1));
a0=[2 8];
af=nlinfit(x,frec,f,a0);
figure 1
bar(x,frec)
hold on
x=linspace(0,velMax);
y=f(af,x);
plot(x,y)
title('Función de Weibull')
xlabel('Velocidad')
ylabel('Frecuencia')
hold off

%Apartado c

P=1300;
x0=3;
xr=20;
xl=25;
potencia=xlsread('sotavento_curva potencia.xlsx','B2:B27');
x=0:1:25;
potencia=potencia(x>x0 & x<=xr);
x=x0:1:xr;
p=polyfit(x,potencia',3);
y=polyval(p,x);
figure 2
plot(x,potencia)
title('Curva de potencia del generador')
axis([0 22 0 1400])
xlabel('Velocidad')
ylabel('Potencia')
hold on
plot(x,y)

%apartado d

k=2.3849;
c=6.0208;
f=@(x) (k/c)*((x/c).^(k-1)).exp(-(x/c).^k);
h=@(x) f(x).*polyval(p,x);
potencia=quad(h,x0,xr)+Pr*quad(f,xr,x1)



%Ejercicio 3

function x=msd(t,x,c)
    x=[x(2),(-c*x(2)-20*x(1))/20];
end

[t1,x1]=ode45(@msd,[0,40],[1,0],[],5);
[t2,x2]=ode45(@msd,[0,40],[1,0],[],40);
[t3,x3]=ode45(@msd,[0,40],[1,0],[],200);
figure 3
plot(t1,x1(:,1))
hold on
plot(t2,x2(:,1))
plot(t3,x3(:,1))
title('Desplazamiento del muelle para diferentes c')
legend('c=5','c=40','c=200')
Error: File: C:\Users\Estela\Desktop\Computación aplicada a la ingeniería\Ejercicios\MatLab\ejs1al3.m Line: 27 Column: 1
This statement is not inside any function. 
 (It follows the END that terminates the definition of the function "bernstein".)