clear all
close all
%Primero queremos definir la forma del Potencial
Separacion=0.1
Limite=1000
x_Potencial=-Limite:Separacion:Limite;
Cantidad_Periodos_Espaciales=20
Delta_X_Negativo=(2*Limite/Separacion/Cantidad_Periodos_Espaciales)*(45/50)
Delta_X_Positivo=(2*Limite/Separacion/Cantidad_Periodos_Espaciales)*(5/50)

l=1
Potencial_Escalon(l)=0
Potencial_Pendiente(l)=0
for i=1:Cantidad_Periodos_Espaciales
    Limite_Inferior_Negativo(i)=x_Potencial(l);
    for j=1:Delta_X_Negativo
        l=l+1;
        Potencial_Pendiente(l)=0.1*l;
        Potencial_Escalon(l)=Potencial_Escalon(l-1)-0.5;
    end
    Limite_Superior_Negativo(i)=x_Potencial(l);
    for m=1:Delta_X_Positivo
        l=l+1;
        Potencial_Pendiente(l)=0.1*l;
        Potencial_Escalon(l)=Potencial_Escalon(l-1)+4.5;
    end
end

size(x_Potencial)
size(Potencial_Pendiente)
size(Potencial_Escalon)
figure
Limite_Inferior_Negativo
hold on
for i=1:length(Limite_Inferior_Negativo)
plot(Limite_Inferior_Negativo(i),-500:50:2000,'k-')
plot(Limite_Superior_Negativo(i),-500:50:2000,'g-')
end
plot(x_Potencial,Potencial_Pendiente,'b')
plot(x_Potencial,Potencial_Escalon,'r')
hold off

%Ahora la Fuerza (-derivada del potencial)

l=1
Fuerza_Escalon(l)=0.5;
Fuerza_Pendiente(l)=-0.1;
for i=1:Cantidad_Periodos_Espaciales
    for j=1:Delta_X_Negativo
        l=l+1;
        Fuerza_Pendiente(l)=-0.1;
        Fuerza_Escalon(l)=+0.5;
    end
    for m=1:Delta_X_Positivo
        l=l+1;
        Fuerza_Pendiente(l)=-0.1;
        Fuerza_Escalon(l)=-2.;
    end
end
figure
hold on
plot(x_Potencial,Fuerza_Pendiente,'b')
plot(x_Potencial,Fuerza_Escalon,'r')
hold off


%Ahora queremos definir la caminata aleatoria con una velocidad ruidosa y
%una fuerza que depende de la posicion y del tiempo


CantidadPeriodos=100
TPendiente=10
TEscalon=10
NroParticulas=10

Problema=0
for part=1:NroParticulas
    l=1;
    x(1,part)=rand*20-10;
    for i=1:CantidadPeriodos
        
        for j=1:TPendiente
            l=l+1;
            x(l,part)=x(l-1,part)+rand*4-2-(0.1/2);
        end
            %Ahora el escalon que esta dividido en muchas secciones
        for j=1:TEscalon
            l=l+1;
            for m=1:Cantidad_Periodos_Espaciales
            
                if (x(l-1,part)<Limite_Inferior_Negativo(1))
                    Problema=1;
                    break;
                elseif (x(l-1,part)>=Limite_Superior_Negativo(Cantidad_Periodos_Espaciales))
                    Problema=1;
              		break;
                else
                    if(x(l-1,part)>=Limite_Inferior_Negativo(m) & x(l-1,part)<Limite_Superior_Negativo(m))
                        x(l,part)=x(l-1,part)+rand*4-2+(0.5/2);
                        break
                    elseif(x(l-1,part)>=Limite_Superior_Negativo(m) & x(l-1,part)<Limite_Inferior_Negativo(m+1))
                        x(l,part)=x(l-1,part)+rand*4-2-(4.5/2);
                        break
                    else
                        continue;
                    end
                end
            end
        end
    end
end


%Ahora Graficamos

Problema
S=size (x)
L=length(x)
S(1)
min(x(10,:))
max(x(10,:))

Periodo=TPendiente+TEscalon;
figure
hist(x(1,:),round(max(x(1,:))-min(x(1,:))))%Al principio uniforme
mean(x(1,:))
figure
hist(x(11,:),round(max(x(11,:))-min(x(11,:))))%Despues de la primer pendiente negativa
mean(x(11,:))
figure
hist(x(21,:),round(max(x(21,:))-min(x(21,:))))%Despues de la primer escalon
figure
hist(x(201,:),round(max(x(201,:))-min(x(201,:))))%Despues de 10 periodos
figure
hist(x(211,:),round(max(x(211,:))-min(x(211,:))))%Despues de 10 periodos + pendiente negativa
figure
hist(x(221,:),round(max(x(221,:))-min(x(221,:))))%Despues de 11 periodos
figure
hist(x(2001,:),round(max(x(2001,:))-min(x(2001,:))))%Despues de 100 periodos



figure
%plot(1:S(1), x,'b')
hold on
plot(1:S(1), x(:,1),'b')
plot(1:S(1), x(:,2),'g')
plot(1:S(1), x(:,3),'r')
plot(1:S(1), x(:,4),'c')
plot(1:S(1), x(:,5),'m')
plot(1:S(1), x(:,6),'y')
plot(1:S(1), x(:,7),'k')
hold off