TAREA MATLAB Pablo Pellón Villar

Contents

Ejercicio1

Ejercicio 1 apartado a)

Función factorial recursiva

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

Ejercicio 1 apartado b)

Función de combina

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

Ejercicio 1 apartado c)

Función de bernstein

type bernstein
function polbernstein = bernstein(n,i,t);
%n es el grado del polinomio
%i, orden del polinomio que va de 0,n
%t, parámetro a elegir que está en el intervalo [0,1]
polbernstein=(combina(n,i))*(t.^i).*((1-t).^(n-i));
end

Ejercicio 1 apartado c)

Desarrollar una función que use la función bernstein y vectorización para dibujar en la misma gráfica los polinomios de bernstein de grado 3.

t=linspace(0,1);
n=3;
figure(8)
for i=0:n
    b=bernstein(n,i,t);
    figure(1)
    plot(t,b)
    hold on;
end
xlabel('t');
ylabel('Polinomio de Bernstein');
title('Polinomio de Bernstein de grado 3');
legend('B3,0','B3,1','B3,2','B3,3');
hold off

Ejercicio 1 apartado d)

Desarrollar un programa para graficar el polígono de control y la curva de Bézier

figure(10)
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));
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);
title('Polígono de control y la curva de Bézier');
legend('Polígono de control','Curva de Bézier');
hold on;
plot(a,b);
Warning: Ignoring extra legend entries. 

Ejercicio 2

Ejercicio 2 apartado a)

Lectura de los datos de velocidad del viento y gráfica el historia considerando intervalos de clase [0,25]

dw=xlsread('sotaventogaliciaanual.xlsx');
nbins=linspace(0,25,25);
figure(1)
hist(dw,nbins)
figure(2)
plot(dw)
clear,clc

Ejercicio 2 apartado b)

Conversión de los datos del viento a un histograma de frecuencias y Ajuste a una distribución de Weibull, graficar ambas cosas

Y=xlsread('sotaventogaliciaanual.xlsx','B:B');
x=0.5:1:max(Y);
viento=hist(Y,x);
frec=viento/sum(viento);
f=@(a,x) (a(1)/a(2))*((x/a(2)).^(a(1)-1)).*exp(-(x/a(2)).^a(1));
k=std(Y);
c=mean(Y);
a0=[k c];  %condiciones iniciales
af=nlinfit(x,frec,f,a0);
figure(3)
hold on
% Para el diagrama de frecuencias
bar(x,frec,'c');
% Ajuste
x=linspace(0,max(Y),100);
y=f(af,x);
plot(x,y,'r')
title('Ajuste de Weibull')
xlabel('V')
ylabel('Frec')
hold off

Ejercicio 2 apartado c)

Grafica de los puntos de la curva y los valores de la interpolación.

X=xlsread('sotavento_curva potencia.xlsx','A:A');
Y=xlsread('sotavento_curva potencia.xlsx','B:B');
figure(4)
x25=linspace(0,25);
v25 = interp1(X,Y,x25,'pchip');
plot(X,Y,'o',x25,v25,':.');
title('Potencia interpolada')
legend('Valores de potencia','Interpolación','Location','southeast');
grid on

Ejercicio 3

Grafica en una misma gráfica del desplazamiento en función del tiempo para cada uno de los valores del coeficiente de amortiguamiento. El movimiento de un sistema masa-resorte-amortiguador se describe por una ecuación diferencial

%Datos
figure(6)
clear all, clc
m=20;
k=20;
c=[5 40 200];
%CONDICIONES INICIALES
x0=[1,0];
tf=40;
hold on
for i=1:3
    f=@(t,x) [x(2);(-c(i)*x(2)-k*x(1))/m];
    [t,x]=ode45(f,[0,tf],x0);
    plot(t,x(:,1))
end
grid on
xlabel('TIEMPO')
ylabel('POSICION');
legend('c=5','c=40','c=200')
title('SISTEMA MASA-RESORTE-AMORTIGUADO')