• Nie Znaleziono Wyników

Metody numeryczne rozwiązywania równań różniczkowych cząstkowych

N/A
N/A
Protected

Academic year: 2021

Share "Metody numeryczne rozwiązywania równań różniczkowych cząstkowych"

Copied!
4
0
0

Pełen tekst

(1)

Metody numeryczne rozwiązywania równań różniczkowych cząstkowych

Marcin Orchel

Spis treści

1 Wstęp 1

2 Zadania 1

2.1 Zadania na 3.0 . . . 1

1 Wstęp 2 Zadania

2.1 Zadania na 3.0

• Rozwiązać metodą numeryczną wybrane równanie różniczkowe cząstkowe pierw- szego rzędu z wybranymi warunkami.

• Rozwiązać metodą numeryczną wybrane równanie różniczkowe cząstkowe drugiego rzędu z wybranymi warunkami.

• Rozwiązać metodą numeryczną wybrany układ równań różniczkowych cząstkowych pierwszego, drugiego rzędu z wybranymi warunkami.

• Rozwiązać równanie eliptyczne, paraboliczne i hiperboliczne

• Porównać z rozwiązaniem symbolicznym z wolframalpha.com.

• Rozwiązać równanie reakcji-dyfuzji określone na prostokącie Ω = (0, a) × (0, b) z niewiadomą u = u(x, y, t)

∂u

∂t = β∆u + f (u) (1)

u (x, y, t) = 0 (2)

u (x, y, 0) = u0(x, y) (3)

dla (x, y) ∈ Ω

• czy zwiększenie liczby węzłów siatki polepsza rozwiązanie 1

(2)

Funkcja u0 to wartość rozwiązania w chwili początkowej. Symbol ∆ to dwuwymiarowy operator dyfuzji, tzw. operator Laplace’a

∆u = 2u

∂x2 +2u

∂y2 (4)

Przykładowo f (u) = u − u3. Wskazówki

• Jak sprowadzić równanie różniczkowe cząstkowe do układu równań różniczkowych zwyczajnych? Mamy równomierną siatkę węzłów pij = (xi, yj) ∈ Ω. Przyjmiemy xi = ihx, yj = jhy, gdzie hx = a/(Nx+ 1) jest krokiem siatki w kierunku x i ana- logicznie hy = b/(Ny+ 1). Oznaczamy uij(t) = u(xi, yj, t). Zastępujemy pochodne przestrzenne ilorazami różnicowymi

∆uij ≈ ∆huij = 1

h2x (2ui,j− ui+1,j − ui−1,j) + 1

h2y (2ui,j− ui,j+1− ui,j−1) (5) przybliżamy układem równań różniczkowych zwyczajnych

d

dtU (t) = β∆h(U (t)) + f (U (t)) (6) Tablica U jest rozmiaru Nx× Ny o elementach będących funkcjami czasu U (t) = (uij(t)) dla 1 ≤ i ≤ Nx, 1 ≤ j ≤ Ny, a operator ∆hjest dyskretyzacją dwuwymiaro- wego laplasjanu. We węzłach brzegowych u jest równa zeru jak w warunkach, więc nie trzeba jej wyznaczać. Trzeba rozwiązać układ Nx· Ny równań różniczkowych zwyczajnych.

Wskazówki do R

• pakiet deSolve

• https://www.rdocumentation.org/packages/deSolve/versions/1.20/topics/

ode.1D

• https://cran.r-project.org/web/packages/deSolve/vignettes/deSolve.pdf Przykłady w R

• Aphid <- function(t, APHIDS, parameters) { deltax <- c (0.5, rep(1, numboxes - 1), 0.5) Flux <- -D * diff(c(0, APHIDS, 0)) / deltax dAPHIDS <- -diff(Flux) / delx + APHIDS * r

# the return value list(dAPHIDS ) }

2

(3)

D <- 0.3 # m2/day diffusion rate r <- 0.01 # /day net growth rate delx <- 1 # m thickness of boxes numboxes <- 60

# distance of boxes on plant, m, 1 m intervals

Distance <- seq(from = 0.5, by = delx, length.out = numboxes)

# Initial conditions: # ind/m2 APHIDS <- rep(0, times = numboxes) APHIDS[30:31] <- 1

state <- c(APHIDS = APHIDS) # initialise state variables times <-seq(0, 200, by = 1)

print(system.time(out <- ode.1D(state, times, Aphid, parms = 0, nspec = 1, names = "Aphid")))

• drugi przykład

Aphid <- function(t, APHIDS, parameters) { deltax <- c (0.5, rep(1, numboxes - 2), 0.5) dAPHIDS <- -diff(c(0, APHIDS)) / deltax

list(dAPHIDS) }

r <- 0.01 delx <- 1 numboxes <- 60

Distance <- seq(from = 0.5, by = delx, length.out = numboxes) APHIDS <- rep(0, times = numboxes)

APHIDS[30:31] <- 1

state <- c(APHIDS = APHIDS) times <-seq(0, 200, by = 1)

print(system.time(out <- ode.1D(state, times, Aphid, parms = 0, nspec = 1, names = "Aphid")))

image(out, method = "filled.contour", grid = Distance, xlab =

"time, days", ylab = "Distance on plant, m", main = "Aphid density on a row of plants")

• trzeci przykład

3

(4)

Aphid <- function(t, APHIDS, parameters) { deltax <- c (0.5, rep(1, numboxes-2), 0.5) dAPHIDS <- -diff(c(APHIDS, 0)) / deltax list(dAPHIDS)

}

delx <- 1 numboxes <- 50

Distance <- seq(from = 0.5, by = delx, length.out = numboxes) APHIDS <- rep(1, times = numboxes)

state <- c(APHIDS = APHIDS) state <- seq(1,50)

times <-seq(0, 10, by = 0.1)

print(system.time(out <- ode.1D(state, times, Aphid, parms = 0, nspec = 1, names = "Aphid")))

head(out[,1:2]) plot(times, out[,1])

4

Cytaty

Powiązane dokumenty

Praca składałaby się z części teoretycznej pokazującej jak zapisać rozwiązanie w postaci wartości oczekiwanej pewnego procesu losowego, oraz części implementującej Monte

Wykorzystuj¹c wzór na dyla- tacjê czasu (MT 06/06), stwierdzamy, ¿e jeœli po- ci¹g porusza siê z prêdkoœci¹ v, to czas zmie- rzony pomiêdzy zdarzeniami (wys³anie i

Wyka˙z, ˙ze dla ka˙zdej liczby rzeczywistej λ problem powy˙zszy posiada niezerowe gÃladkie rozwi azania.. , Wskaz´ owka: metoda

Jeśli zagadnienie nie jest regularne lub wartości pochodnych na pewnych odcinkach są duże, to należy się spodziewać, że błąd globalny (np. w normie L2{K))

Jak widać, wyniki otrzymane metodą Eulera i metodą Rungego-Kutty są do siebie podobne, aby jednak podobieństwo to stało się wyraźniejsze (i aby dokończyć rozwiązywania

Czy zagadnienie Dirichleta dla równania Laplace’a jest dobrze postawione w obszarach nieograniczonych?.

Podać przykład zewnętrznego zagadnienia Neumanna dla równania hiperbolicznego w przypadku n=2.. Opisać interpretację (fizyczną, chemiczną, lub dowolną inną) dla

• Istnieją teorie i twierdzenia dotyczące jednego równania (lub wąskiej klasy równań).. Podstawowe problemy RRC (1) istnienie rozwiązania (2) jednoznaczność