ПредишенСледващото

Реакциите на разпространението на много широко използвани в компютърната графика и други области. Въпреки това, да се намери информация за тях (особено на руски) е трудно. Всички източници или се фокусира върху химичните аспекти (а те са много сложни) или подчертават проблема много повърхностно.

Тук искам да ви даде работа, завършен част от код, който може да се играе. В допълнение, изпълнението на алгоритми реакции с дифузия ви дава възможност да се покаже цялата мощ на numpy.

Малко теория

Ще разгледаме един много прост модел (много лесно). В него има някои опростявания, които го правят не много физика, но значително опростява всички изчисления.

  • Ще разгледаме смес от двете вещества. Концентрация ще бъде означен А и Б.
  • За всяко вещество, ще се въведе коефициент на дифузия.
  • Ние въведе правило: ако има три молекули на В-В-А, тогава има реакция, и А се превръща в В (точка В-В-В).
  • А отлив и прилив на B, ние ще компенсира изкуствено термин в ур.

Математически, това може да се изписва така:

Тези фрази описват как да се промени А и Б в DT време:

  • Първият план: Diffusion
  • Второ, вероятността за среща В-В-А (не много строг, но приемливи)
  • Трето: изкуствен отлив и приток

Моля, имайте предвид, че за да се реализира алгоритъма ще се нуждаем от четири суб-цикъл (две - да се заобиколят плътност на матрицата, два - за изчисляване на Лаплас). Numpy позволи да напише нито една от тях.

И разбира се, numpy позволява десетки (или дори стотици) пъти за повишаване на производителността. Тук ние създаваме 300 снимки на стъпки от 50 повторения между рамки. Този 15 000 повторения и те се изпълняват в рамките на няколко секунди!

Отеквайки от този код, можете ръчно да играят с различни стойности на параметрите. коефициенти на дифузия не окажат значително влияние върху снимката. Те оказват влияние върху размера на елементите на модела. Но К и F влияе много силно. Опитайте малко да ги промени и ще видите как се променят картината.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!