Dinamika

Strategi dalam kalkulus adalah membagi masalah ke bagian yang lebih mudah lalu mengumpulkannya untuk menemukan solusi.

Memecahkan Persamaan Diferensial

Memecahkan persamaan diferensial sama seperti menemukan nilai sebagai fungsi dari variabel bebas.

Fungsinya adalah integrateODE() yang dapat menyelesaikan persaman diferensial biasa. Fungsi ini mengambil persamaan diferensial sebagai input bersama dengan nilai awal. Objek yang dibuat oleh fungsi tersebut adalah fungsi waktu. Contoh penerapannya adalah

library(mosaicCalc)
## Loading required package: mosaicCore
## Loading required package: Deriv
## Loading required package: Ryacas
## 
## Attaching package: 'Ryacas'
## The following object is masked from 'package:stats':
## 
##     integrate
## The following objects are masked from 'package:base':
## 
##     %*%, diag, diag<-, lower.tri, upper.tri
## Registered S3 method overwritten by 'mosaic':
##   method                           from   
##   fortify.SpatialPolygonsDataFrame ggplot2
## 
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
## 
##     D
variabel <- integrateODE(dx ~ r * x * (1 - x / K),
                         x = 97, K=9.8, r = 0.5,
                         tdur = list(from = 0, to = 20))

Berikut ini nilai-nilai dit = 0 - 13.

variabel$x(0:13)
##  [1] 97.000000 21.550415 14.642432 12.258997 11.157439 10.580775 10.259170
##  [8] 10.073459  9.964060  9.898856  9.859722  9.836137  9.821886  9.813263

Berikut ini solusi terhadap waktu dari fungsi tersebut.

library(mosaicCalc)
slice_plot(variabel$x(t) ~ t, domain(t=0:20))

Sistem Persamaan Diferensial

Sistem persamaan variabel yang memiliki lebih dari satu variabel dapat juga ditangani. Contoh penerapannya adalah :

epi <- integrateODE(dS ~ -a * S * I,
                    dI ~ a * S * I - b * I,
                    a = 0.0026, b = 0.5, S=762, I = 1,
                    tdur = 20)

Sistem ini dapat diselesaikan untuk menghasilkan dua fungsi yakni S(t) dan I(t). Kodenya adalah :

slice_plot(epi$S(t) ~ t, domain(t=0:20)) %>%
  slice_plot(epi$I(t) ~ t, color = "red")