diff --git a/rabbits-and-foxes-kmc-question.ipynb b/rabbits-and-foxes-kmc-question.ipynb index 657efb4..e1fbece 100644 --- a/rabbits-and-foxes-kmc-question.ipynb +++ b/rabbits-and-foxes-kmc-question.ipynb @@ -71,13 +71,105 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final rabbit population: 46\n", + "Final fox population: 12\n" + ] + }, + { + "data": { + "image/png": "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13fP9TnnNYjaXlr/9bjOvouFiIgUSZIk3HfffYiNjYVKpUJWVpbcIclO1llmDz30ED777DN8/fXXiIyMtI/nMRqNCA0NRVlZGebMmYObb74ZKSkpOH78OGbPno34+HjceOON9rb33HMPHn/8ccTFxSE2NhZPPPEEevfubZ911qNHD1xzzTW499578cEHHwAA7rvvPowfPz7wZpht+8hRb2jtocgU4NwR38VDRESKk5mZicWLF2Pt2rXo2LEj4uPj5Q5JdrL2EL3//vswmUwYOXIkUlJS7D+ff/45AECj0WDPnj244YYb0LVrV0yZMgVdu3bFb7/9hsjISPtxXn/9dUycOBG33norhg0bhrCwMHz77bfQaDT2NkuXLkXv3r0xZswYjBkzBn369MGnn37q89/Z60obHiRud918R91S691YiIhIkY4ePYqUlBQMHToUycnJ0Gpl7R9RBNlvmTX0M3XqVABAaGgofvrpJxQUFKC6uhonTpzA4sWL6834CgkJwdtvv41z586hoqIC3377bb02sbGxWLJkiX0K/ZIlSxAdHe2j39SHyuqPlXIR63RbsrKo8XZERBSQpk6dimnTpuHkyZNQqVTo0KEDzGYzHnnkESQmJiIkJATDhw/Htm3bAIh9wnr16oX77rvPfozs7GwYjUYsWLAAgPh7/sorr6Bjx44IDQ1F37598eWXX9rbFxUVYdKkSUhISEBoaCi6dOmCRYsW+fYXvwimhIGmKLvp1zU6Rz1nC9BjvHfjISIKJpIE1FTIc25dGNDIzGlnb775Jjp16oQPP/wQ27Ztg0ajwcyZM/HVV1/h448/Rvv27fHKK69g7NixOHLkCGJjY7F06VIMGjQI1157La6//npMnjwZV155Je69914AwNNPP43ly5fj/fffR5cuXbB+/XrceeedSEhIwIgRI/DMM89g//79+PHHHxEfH48jR46gsrLS21ekRZgQBbPPJwGPHwQiG14FnIiIWqimApibKs+5Z58G9OEXbWY0GhEZGQmNRoPk5GSUl5fj/fffx+LFizFu3DgAYjeHVatWYeHChXjyySfRr18//POf/8S9996L22+/HUePHsXKlSsBAOXl5Zg/fz5++eUXDBkyBADQsWNHbNy4ER988AFGjBiBkydPon///hg4cCAAoEOHDl65BK2hiGn35AWTvmz8tS5jHfV/Dfd+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5jJRGnyYENn2TKsy+e6cRHRxth4i221tb7KtSVaa5/1zEfmQ2wszFhcXY+HChThw4ABUKhV69uyJu+++G0aj53oPbrvtNns9IyMDAwcORPv27fH999/jpptuavR9tlt3Ng0tC3BhmwvNmjULjz32mP1xSUkJ0tLSWvoreE91XULkyx6i+K6OurnMt8kYETXOpz1EdWuSsYeIAoxbg6q3b9+OTp064fXXX8f58+dRWFiI+fPno1OnTti503vjS1JSUtC+fXscPnwYAJCcnIzq6moUFRW5tCsoKEBSUpK9zZkz9Qf/nT171t6mIQaDAVFRUS4/imJPiMJ9d07n1bFNOb47LxE1zd5DFNNkM49gDxEFKLcSokcffRQTJkzA8ePHsXz5cqxYsQLZ2dkYP348ZsyY4eEQHc6dO4ecnBykpIh/kAMGDIBOp8OqVavsbfLy8rB3714MHToUADBkyBCYTCZs3brV3mbLli0wmUz2Nn7Jfsss0rfntSVFxSd9e14iapx9llm098/FHiIKUG7dMtu+fTsWLFgArdbxdq1Wi5kzZ2LgwIHNPk5ZWRmOHDlif5ydnY2srCzExsYiNjYWc+bMwc0334yUlBQcP34cs2fPRnx8PG688UYAgNFoxD333IPHH38ccXFxiI2NxRNPPIHevXvbZ5316NED11xzDe6991588MEHAID77rsP48eP998ZZgBwrG5gu62nyFei2wP5e5gQESmJrYfIF7fMIutm/R7f4P1zEfmQWz1EUVFROHmy/h/EnJwcREY2v8di+/bt6N+/P/r37w8AeOyxx9C/f388++yz0Gg02LNnD2644QZ07doVU6ZMQdeuXfHbb7+5nOP111/HxIkTceutt2LYsGEICwvDt99+C41GY2+zdOlS9O7dG2PGjMGYMWPQp08ffPrpp+786spTU+Xb8+nCRHngW9+el4gaV1k3bMAXPUQRTsugmHIbb0fkZ9zqIbrttttwzz334NVXX8XQoUOhUqmwceNGPPnkk7j99tubfZyRI0dCkqRGX//pp58ueoyQkBC8/fbbePvttxttExsbiyVLljQ7Lr/S0Tcz/uxKTokye51vz0tEjTt7SJS+6CGK6eCoF/wBGNt6/5xEPuBWQvTqq69CpVLhrrvuQm2tWL5dp9PhgQcewEsvveTRAKkR+kigutTRY+Mrl90LnPjVN4M3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ucMgIoXiStVE5PdUKlWTr0+ZMgXvvPMOzGYz4uLifBQVEfkTJkRE5Pfy8/Pt9c8//xzPPvusyy7boaGhMBqNcoRGRH6Ct8yIyO8lJyfbf4xGI1QqVb3nLrxlNnXqVEycOBFz585FUlISoqOj8fzzz6O2thZPPvkkYmNj0bZtW/zf//2fy7lOnTqF2267DTExMYiLi8MNN9yA48eP+/YXJiKPY0JEREHrl19+wenTp7F+/XrMnz8fc+bMwfjx4xETE4MtW7bg/vvvx/3334+cnBwAQEVFBa688kpERERg/fr12LhxIyIiInDNNdegurpa5t+GiFqDCRERBa3Y2Fi89dZb6NatG+6++25069YNFRUVmD17Nrp06YJZs2ZBr9fj119/BQAsW7YMarUaH330EXr37o0ePXpg0aJFOHnyJNauXSvvL0NEraKVOwAiIrn06tULarXje2FSUhIyMjLsjzUaDeLi4lBQUAAA2LFjB44cOYLIyEiX41RVVeHo0aO+CZqIvIIJEREFLZ1O5/JYpVI1+JzVagUAWK1WDBgwAEuXLq13rISEBO8FSkRex4SIiKiZLrnkEnz++edITExEVFSU3OEQkQdxDBERUTNNmjQJ8fHxuOGGG7BhwwZkZ2dj3bp1mD59OnJzc+UOj4hagQkREVEzhYWFYf369WjXrh1uuukm9OjRA3fffTcqKyvZY0Tk57gwIxEREQU99hARERFR0GNCREREREGPCREREREFPSZEREREFPSYEBEREVHQY0JEREREQY8JEREREQU9JkREREQU9JgQERERUdBjQkRERERBjwkRERERBb3/B3rfaUTYFjHOAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } - }, + ], + "source": [ + "# known parameters\n", + "k1 = 0.015\n", + "k2 = 0.00004\n", + "k3 = 0.0004\n", + "k4 = 0.04\n", + "end_time = 600.0\n", + "\n", + "# initial conditions\n", + "time = 0\n", + "rabbit = 400\n", + "fox = 200\n", + "\n", + "# initialize lists\n", + "times = [time]\n", + "rabbits = [rabbit]\n", + "foxes = [fox]\n", + "\n", + "# run kinetic monte carlo simulation\n", + "while time < end_time:\n", + " # calculate rates for each possible event\n", + " rate_rabbit_birth = k1 * rabbit\n", + " rate_rabbit_death = k2 * rabbit * fox\n", + " rate_fox_birth = k3 * rabbit * fox\n", + " rate_fox_death = k4 * fox\n", + "\n", + " # store rates in array and calculate cumulative rates\n", + " rates = np.array([rate_rabbit_birth, rate_rabbit_death, rate_fox_birth, rate_fox_death])\n", + " cumulative_rates = rates.cumsum()\n", + " total_rate = cumulative_rates[-1]\n", + "\n", + " # generate two random numbers\n", + " u1 = np.random.uniform(0, 1)\n", + " u2 = np.random.uniform(0, 1)\n", + "\n", + " # calculate time to next event\n", + " dt = -np.log(u1) / total_rate\n", + " time += dt\n", + " \n", + " # determine which event occurs\n", + " for i, cum_rate in enumerate(cumulative_rates):\n", + " if cum_rate / total_rate > u2:\n", + " event = i\n", + " break\n", + " \n", + " # update populations based on event\n", + " if event == 0: # rabbit birth\n", + " rabbit += 1\n", + " elif event == 1: # rabbit death\n", + " rabbit -= 1\n", + " elif event == 2: # fox birth\n", + " fox += 1\n", + " elif event == 3: # fox death\n", + " fox -= 1\n", + " \n", + " # store results\n", + " times.append(time)\n", + " rabbits.append(rabbit)\n", + " foxes.append(fox)\n", + "\n", + "# print results\n", + "print(f\"Final rabbit population: {rabbits[-1]}\")\n", + "print(f\"Final fox population: {foxes[-1]}\")\n", + "\n", + "# format plot\n", + "plt.plot(times, rabbits, label = \"rabbits\")\n", + "plt.plot(times, foxes, label = \"foxes\")\n", + "plt.xlabel(\"Time\")\n", + "plt.ylabel(\"Population\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [] } @@ -85,9 +177,9 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "5137", + "display_name": "Python [conda env:base] *", "language": "python", - "name": "python3" + "name": "conda-base-py" }, "language_info": { "codemirror_mode": { @@ -99,7 +191,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.13.5" } }, "nbformat": 4,