{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 関数の積分\n",
    "\n",
    "今回の授業では一次元の関数の積分を考えます。\n",
    "\n",
    "> ## 復習\n",
    ">\n",
    "> Wikipediaの定積分の定義を引用し、積分の概念を復習します。\n",
    ">\n",
    "> 実数直線上の区間 $[a, b]$ 上で定義される実変数 $x$ の関数 $f$ の定積分 \n",
    "> $$\\int_a^b f(x)~dx$$\n",
    "> は、略式的に言えば $f$ のグラフと $x$軸、および $x = a$ と $x = b$ で囲まれる $xy$平面の領域の符号付面積として定義される。\n",
    "\n",
    "![定積分のイメージ](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Integral_example.svg/220px-Integral_example.svg.png)\n",
    "\n",
    "\n",
    "現代的な積分の概念にはリーマン積分、ルベーグ積分などがあります。今回の授業ではリーマン積分の定義を考察します。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 積分の概念\n",
    "\n",
    "初めに、$x=0$ から $x=1$ までの間で $f(x)=\\sqrt{x}+1$ によって与えられる曲線 $y=f(x)$ を考え、\n",
    "「$0$ から $1$ までの区間において $f$ の下にある領域の面積はいくらか」\n",
    "という問いを考えます。この（未知の）面積を $f$ の積分と呼んで\n",
    "\n",
    "$$\\int_{0}^{1}{\\sqrt {x}}+1~ dx $$\n",
    "\n",
    "で書き表します。\n",
    "\n",
    "![積分の例](http://www.ces-alpha.org/download/gs/?label=F7&conf_id=CM2018&verify=01914)\n",
    "\n",
    "> ニュートンとライプニッツが提案した微分積分学の基本定理（１７世紀）によりますと、上記の積分を$f(x)$の原始関数$F(x)=\\frac{2}{3}x^{3/2}+x$を利用することで算出できます。\n",
    ">\n",
    "> $$\\int_{0}^{1}{\\sqrt {x}}+1 ~ dx  = F(1) - F(0) = \\frac{5}{3}$$\n",
    ">\n",
    ">微分積分学の基本定理が発見されるまで、積分は微分とは関係ない「面積」という概念で理解されていました。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 面積の近似計算\n",
    "\n",
    "$f(x)=\\sqrt{x}+1$の$[0,1]$における積分の近似方法を考えます。\n",
    "\n",
    "\n",
    "### 2.1 準備：グラフを描く\n",
    "\n",
    "\n",
    "まず、曲線$y=f(x)$のグラフを描きます。\n",
    "<!--\n",
    "%関数fを定義する\n",
    "function value=f(x)\n",
    "    value = sqrt(x)+1;\n",
    "end\n",
    "\n",
    "% グラフを描くOctaveの関数を定義します。\n",
    "function draw_f()\n",
    "   x=0:0.001:1;\n",
    "   y=f(x);\n",
    "   plot(x,y,'r-');\n",
    "   hold on %現在グラフの上に新しいグラフを描く（重ねて）\n",
    "   grid on  %grid を描く\n",
    "   plot(0,0) %原点を描く\n",
    "   axis([0, 1.2, 0, 2.2], \"square\"); %x軸の範囲を[0,1.2]、y軸の範囲を[0,2.2]にする。\n",
    "end\n",
    "-->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#関数fを定義\n",
    "def f(x):\n",
    "    value = math.sqrt(x)+1\n",
    "    return value\n",
    "\n",
    "#グラフを描く関数を定義\n",
    "def draw_f():\n",
    "    x_list=[] \n",
    "    y_list=[]\n",
    "    for i in range(0,101):\n",
    "        x=i/100\n",
    "        x_list.append(x)\n",
    "        y_list.append(f(x))\n",
    "    plt.plot(x_list,y_list,'-r')\n",
    "    plt.grid() #グリッドを描く\n",
    "    plt.plot(0,0,'o',color='red') #原点を描く\n",
    "    \n",
    "    x_list.append(1); y_list.append(0)\n",
    "    x_list.append(0); y_list.append(0)\n",
    "    plt.fill(x_list,y_list,color=\"r\",alpha=0.2) #ピンク色で積分に対応するエリアを塗りつぶす"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#新しく作ったdraw_fという関数を呼び出して、グラフを描きます。\n",
    "draw_f()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "### 2.2 準備：ブロックを描く\n",
    "\n",
    "fill命令によって、長方形領域（ブロック）を緑色で塗りつぶします。\n",
    "\n",
    "> ### 塗りつぶしの方法\n",
    "> fillを使って、いくつかの点が囲んでいる範囲を指定の色と透過率で塗りつぶします。\n",
    ">\n",
    "> **使い方**：  fill(x座標のリスト, y座標のリスト, 色, 透過率)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1=0; x2=1\n",
    "y1=f(x1); y2=f(x2)\n",
    "\n",
    "#長方形の４つの頂点をリストにします。\n",
    "p1 = [x1, 0] #左下\n",
    "p2 = [x2, 0] #右下\n",
    "p3 = [x2,y2] #右上\n",
    "p4 = [x1,y2] #左上\n",
    "\n",
    "x_list = [p1[0],p2[0],p3[0],p4[0]] #x座標のリスト\n",
    "y_list = [p1[1],p2[1],p3[1],p4[1]] #y座標のリスト\n",
    "\n",
    "draw_f()\n",
    "plt.fill(x_list,y_list,color=\"g\",alpha=0.5) #緑色で長方形を塗りつぶす\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上記のコードをコンパクトにするために、ブロックを塗りつぶす関数を定義します。\n",
    "\n",
    "- draw_f_upper(x1,x2) : 区間$[x1, x2]$における$f(x)=\\sqrt{x}+1$をカバーするブロックを描く。\n",
    "- draw_f_lower(x1,x2) : 区間$[x1, x2]$における$f(x)=\\sqrt{x}+1$に囲まれるブロックを描く。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_f_upper(x1,x2):\n",
    "    y1=f(x1)\n",
    "    y2=f(x2)\n",
    "\n",
    "    x_list = [x1,x2,x2,x1] #x座標のリスト\n",
    "    y_list = [0,0,y2,y2]   #y座標のリスト\n",
    "    plt.fill(x_list,y_list,'g',alpha=0.7)\n",
    "    \n",
    "def draw_f_lower(x1,x2):\n",
    "    y1=f(x1)\n",
    "    y2=f(x2)\n",
    "\n",
    "    x_list = [x1,x2,x2,x1] #x座標のリスト\n",
    "    y_list = [0,0,y1,y1]   #y座標のリスト\n",
    "    plt.fill(x_list,y_list,'b',alpha=0.7)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "積分範囲を$[0,0.5]$と$[0.5,1]$に分けて、ブロックを描きます。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(1)\n",
    "draw_f()\n",
    "draw_f_upper(0, 0.5)\n",
    "draw_f_upper(0.5, 1)\n",
    "\n",
    "plt.figure(2)\n",
    "draw_f()\n",
    "draw_f_lower(0, 0.5)\n",
    "draw_f_lower(0.5, 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 面積の計算法\n",
    "\n",
    "ブロックの面積によって、積分値の上界と下界を算出することができます。\n",
    "\n",
    "$[0,1]$の分割点$x=0,0.5,1$におけるブロックの面積を検討してみます。このとき、各小区間の幅は$h=0.5$です。\n",
    "\n",
    "- 青色のブロックの面積は積分値の下界を与えます。$S1$と書きます。\n",
    "$$ S1 = h\\cdot [ \\, f(0) + f(0.5)\\, ] $$\n",
    "- 緑色のブロックの面積は積分値の上界を与えます。$S2$と書きます。\n",
    "$$ S2 = h\\cdot [ \\, f(0.5) + f(1)\\, ] $$\n",
    "\n",
    "\n",
    "\n",
    "### 演習1 \n",
    "\n",
    "分割点が$x=0,0.5,1$の場合に、\n",
    "青色のブロックの面積$S1$と緑色のブロックの面積$S2$を計算しなさい。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#演習1の計算過程を書いてください。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 演習2\n",
    "\n",
    "$[0,1]$の$10$等分割を考えます。積分領域をカバーする緑色のブロックと、積分領域に囲まれる青色のブロックを描いてみます。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#演習2\n",
    "\n",
    "n=10; h=1/n\n",
    "\n",
    "plt.figure(1)\n",
    "draw_f()\n",
    "for k in range(0,n):\n",
    "    draw_f_upper(k*h, k*h+h)\n",
    "\n",
    "plt.figure(2)\n",
    "draw_f()\n",
    "for k in range(0,n):\n",
    "    draw_f_lower(k*h, k*h+h)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "描いた緑色のブロックの面積$S2$と青色のブロックの面積$S1$を計算しなさい。それぞれ、積分値の上界と下界になります。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "S1 is: 1.6105093417068177\n"
     ]
    }
   ],
   "source": [
    "#ここに計算の過程を書いてください。\n",
    "#ヒントとして、S1の計算法を用意しています。S2の計算法を考えてください。\n",
    "\n",
    "h = 0.1\n",
    "S1 = 0.0\n",
    "for n in range(0,10):\n",
    "    x = n*h\n",
    "    S1 = S1 + h*f(x)\n",
    "    \n",
    "print(\"S1 is:\", S1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 演習3  (オプション)\n",
    "\n",
    "積分値の上界($S2$)と下界($S1$)の差が$0.01$以下に収まるように、$[0,1]$の分割点を調整して、$S1$, $S2$を計算してください。即ち、計算される$S1$, $S2$については，$S2-S1\\leq 0.01$を満たすことが要求されています。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#演習3\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 一般的な関数の積分\n",
    "\n",
    "### 演習4 (オプション)\n",
    "\n",
    "この授業で紹介した方法を利用して、以下の関数の$[0,1]$における積分の近似値を計算してみてください。\n",
    "分割の点で関数の値が発散する場合、分割の小区間の中点を使って計算してください。\n",
    "\n",
    "\n",
    "**注意：**\n",
    "\n",
    "関数の積分の上界と下界を得るためには、関数の単調性が大切です。以下の３番目と４番目の関数について、\n",
    "分割の各小区間$[x_i,x_{i+1}]$上での関数の単調性を確保するために、区間の分割に工夫が必要です。\n",
    "\n",
    "関数の単調性を調べるのが難しい場合、与えられる分割におけるリーマン和を計算して、リーマン和が収束しているかどうかを考察してください。\n",
    "\n",
    "$$f_1(x)=\\frac{1}{\\sqrt{x}}$$\n",
    "\n",
    "$$f_2(x)=\\frac{1}{x}$$\n",
    "\n",
    "$$f_3(x)=x\\sin \\frac{1}{x}$$\n",
    "\n",
    "$$f_4(x)=\\sin \\frac{1}{x}$$\n",
    "\n",
    "> ## リーマン和\n",
    "> 分割$x_0=0 < x_1 <x_2 < \\cdots < x_n=1$に対して、$t_i$を$[x_i,x_{i+1}]$の中に存在する点とします。例えば、$t_i=0.5*(x_i+x_{i+1})$。この場合、リーマン和は以下のように計算できます。\n",
    "> $$ \\sum^{n-1}_{i=0}  f(t_i) (x_{i+1} - x_{i} ) $$\n",
    ">\n",
    ">（参考：[https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E7%A9%8D%E5%88%86](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E7%A9%8D%E5%88%86)）\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ここにコードを書いてください。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 参考\n",
    "\n",
    "### 積分の厳密な定義（リーマン積分）\n",
    "\n",
    "微分積分の授業で学んだリーマン積分は積分を厳密に定義します。その詳細は教科書または[Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E7%A9%8D%E5%88%86)を参照してください。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
