Reacțiile cu difuzie sunt foarte răspândite în domeniul graficii computerizate și în alte domenii. Cu toate acestea, este destul de dificil să găsiți informații despre ele (în special în limba rusă). Toate sursele fie se concentrează pe aspectele chimice (și sunt foarte complicate), fie acoperă problema foarte superficial.
Aici vreau să aduc o piesă de lucru finalizată, care poate fi jucată. În plus, implementarea algoritmilor pentru reacții cu difuzie vă permite să arătați toată puterea impulsului.
Un pic de teorie
Vom lua în considerare un model foarte simplu (cel mai simplu). Există mai multe simplificări în ea, ceea ce nu face foarte fizic, dar simplifică foarte mult toate calculele.
- Vom lua în considerare un amestec de două substanțe. Concentrațiile pe care le desemnează prin A și B.
- Pentru fiecare substanță introducem coeficientul de difuzie.
- Introducem o regulă: dacă există trei molecule de B-B-A, atunci există o reacție, iar A este convertit în B (a obține B-B-B).
- Ieșirea A și influxul B vor fi compensate prin sumele artificiale din formule.
Matematic, acest lucru poate fi scris ca:
Aceste expresii descriu modul în care se schimbă A și B prin timpul dt:
- Primul termen: difuzie
- În al doilea rând: probabilitatea întâlnirii B-B-A (nu strict, dar acceptabilă)
- În al treilea rând: ieșirea și afluxul artificial
Vă rugăm să rețineți că, pentru a realiza algoritmul vom avea nevoie de patru sub-ciclu (două - pentru a ocoli densitatea matricei, două - pentru calcularea Laplace). Numpy a permis să nu scrie niciunul dintre ele.
Și, bineînțeles, numpy vă permite să creșteți productivitatea în zeci (sau chiar sute) de ori. Aici creăm 300 de cadre cu un pas de 50 de iterații între cadre. Aceasta este de 15.000 iterații și acestea sunt executate într-o chestiune de secunde!
Prin respingerea acestui cod, puteți juca singur cu diferite valori ale parametrilor. Coeficienții de difuzie nu afectează foarte mult imaginea. Acestea afectează dimensiunea elementelor modelului. Dar K și F sunt foarte influente. Încercați un pic pentru a le schimba și veți vedea cum se va schimba imaginea.