DINAMIKA

Strategi dasar dalam kalkulus adalah membagi masalah yang menantang menjadi bagian-bagian yang lebih mudah, dan kemudian mengumpulkan bagian-bagian tersebut untuk menemukan solusi keseluruhan.

Memecahkan persamaan diferensial “Memecahkan” persamaan diferensial sama dengan menemukan nilai keadaan sebagai fungsi dari variabel bebas. Dalam “persamaan diferensial biasa”, hanya ada satu variabel bebas, biasanya disebut waktu. Dalam “persamaan diferensial parsial”, ada dua atau lebih variabel dependen, misalnya waktu dan ruang.

Fungsi tersebut integrateODE()menyelesaikan persamaan diferensial biasa yang dimulai dari kondisi awal keadaan tertentu. Fungsi integrateODE()mengambil persamaan diferensial sebagai input, bersama dengan nilai awal keadaan.

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
soln <- integrateODE(dx ~ r * x * (1 - x / K),
                     x = 20, K = 10, r = 0.5,
                     tdur = list(from=0, to=20))
soln$x(0:5)
## [1] 20.00000 14.35267 12.25400 11.25575 10.72579 10.42799

Seringkali, Anda akan merencanakan solusi terhadap waktu:

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

Sistem Persamaan Diferensial

Sistem persamaan diferensial dengan lebih dari satu variabel keadaan juga dapat ditangani.

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 = "brown")