%9. gyakorlat:
% Fisher egyenlet:
dt = 0.1; %idõbeli lépésköz %D*2*dt/dx^2<1 %0.46 körül "szép szõrösödés", nagy ,kis freki ugyanúgy cseng le
dx = 1; %térbeli lépésköz

x = 1:dx:500; %viszgált pontok az egyenesen
nx = length(x);
tmax=150;%1500;%75;%
nt = round(tmax/dt); %idõtartomány vége
indv=zeros(nt,1); %sebességhez adatok ide;

c =1; %hulámterjedés sebességi állandója
D=1; %diffúzió sebessége

u=zeros(nx,1);%a hullám kezdeti értékei 
%kezdeti értékek:
u()=;% az 1. pontban 1 (a többiben 0) a hullám kezdetben
u()=;% (pozitív) kezdettõl függetlenül 1-re áll be a hullám
u()=;% visszafele is terjed a hullám: végén 1 többi helyen 0 
u()=;%1; %csúcsból indul 
u()=;% 2 csúcs indul 
u()=;%random kezdet (nem lehet negatív)
u()=;%a kezdeti hulámfront alakjától se függ a stabil hullám alakja
% négyzetets Fisher:
u()=;%random kezdet (lehet negatív)
u()=;%a kezdeti hulámfront alakjától se függ a stabil hullám alakja (negatív rész is lehet)
%u(200:249)=linspace(-1,1,50); u(250:300)=linspace(1,-0.1,51); u(301:350)=linspace(-0.1,1,50); %majdnem -1-re áll be ("stabil"? árok)
%u(200:249)=linspace(-1,1,50); u(250:300)=linspace(1,-0.06,51); u(301:350)=linspace(-0.06,1,50); %sokáig úgy tûnik -1-re áll be, aztán ugrik fel 1-re (hosszabb futás): metastabilitás 

figure;
%kezdeti érték kirajzolása:
plot(u); %hullám értékeinek ábrázolása
grid(gca, 'minor');
    ylim([-1.2 5]);
    xlim([1 450]);
    title('t=0');
    xlabel('x: 1D tér');
    waitforbuttonpress;
    
 for %minden idõpillanatban
    u2 = u; %u2=értékek az elõzõ idõplillanatban; u=új értékek
    for %minden pontban kiszámolom a hullám aktuális értékét (a széleket külön kell kezelni)
        %kezeljük a peremeket zero flux peremként
        
      %dU/dt=c*U*(1-U)+D*dU^2/dx^2 %reakc tag+diff tag=fisher, térben szétterjed (diff),
      %dU/dt=c*U*(1-U^2)+D*dU^2/dx^2 %négyzetes fisher (-1-es stabil pont is van)
    end
    
    %ábrázol:
    plot(u);
    grid(gca, 'minor');
    ylim([-1.2 5]);
    xlim([1 450]);
    title(['t=' ,num2str(t*dt)]);
    xlabel('x: 1D tér');
    %waitforbuttonpress;
     pause(0.01);
     
     %
 % fishernél hullám sebességét meghatároz: (1-bõl indított hullámnál mûködik jó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= %u(1)=1; többi 0 kezdeti esetben : 2*gyök(c*D)
tkezd=round(1/4*nt); %egy intervallumon belül nézzük csak, ahol stabil a hullám sebessége (,hogy a tranziensek, peremek ne zavarjanak) 
tveg=round(4/5*nt);
sebesseg= %mennyit halad a hullám közepe adott idõ alatt 
%nem lesz pont az elvárt a numerikus pontatlanságok miatt;
%de pl 2.036-ra 2 helyett kihozható c=1 D=1, dx=1, dt=0.01 esetén
%}




