{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "617e107d",
   "metadata": {},
   "source": [
    "<b>ASK chatGPT:please write a python code to calculate the area of a unit circle. Use random number.</b><br>\n",
    "<b>chatGPT ANSWER:</b><br>\n",
    "To estimate the area of a unit circle using a random number method (such as the Monte Carlo method), we can randomly generate points within a square that bounds the circle, then calculate how many of those points fall inside the circle.<br>\n",
    "\n",
    "Here's the Python code to estimate the area of a unit circle using the Monte Carlo method:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "fbbd37a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimated π: 3.1423944\n",
      "Estimated area of the unit circle: 3.1423944\n",
      "N= 10000000  dt= 9.89962\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import time\n",
    "def estimate_pi(num_samples):\n",
    "    inside_circle = 0\n",
    "    for _ in range(num_samples):\n",
    "        # Generate random (x, y) points between -1 and 1\n",
    "        x = random.uniform(-1, 1)\n",
    "        y = random.uniform(-1, 1)\n",
    "        # Check if the point is inside the unit circle\n",
    "        if x**2 + y**2 <= 1:\n",
    "            inside_circle += 1\n",
    "    # The ratio of points inside the circle to total points is approximately π/4\n",
    "    pi_estimate = (inside_circle / num_samples) * 4\n",
    "    return pi_estimate\n",
    "\n",
    "# Set the number of random samples (the higher, the more accurate)\n",
    "num_samples = 10000000\n",
    "# Estimate π and the area of the unit circle\n",
    "t0=time.time()\n",
    "pi_estimate = estimate_pi(num_samples)\n",
    "t1=time.time(); dt=round(t1-t0,5)\n",
    "area_estimate = pi_estimate  # Since the area of the unit circle is π\n",
    "print(f\"Estimated π: {pi_estimate}\")\n",
    "print(f\"Estimated area of the unit circle: {area_estimate}\")\n",
    "print('N=',num_samples,' dt=',dt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d4e4161",
   "metadata": {},
   "source": [
    "<div style=\"background-color:lightblue;\">\n",
    "<hr size=\"10\">    \n",
    "<pre>\n",
    "Estimated π: 3.1358\n",
    "Estimated area of the unit circle: 3.1358\n",
    "N= 100000  dt= 0.11096\n",
    "\n",
    "Estimated π: 3.142576\n",
    "Estimated area of the unit circle: 3.142576\n",
    "N= 1000000  dt= 1.00736\n",
    "\n",
    "Estimated π: 3.1423944\n",
    "Estimated area of the unit circle: 3.1423944\n",
    "N= 10000000  dt= 9.89962\n",
    "</pre>\n",
    "<hr size=\"5\" color=\"lightgreen\">        \n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "6200468e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimated π: 3.04\n",
      "Estimated area of the unit circle: 3.04\n",
      "N= 100  dt= 0.15787\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import random\n",
    "import time\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "def estimate_pi(num_samples):\n",
    "    inside_circle = 0\n",
    "    for _ in range(num_samples):\n",
    "        # Generate random (x, y) points between -1 and 1\n",
    "        x = random.uniform(-1, 1)\n",
    "        y = random.uniform(-1, 1)\n",
    "        plt.plot(x,y,'bo')\n",
    "        # Check if the point is inside the unit circle\n",
    "        if x**2 + y**2 <= 1:\n",
    "            inside_circle += 1\n",
    "    # The ratio of points inside the circle to total points is approximately π/4\n",
    "    pi_estimate = (inside_circle / num_samples) * 4\n",
    "    return pi_estimate\n",
    "\n",
    "# Set the number of random samples (the higher, the more accurate)\n",
    "num_samples = 100\n",
    "# Estimate π and the area of the unit circle\n",
    "t0=time.time()\n",
    "pi_estimate = estimate_pi(num_samples)\n",
    "t1=time.time(); dt=round(t1-t0,5)\n",
    "area_estimate = pi_estimate  # Since the area of the unit circle is π\n",
    "print(f\"Estimated π: {pi_estimate}\")\n",
    "print(f\"Estimated area of the unit circle: {area_estimate}\")\n",
    "print('N=',num_samples,' dt=',dt)\n",
    "\n",
    "#xc=np.arange(-1,1+0.01,0.01)\n",
    "xc=np.linspace(-1,1,100)\n",
    "yc1=(1-xc**2)**0.5\n",
    "yc2=-(1-xc**2)**0.5\n",
    "plt.plot(xc,yc1,'r-')\n",
    "plt.plot(xc,yc2,'r-')\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c6d878ac",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
