Sieci rekurencyjne
Sieci rekurencyjne W dotychczas omawianych sieciach nie rozważaliśmy przypadku, w którym sygnał wyjściowy z sieci trafiałby powtórnie na wejście tej sieci. Taki obieg sygnału nazywamy sprzężeniem zwrotnym, a sieci w których to zjawisko występuje określa się jako sieci rekurencyjne. Najbardziej znane sieci rekurencyjne to: sieć Hopfielda siec Hamminga sieć RTRN (ang. Real Time Recurrent Network) sieć Elmana sieć BAM (ang. Bidirectional Associative Memory)
Przykładowy schemat sieci rekurencyjnej S, f w11 w12 w13 w21 w22 w23 w31 w32 w33 y1 y2 y3 x1 x2 x3 Na rysunku widać jednowarstwową sieć ze sprzężeniem zwrotnym. Wyjścia z poszczególnych neuronów mogą być także kierowane na wejścia (tych samych jak i innych neuronów). Na rysunku zaznaczono sygnały wejściowe, x1, x2, x3, na niebiesko, aby podkreślić, że są one wprowadzane do sieci tylko raz (pobudzenie sieci).
Model sieci Hopfielda (dla liczby wejśc n=3) -1 1 Klasyczna sieć Hopfielda nie posiada sprzężenia neuronu z samym sobą, tzn. waga takiego połączenia jest równa zero, wii=0. Dlatego często na rysunkach prezentujących sieci Hopfielda, połączenie i—i nie jest w ogóle rysowane.
Podstawowe założenia dla sieci Hopfielda 1) Klasyczna sieć Hopfielda jest siecią jednowarstwową składającą się z neuronów połączonych każdy z każdym, ale bez sprzężenia neuronu samego ze sobą. Dlatego zakładamy, że odpowiednie wagi są zerowe: dla 2) Ponadto zakładamy, że wagi tej sieci są symetryczne Zatem waga łącząca neuron j-ty z i-tym jest taka sama, jak waga łącząca i-ty z j-tym. 3) Funkcja aktywacji w klasycznej sieci Hopfielda jest dwustanowa (np. bipolarna {-1, +1} lub unipolarna {0,+1}).
Działanie sieci Hopfielda – opis ogólny Sposób funkcjonowania sieci Hopfielda jest odmienny od dotychczas poznanych modeli sieci jednokierunkowych (feed forward). Po pierwsze w trybie uczenia (czyli dobóru wag) jednorazowo przypisuje się odpowiednie wartości w oparciu o odpowiednie wyrażenia (nie stosujemy procedur iteracyjnych, w których systematycznie poprawiamy wagi, jak np. wsteczna propagacja). W trybie odtworzeniowym (gdy wagi już są zdefiniowane) sygnał wejściowy inicjuje pobudzenie sieci, która dzięki mechanizmowi sprzężenia zwrotnego wielokrotnie przyjmuje na swoje wejście zmodyfikowany sygnał pierwotny, aż do ustabilizowania odpowiedzi. Ta ustabilizowana wartość jest traktowana jako wynik działania sieci. W trybie odtworzeniowym sygnał wielokrotnie przechodzi przez sieć aż do ustabilizowania się odpowiedzi, tzn. do momentu w którym sygnał nie ulega już dalszej zmianie. Ta ustabilizowana odpowiedź jest przyjmowana jako wynik działania sieci.
Dobieranie wag w sieci Hopfielda (uczenie) Jedną z metod uczenia sieci Hopfielda jest uogólniona metoda Hebba. Zgodnie z tą regułą wagi definiowane są następująco gdzie jest ciągiem wektorów uczących (epoka), a n jest liczbą neuronów w sieci. Taki tryb uczenia sprawia, że wagi przyjmują wartości wynikające z uśrednienia próbki uczącej:
Zaletą uogólnionej metoda Hebba dla sieci Hopfielda jest prostota Zaletą uogólnionej metoda Hebba dla sieci Hopfielda jest prostota. Zaimplementowanie jej to poprostu przypisanie wagom wij wartości wg podanego wzoru. Niestety ta prosta reguła nie daje zbyt dobrych rezultatów, gdyż pojemność sieci przy takim sposobie uczenia stanowi tylko 13,8% całkowitej liczby neuronów. Na przykład dla sieci Hopfielda o n=1000 neuronach będzie można zapamiętać tylko 138 różnych klas (kategorii). Aby móc rozpoznawać tak uczoną siecią litery alfabetu (bez znaków diakrytycznych) – duże i małe – których jest 2*26=52, będziemy potrzebowali co najmniej n 52/0,138 = 376,8 wejść. Ponadto prowadzi do licznych przekłamań. Dlatego częściej stosuje się bardziej zaawansowaną metodę pseudoinwersji.
Dobieranie wag w sieci Hopfielda (c.d.) W zapisie macierzowym wzory na wagi wg uogólnionej reguły Hebba można zapisać następująco gdzie I jest macierzą jednostkową (jedynki na przekątnej, poza nią zera), X jest macierzą której kolumnami są wektory ciągu uczącego, X oznacza transponowanie macierzy X, a liczba T oznacza jak zwykle liczbę wektorów uczących w jednej epoce. Jak już wiemy funkcje aktywacji w sieci Hopfielda są dwustanowe. W praktyce używa się funkcji bipolarnej {-1, 1} lub unipolarnej {0, 1}. Podobnie jest z wektorami sygnałów: składają się z współrzędnych bipolarnych lub unipolarnych. Jeżeli stosujemy wektory unipolarne, to uogólniona reguła Hebba (formuła powyżej lub wcześniejszy slajd) przyjmie postać
(reguła Hebba dla sieci Hopfielda) Przykład (reguła Hebba dla sieci Hopfielda) Dany jest zbiór wektorów (wzorców) kodowanych bipolarnie ({-1,+1}) Stosując omawiane już wzory na macierz wag gdzie T=3, n=5 otrzymujemy Podkreślmy, że uzyskana macierz wag została zbudowana wg uogólnionej reguły Hebba. Dalej pokażemy inny sposób nadawania wag dla sieci Hopfileda.
Metoda pseudoinwersji dla sieci Hopfielda Punktem wyjścia w tej metodzie jest założenie, że przy właściwie dobranych wagach wij każdy wzorzec x(t) z ciągu uczącego podany na wejście generuje na wyjściu samego siebie, prowadząc zatem do natychmiastowego stanu ustalonego. Mamy więc warunek Wx(t)=x(t), co można rozapisać tak: Jeżeli wprowadzimy pomocniczą macierz X, której kolumnami są kolejne wektory uczące to warunki Wx(t)=x(t) można zapisać w postaci następującego równania macierzowego Dane Szukane gdzie W jest macierzą wag o wymiarach n x n, a X jest macierzą prostokątną o wymiarach n x T.
Rozwiązanie takiego układu (pamiętajmy, że macierz X jest dana, a szukana jest macierz W) jest następującej postaci gdzie X+ oznacza tzw. pseudoinwersję (pseudoodwrotność) macierzy X. Pseudoodwrotna jest uogólnieniem pojęcia macierzy odwrotnej – znanej ze standardowego kursu algebry liniowej. Niestety obliczenie numeryczne pseudodwrotnej nie jest łatwe (podobnie jak zwykłej odwrotnej). Ale każde zaawansowane środowisko obliczeniowe ma wbudowaną procedurę jej obliczania (MATLAB, Mathematica, Mathcad, Maple, Octave itp.). Ważny szczególny przypadek: Okazuje się jednak, że jeżeli wektory uczące są liniowo niezależne, to macierz W może być obliczona przy pomocy zwykłej odwrotności (nie musimy używać pseudoinwersji) następująco:
Szczegółowy opis działania sieci Hopfielda w trybie odtworzeniowym W k+1 obiegu iteracji pobudzenia sieci: 1) Część liniowa i-tego neuronu w tej iteracji: 2) Następnie wyjście z części sumującej jest jak zwykle poddawane działaniu funkcji aktywacji f, więc ostatecznie sygnał wyjściowy jest następujący Zakładamy, że wszystkie neurony mają taką samą funkcję aktywacji (najczęściej f(s) = sign s).
Wprowadzając jak zwykle pomocniczy sygnał polaryzacji y0(k)=1, możemy zapisać powyższe wzory w sposób bardziej zwarty następująco gdzie sumowanie zaczyna się od zera, a k=0,1,… (kolejne iteracje pętli pobudzenia). Ponadto należy jeszcze wprowadzić sygnał wejściowy początkowy, który pobudza sieć, tak więc mamy przy czym x0=1. Liczby x1,...,xn są dane, gdyż: jest danym wektorem sygnałów wejściowych.
Sieć jest ustabilizowana, jeżeli dla pewnego kroku iteracji, k, zachodzi warunek dla każdego neuronu, i=1,…,n. Oczywiście zachodzi podstawowe pytanie: czy powyższy warunek stabilizacji zostanie osiągnięty? W przypadku sieci Hopfielda można udowdonić, że stabilizacja zachodzi dla dowolnego pobudzenia początkowego yi(0)=xi.
Przykład Użyjemy sieci Hopfielda do rozpoznawania trzech cyfr: 1, 4 i 7. Cyfry będą definiowane na matrycy 3x4 Ciąg uczący tworzymy wg kodowania: biały piksel = -1; czarny piksel = +1.
Wektory kodujące cyfry 1, 4, 7 Wektory zapisane kolumnowo i macierz X zawierająca te wektory jako kolejne kolumny
Mnożymy macierz transponowaną XT przez macierz X i otrzymujemy macierz kwadratową (wymiaru takiego, jakiego była liczba wektorów uczących – w tym przypadku 3). Teraz macierz XTX musimy odwrócić (jest to możliwe, gdyż wektory x(1), x(2), x(3) są liniowo niezależne).
Po wykonaniu mnożeń macierzy uzyskamy ostatecznie macierz wag W=X(XTX)-1XT dla przykładowej sieci. Jest to macierz kwadratowa wymiaru 12x12 (liczba wejść do sieci – w przykładzie jest to związane z liczbą pikseli matrycy).
0,404762 0,190476 0,02381 -0,02381 0,619048 -0,04762 -0,38095 0,047619 0,119048 -0,11905 Przy tak dobranych wagach sieć powinna rozpoznawać (w pierwszej iteracji!) trzy wektory x(1), x(2), x(3) które kodują cyfry 1, 4 7.
Przykład (c.d.) Teraz zaszumimy (ang. noise) trzy cyfry: 1, 4 i 7, aby sprawdzić jaka będzie odpowiedź sieci. Obrazy kodujemy wg schematu: biały piksel = -1; czarny piksel = +1.
Po kilku iteracjach sieć prawidłowo rozpoznaje cyfrę 1 i cyfrę 4. Wejście Wyjście Liczba iteracji x(1)=[-1,-1,1,-1,-1,1-1,1,1,-1,-1,1] [-1,-1,1,-1,-1,1-1,1,1,-1,-1,1] 3 x(2)=[1,-1,1,1,-1,1,-1,-1,1,-1,-1,1] [1,-1,1,1,-1,1,-1,-1,1,-1,-1,1] Natomiast pojawiają się problemy z rozpoznawaniem zaburzonej cyfry 7. W tym przypadku wektor kodujący zaburzoną cyfrę, czyli podany na wejście sieci generuje na wyjściu wektor (po 15 iteracjach): który jest inny niż 7. Możemy to zinterpretować tak, że sieć nie rozpoznała zaburzonej cyfry 7. Oczywiście przykład jest bardzo prosty, gdyż użyliśmy małej matrycy, 3x4. W praktyce musimy stosować większą liczbę pikseli (np. 12x16, co daje 12·16=192 pikseli; wtedy sieć ma też n=192 neurony).
Przykład Wykorzystamy sieć Hopfielda do zapamiętania i rozpoznawania cyfr 0-9. Wzorcowe cyfry są zdefiniowane na matrycy o wymiarach 7x7 pikseli. Przedstawione są poniżej – zostały ona użyte do uczenia sieci metodą pseudoinwersji. Liczba neuronów sieci jest równa liczbie pikseli matrycy: 7·7=49. W kodowaniu użyto schematu: → (-1), → (+1).
Pierwszy wiersz – wzorce. Drugi wiersz – przykładowe zaburzone cyfry poprawnie rozpoznane. Trzeci wiersz – przykładowe obrazy, które nie zostały zakwalifikowane do kategorii z pierwszego wiersza. W przypadku cyfry 2 wydaje się to poprawne (mimo, że zaburzenie jest minimalne, ale dla cyfry 4 raczej uznalibyśmy to z błąd sieci. ` Cyfry wzorcowe Wzorce Rozpoznane Wzorce klasyfikowane do innych kategorii
Wprowadzenie do ciągłych układów dynamicznych Systemy wspomagania decyzji WSB, Nowy Sącz
Przykłady zastosowań układów dynamicznych Mechanika – ruch ciał niebieskich, tory pocisków, sterowanie sonadmi kosmicznymi. Teoria obwodów elektrycznych – analiza modeli liniowych, oscylator van der Pola, generatory drgań sinusoidalnych. Modele dynamiczne w biologii – ewolucja populacji, modele drapieżnik ofiara, model Maya (ulepszony model Volterry-Lotki), model Zeemana pracy serca, potencjał czynnościowy w komórkach układu nerwowego. Modele dynamiczne w ekonomii – proste modele wzrostu, modele cykli ekonomicznych.
Równaniem różniczkowym zwyczajnym rzędu pierwszego nazywamy równanie postaci gdzie jest daną funkcją. Rozwiązaniem takiego równania nazywamy każdą funkcję y(t), która jest różniczkowalna i spełniania równość Ponieważ pochodna funkcji mierzy szybkość zmiany funkcji względem jej argumentu, więc pochodna względem czasu oznacza szybkość zmiany w czasie. Możemy więc na równanie różniczkowe patrzeć jak na regułę, która opisuje ewolucję jakiejś wielkości w czasie. Uwaga. Pochodna funkcji może być też oznaczana przez dy/dt. Wtedy równanie rózniczkowe zapiszemy następujaco:
Przykład Rozważmy równanie Przykładowe rozwiązanie Sprawdzamy przez podstawienie Podane rozwiązanie nie jest jedyne, gdyż na przykład funkcja też spełnia to równanie.
Przykład Rozważmy równanie Sprawdzamy, że funkcja jest rozwiązaniem: W ogólnym przypadku każda funkcja postaci jest rozwiązaniem tego równania.
Powyższe przykłady pokazują, że samo równanie różniczkowe (reguła opisująca szybkość zminy) nie jest wystarczające, aby jednoznacznie zdeterminować ewolucje układu. Zagadnieniem początkowym (zagadnieniem Cauchy’ego) nazywamy następujące równanie gdzie są danymi liczbami (warunek początkowy), a jest daną funkcją. Warunek początkowy y(t0)=y0 określa jaki był stan układu w chwili początkowej t=t0.
Przykład Jakie jest rozwiązanie zagadnienia Cauchy’ego Rozwiązanie ogólne równania y’ = t y ma postać Podstawiamy warunek początkowy y(0)=2, co daje C=2. Zatem rozwiązaniem zagadnienia Cauchy’ego jest funkcja
Równanie logistyczne Wzrost populacji można scharkteryzować podając współczynnik urodzeń b oraz współczynnik zgonów d. Wtedy współczynnik wzrostu (zmiany) populacji wynosi r=b-d. Oznaczmy przez y(t) liczebność danej populacji w chwili t 0. Na tej podstawie można napisać najprostrze równanie opisujące zmianę ilościową populacji: Rozwiązaniem tego równania jest funkcja Sens parametru C jest jasny: jest to początkowa wielkość populacji, C=y(0)=y0. Może więc napisać gdzie y0 jest wielkością populacji w chwili t=0.
Efekt „nasycenia”: liczność populacji nie zmienia się. Równanie logistyczne (c.d.) Modyfikujemy założenie odnośnie współczynnika zgonów d następująco: tzn. zakładamy, że nie jest on stały, ale rośnie wraz z liczebnością populacji. Pełne równanie dynamiczne opisujące ewolucję pupulacji ma teraz postać: Równanie to nazywa się równaniem logistycznym. Opisuje ono dość dobrze ewolucję pojedynczej populacji egzystującej samodzielnie w środowisku o ograniczonych zasobach (np. hodowla bakterii). Efekt „nasycenia”: liczność populacji nie zmienia się. Wykres rozwiązania y=y(t) równania logistycznego dla a=2 oraz b=3 i czasu -3 t 5. czas
w środowisku Mathematica Przykładowa implementacja symulacji w środowisku Mathematica
Synteza bromowodoru z pierwiastków Synteza bromowodoru z pierwiastków jest reakcją złożoną o sumarycznym równaniu W roku 1906 wyznaczono eksperymetalnie następujące równanie kinetyczne tej reakcji Czasami równanie to jest zapisywane równoważnie tak Stałe kinetyczne k1 oraz k2 zależą od warunków przebiegu reakcji (temperatura, ciśnienie itp.). Eksperymetalnie wyznaczono, że w zwykłych warunkach k2≈0,1.
Synteza bromowodoru z pierwiastków (c.d.) Wprowadzamy oznaczenie y(t) = [HBr] oraz uwzględniamy bilans masy w równaniu co daje dodatkowe zależności Po podstawieniu do równania kinetycznego na d[HBr]/dt otrzymamy gdzie [Br2]0 oraz [H2]0 to początkowe stężenia bromu i wodoru.
Synteza bromowodoru z pierwiastków (c.d.) Przeprowadzając symulację podanego układu dynamicznego możemy precyzyjnie przewidzieć ewolucję stężenia składników – a w szczególności przewidzieć czas trwania reakcji.
Synteza bromowodoru z pierwiastków (c.d.) Zasadniczy fragment kodu w środowisku MATLAB, który dokonuje symulacji podanego przykładu ma postać: Obliczenia wykonane są przez procedurę ode45, które implementuje jedną z najważniejszych metod numerycznych rozwiązywania układów dynamicznych – metodę Rungego-Kutty-Fehlberga 4-tego rzędu z adaptacyjnym krokiem całkowania.
Synteza bromowodoru z pierwiastków (c.d.) - przykładowa implementacja w Mathematica
Synteza bromowodoru z pierwiastków (c.d.) - przykładowa implementacja w Mathematica, w której użyto składni zbliżonej do tradycyjnego zapisu matematycznego
W ogólnym przypadku może występować n wielkości (niewiadomych) funkcji y1(t),…,yn(t), których ewolucje czasowe są powiązane. Oznacza to, że danych jest n równań równań różniczkowych zwyczajnych (czyli układ równań): z warunkami początkowymi: gdzie liczby są dane.
Modele oddziałujących populacji Dobrym przykładem układów dynamicznych, w których wystepuje wiele niewiadomych funkcji są systemy ekologiczne, w których wystepuje wiele gatunków. Jeżeli gatunki oddziałują ze sobą, to odziaływania te wpływają na dynamikę populacji każdego z nich. Wyróżniamy tutaj trzy zasadnicze typy odziaływań: Jeżeli współczynnik wzrostu jedej populacji maleje, a drugiej rośnie, to mamy do czynienia z układem drapieżnik-ofiara. Jeżeli współczynnik wzrostu każdej populacji zmniejsza się, to oddziaływanie mają charakter konkurencji. Jeżeli dla każdej populacji współczynnik wzrostu rośnie, to układ taki nazywamy symbiozą. Dalej skoncentrujemy się na przykładowym odziaływaniu dwóch gatuków typu drapięznik-ofiara.
Równania Lotki-Volterry jako prosty model układu drapieżnik-ofiara Układ równań do opisu prostego modelu interakcji pomiędzy dwoma populacjami: ofiar, y1, oraz drapieżników, y2. gdzie
Przykładowe symulacje układu drapieżnik-ofiara Kod w środowisku MATLAB oraz wynik w postaci dwóch wykresów pokzujących zależność od czasu liczności obu populacji. y(1) – ofiary (zające) y(2) – drapieżniki (lisy) Zauważmy, że symulacja sugeruje iż zmienność obu populacji ma charakter okresowy.
Ewolucja czasowa i portrety fazowe - Inne przykładowe symulacje Przykładowe rozwiązania y1(t), y2(t) oraz portret fazowy dla układu Lotki-Volterry.
Równania Lotki — jedna reakcja autokatalityczna Wprowadzając wygodniejsze oznaczenia: Możemy układ ten przepisać w następującej formie: Główna część kodu w języku środowiska MATLAB do symulacji układu równań Lotki:
Równania Lotki — jedna reakcja autokatalityczna Symulacje numeryczne Modelu Lotki w MATLAB-ie dla następujących parametrów: Czas symulacji przyjmiemy tend =5·105. Zastosowanie standardowej procedury ode45 (implementujacej metodę Rungego-Kutty 4-tego rzędu) z domyślnymi ustwieniami tolerancji błędów dla przypadku a) daje wyniki:
Równania Lotki — przykładowy portret fazowy Poniżej jest przedstawiony portret fazowy układu Lotki dla danych z punktu a). Portret fazowy oznacza, że rysujemy wyniki obliczeń w układzie y1-y2. Tzn. na osi OX odkładane są wartości y1(t), a na osi OY wartości y2(t).
Metoda jawna Eulera: Metoda niejawna Eulera: Metoda Rungego-Kutty 2-go rzędu: Metoda Rungego-Kutty 4-go rzędu: gdzie:
Równania drugiego rzędu Rozważmy równanie ruchu wahadła matematycznego ((t)=kąt wychylenia): Wprowadzając w2=g/l otrzymujemy Zamieniamy na układ wprowadzając:
Prosta implementacja w MATLAB-ie wraz z wykresem pokazującym zależność kata od czasu. Dla wygody kąt jest na wykresie podawany w stopniach. Rozwiązanie jest okresowe. Dla małych wychyleń jest to prawie sinusoida. W ogólnym przypadku tak nie jest. W szczególności okres drgań zależy do amplitudy.
Równanie van der Pola Równanie to zostało pierwotnie zaproponowane do opisu pewnego układu elektronicznego składającego się z obwodu rezonansowego RLC sprzężonego indukcyjnie z cewką. Przez cewkę płynie prąd zależny do napięcia nieliniowo. Dokładniej była to zależność trzeciego stopnia: Stosując prawa Kirchoffa do tego układu i wprowadzając przeskalowane nowe zmienne otrzymujemy standardowe równanie różniczkowe zwyczajne: gdzie y=y(t) jest funkcją czasu, a stała 0 charakteryzuje wielkość tłumienia. Równoważny układ równań pierwszego rzędu to:
Równanie van der Pola =1, y1(0)=2, y2(0)=0, T=30.
NDSolve[{równania, warunki}, {t, tmin, tmax}] Ciągłe układy dynamiczne w środowisku Mathematica W środowisku Mathematica do numerycznego rozwiązywania układów dynamicznych służy funkcja NDSolve. Podstawowa składnia ma postać: NDSolve[{równania, warunki}, {t, tmin, tmax}] Przykład 1: sol=NDSolve[{y'[t]==y[t]Cos[t+y[t]],y[0]==1}, y, {t, 0, 30}] Plot[Evaluate[y[t]/.sol], {t, 0, 30}, PlotRange->All] Przykład 2: sol=NDSolve[{x'[t] == -y[t] - x[t]^2, y'[t] == 2x[t] - y[t]^3, x[0]==y[0]==1}, {x, y}, {t, 20}] ParametricPlot[Evaluate[{x[t], y[t]} /. sol], t, 0, 20}]
Ewolucja populacji z uwzględnieniem dyfuzji – model Fishera Założenia: Występuje tylko jeden gatunek. Problem jest jednowymiarowy (stworzenia żyją na linii prostej) ograniczony do skończonego odcinka, tzn. osobniki nie opuszczają tego obszaru. Dla małych gęstości układ rozwija się zgodnie z modelem logistycznym. Na skutek tłoku (lokalne zagęszczenie populacji) osobniki mają tendencję do migracji z obszarów o dużym zagęszczeniu do obszarów o mniejszym zagęszczeniu. Tempo migracji jest proporcjonalne do gradientu gęstości populacji. Współczynnik tego tempa nazywamy współczynnikiem dyfuzji i oznaczamy przez D. Niech c(x,t) oznacza gęstość osobników w punkcie x w momencie czasu t. Populacja żyje na odcinku [0, l] R, tak więc 0 x l oraz t 0. Jakie równanispełnia c(x,t)? l x
Strumień dyfuzyjny Ogólna idea przmieszczania się cząstek substancji, osobników jakiejś populacji, itp. na skutek dyfuzji polega na tym, że następuje ruch netto od obszarów o większym stężeniu do obszarów o niższym stężeniu. Ruch pojedynczego obiektu (cząstki, osobnika) jest przypadkowy (losowy), ale na skutek różnicy stężeń (gęstości) objętościowych lub powierzchniowych mamy średnie przemieszczanie się większych zbiorowisk w kierunku mniejszych stężeń. Ilościowo możemy to wyrazić w ten sposób, że co można dokładniej zapisać matematycznie jako pochodną względem położenia: gdzie D>0 jest stałą charakteryzującą szybkość dyfuzji (tzw. współczynnik dyfuzji)
Matematyczny opis modelu Fishera Niech c(x,t) oznacza gęstość osobników w punkcie x w momencie czasu t. Wtedy przyjęte założenia mogą być wyrażone następującym równaniem PDE z warunkami brzgowymi Ponadto zakładamy, że znamy początkowy rozkład populacji c0(x):
Matematyczny opis modelu Fishera Po przeskalowaniu zmiennych możemy wyjściowy problem sprowadzić do następującego z warunkiem początkowym c0(x): gdzie przeskalowany współczynnik dyfuzji: stałe skalujące dla czasu i położenia
Dyskretyzacja równania Fishera Stąd mamy Zatem
Uwzględniając warunki brzegowe otrzymujemy ostatecznie następujący układ równań różniczkowych zwyczajnych (metoda linii) aproksymujący wyjściowe równanie Fishera: który rozwiązujemy z warunkami początkowymi Funkcja c0(x) jest dana i oznacza początkowy rozkład populacji. W powyższym równaniu nie występują wartości w węzłach x0 i xn, gdyż na mocy warunków brzegowych mamy c0=c1oraz cn=cn-1.