dt = 0.1; %idõbeli lépésköz %D*2*dt/dx^2<1 %0.5-nél "szép" szõrösödés, nagy ,kis freki uúgy cseng le
dx = 1; %térbeli lépésköz

x = 0:dx:500; %viszgált pontok az egyenesen
nx = length(x);
nt = 15000; %idõtartomány vége
indv=zeros(nt,1); %sebességhez adatok ide;

c =1; %hulámterjedés sebessége
D=1; %diffúzió sebessége max 4 lehet

u = zeros(nx,1);%exp(-0.1*x);% %a hullám kezdeti értékei
%kezdeti értékek:
%u(1) =1; %0.1;%5;% az 1. pontban 1 (a többiben 0) a hullám kezdetben
%u(1:50) =0.1;%5;% 1;
%u(250:end)=1;% visszafele megy
%u(250:260)=5;%0.1;%1; %csúcs indul 
%u([250:260, 200:230])=1; %0.1;%5;% 2 csúcs indul 
%u(250:300)=rand(1,51)*2; %random kezdet (nem lehet negatív)
u(250:300)=rand(1,51)*2-1; %random kezdet (nem lehet negatív)
%u(250:300)=linspace(0,2,51); %a kezdeti hulámfronttól se függ
%u(250:300)=linspace(-0.5,2,51); %a kezdeti hulámfronttól se függ
%u(1:50)=linspace(2,0,50); %a kezdeti hulámfronttól se függ

figure;
%kezdeti érték rajzol:
plot(u);
grid(gca, 'minor');
    ylim([-1.2 5]);
    xlim([1 450]);
     %waitforbuttonpress;
     pause(0.01);
    
for t = 1:nt %minden idõpillanatban
    u2 = u; %u2=értékek az elõzõ idõplillanatban; u=új értékek
    for i = 2:nx-1 %minden pontban kiszámolom a hullám aktuális értékét (a széleket külön kell kezelni)
      %  u(i) = u2(i) + D*dt/dx^2*(u2(i+1)-2*u2(i)+u2(i-1)); %dU/dt=D*dU^2/dx^2 %diff tag csak, szétfolyik ,de nem mozdul
      %   u(i) = u2(i) +c*dt*u2(i)*(1-u2(i))+D*dt/dx^2*(u2(i+1)-2*u2(i)+u2(i-1)); %dU/dt=c*U*(1-U)+D*dU^2/dx^2 %reakc tag+diff tag=fisher, térben szétterjed (diff),
        u(i) = u2(i) +c*dt*(u2(i))*(1-u2(i)^2)+D*dt/dx^2*(u2(i+1)-2*u2(i)+u2(i-1)); %dU/dt=c*U*(1-U^2)+D*dU^2/dx^2 %négyzetes fisher
     %   u(i) = u2(i) - c*dt/dx*(u2(i)-u2(i-1)); %dU/dt=-c*dU/dx %lin convection: térben utazik, nem folyik szét a hullám  és fenn is marad (reakc) 
      %  u(i) = u2(i) - c*dt/dx*(u2(i)-u2(i-1))+D*dt/dx^2*(u2(i+1)-2*u2(i)+u2(i-1)); %dU/dt=-c*dU/dx+D*dU^2/dx^2 %lin convection+diff=burgers, utazik és szétfolyik 
    
    end
    %u(1) = 1; %szélek
    %u(end) = 0;
    
    %ábrázol:
    plot(u);
    grid(gca, 'minor');
    ylim([-1.2 5]);
    xlim([1 450]);
  %  waitforbuttonpress;
     pause(0.01);
     
     %
    % fishernél: 
 kul=abs(u-0.5); 
 [mi, hol]=min(kul); %megkeresem a hullám közepét (ami legközelebb van 0.5-höz)
 indv(t,1)=hol(1); %tárolom, hogy hol, milyen x-nél van ez adott idõpillanatban
    %}
end
 
%
%fishernél:
elvart_sebesseg=2*sqrt(c*D) %u(1)=1; többi 0 kezdeti esetben
 tkezd=250; %egy intervallumon belül, ahol stabil a hullám sebessége
 tveg=1250;
sebesseg=(indv(tveg,1)-indv(tkezd,1))/((tveg-tkezd)*dt) %mennyit halad a hullám közepe adott idõ alatt %nem lesz pont az elvárt
%}