Guest User

Untitled

a guest
Oct 20th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. {k1 = 1.1, k2 = 0.1, k3 = 0.8, e = 100, s = 100, c = 1, p = 1,
  2. numOfReaction = 100, numOfsim = 10};
  3.  
  4. sim = NestList[(
  5. [CapitalDelta]t1 =
  6. RandomVariate@ExponentialDistribution[k1 #[[2]] #[[3]]];
  7. [CapitalDelta]t2 =
  8. RandomVariate@ExponentialDistribution[k2 #[[4]]];
  9. [CapitalDelta]t = Min[[CapitalDelta]t1, [CapitalDelta]t2];
  10. If[[CapitalDelta]t1 < [CapitalDelta]t2, {#[[
  11. 1]] + [CapitalDelta]t, #[[2]] - 1, #[[3]] - 1, #[[4]] +
  12. 1}, {#[[1]] + [CapitalDelta]t, #[[4]] - 1, #[[2]] +
  13. 1, #[[3]] + 1}]) &, {0, e, s, c}, numOfReaction];
  14.  
  15. ListStepPlot[{Transpose@{sim[[All, 1]], sim[[All, 2]]},
  16. Transpose@{sim[[All, 1]], sim[[All, 4]]}},
  17. PlotLegends -> {"Simulation"},
  18. PlotStyle -> Directive[AbsoluteThickness[0.2]], Frame -> True,
  19. PlotTheme -> "Detailed", FrameLabel -> {"Time", "Population"},
  20. ImageSize -> Large]
  21.  
  22. NestList[(
  23. [CapitalDelta]t1 =
  24. RandomVariate[ExponentialDistribution[k1 #[[2]] #[[3]]]];
  25. [CapitalDelta]t2 =
  26. RandomVariate[ExponentialDistribution[k2 #[[4]]]];
  27. [CapitalDelta]t3 =
  28. RandomVariate[ExponentialDistribution[k3 #[[4]]]];
  29. [CapitalDelta]t =
  30. Min[{[CapitalDelta]t1, [CapitalDelta]t2, [CapitalDelta]t3}];
  31. If[[CapitalDelta]t1 < [CapitalDelta]t2, {#[[
  32. 1]] + [CapitalDelta]t, #[[2]] - 1, #[[3]] - 1, #[[4]] +
  33. 1}, {#[[4]] - 1, #[[2]] + 1, #[[3]] + 1}];
  34. If[[CapitalDelta]t1 < [CapitalDelta]t3, {#[[
  35. 1]] + [CapitalDelta]t, #[[2]] - 1, #[[3]] - 1, #[[4]] +
  36. 1}, {#[[4]] - 1, #[[2]] + 1, #[[5]] + 1}];
  37. If[[CapitalDelta]t2 < [CapitalDelta]t3, {#[[
  38. 1]] + [CapitalDelta]t, #[[4]] - 1, #[[2]] + 1, #[[3]] +
  39. 1}, {#[[4]] - 1, #[[2]] + 1, #[[4]] + 1}]) &, {0, e, s,
  40. c}, numOfReaction]
Add Comment
Please, Sign In to add comment