Skip to content

Instantly share code, notes, and snippets.

@machakann
Last active April 8, 2020 11:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save machakann/dc369411e481f3eccb9c60abd2f6e138 to your computer and use it in GitHub Desktop.
Save machakann/dc369411e481f3eccb9c60abd2f6e138 to your computer and use it in GitHub Desktop.
quadde の性能評価と quadgk との比較
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"using DoubleExponentialFormulas\n",
"using QuadGK\n",
"using Printf\n",
"using Plots\n",
"using LaTeXStrings\n",
"using SpecialFunctions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 性能評価用の型とマクロの定義\n",
"\n",
"基本的に数値積分にかかる時間は、被積分関数の評価にかかる時間が大半を占めます。なので、実行時間を計っても被積分関数を評価するばかりで、数値積分関数自体の評価のためにはよい指標とは言えません。かわりに被積分関数 $f(x)$ を評価した回数を指標として用いることが一般的なようです。目標とする精度の積分値をより**少ない**回数で出せるほうがよい数値積分法といえます。\n",
"\n",
"---\n",
"\n",
"注: ただし、目標とする精度ぴったりを目指して計算することはほとんどの場合困難です。通常は、適当に反復をしながら目標精度を上回った時点で打ち切る、という方法をとるので反復のパラメータを微調整することで性能が劇的に改善することがあります。\n",
"\n",
"---\n",
"\n",
"注: ひとまず、以下では `quadde`, `quadgk` ともにデフォルトの精度での計算を行っていきます。これらは一致しており、およそ7~8桁の数字が厳密解と一致する程度を目標としています。\n",
"\n",
"---\n",
"\n",
"以下の `@printeval` マクロは数値積分を実行し、被積分関数の評価回数、積分値、推定誤差を画面に表示します。 `EvalCounter` は `@printeval` マクロの内部で使われる型です。"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"@printeval (macro with 1 method)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mutable struct EvalCounter <: Function\n",
" n::Int\n",
" f::Function\n",
" EvalCounter(f::Function) = new(0, f)\n",
"end\n",
"\n",
"function (ec::EvalCounter)(x)\n",
" ec.n += 1\n",
" ec.f(x)\n",
"end\n",
"\n",
"macro printeval(expr)\n",
" s = string(expr)\n",
" q = expr.args[1]\n",
" f = expr.args[2]\n",
" rest = expr.args[3:end]\n",
" quadexpr = Expr(:call, esc(q), :ec)\n",
" for part in rest\n",
" if part isa Expr || part isa Symbol\n",
" push!(quadexpr.args, esc(part))\n",
" else\n",
" push!(quadexpr.args, part)\n",
" end\n",
" end\n",
"\n",
" blk = Expr(:block)\n",
" push!(blk.args, :(ec = EvalCounter($(esc(f)))))\n",
" push!(blk.args, Expr(:(=), :ret, quadexpr))\n",
" push!(blk.args, :(println($(s) * \": Evaluation=\", @sprintf(\"%-5d\", ec.n), \n",
" \" I=\", @sprintf(\"%-1.15e\", ret[1]), \n",
" \" E=\", @sprintf(\"%-1.4e\", ret[2]))))\n",
" push!(blk.args, :ret)\n",
" return blk\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 多項式\n",
"\n",
"$$\n",
"\\begin{eqnarray*}\n",
" \\int_{0}^{1} x dx = \\frac{1}{2} \\\\\n",
" \\int_{-1}^{1} \\left(x^3 + x^2 + x + 1\\right) dx = \\frac{8}{3}\n",
"\\end{eqnarray*}\n",
"$$\n",
"\n",
"これらは明らかに不定積分が可能なので数値積分を使う必要はありませんが、ひとまず例として挙げます。 `quadgk` で使われているガウスークロンロッド積分法は低次の多項式に関しては、原理的にほぼ厳密解を返します(うろおぼえ)。 `quadgk` は驚異的に少ない評価回数で解を返しています。 `quadde` も二桁以内の回数に収めているので十分だと思います。\n",
"\n",
"---\n",
"\n",
"注: これら低次の多項式に限らず、以下で紹介する積分は複雑に見えても厳密解を得られるものが多いです。これは性能評価において、まず数値積分が正しく動いているかどうかを確かめる必要があるためです。しかし、現実に数値積分が必要な場合においては厳密解を得ることは不可能で、被積分関数 $f(x)$ はより複雑であると考えられます。\n",
"\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 1.0): Evaluation=25 I=5.000000000000183e-01 E=1.1287e-10\n",
"quadgk(f, 0.0, 1.0): Evaluation=15 I=5.000000000000000e-01 E=0.0000e+00\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip7300\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip7300)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7301\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip7300)\" d=\"\n",
"M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7302\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 754.421,1487.47 754.421,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1778.99,1487.47 1778.99,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1107.04 2352.76,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,767.359 2352.76,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,427.682 2352.76,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,88.0053 2352.76,88.0053 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 754.421,1487.47 754.421,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1778.99,1487.47 1778.99,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1446.71 206.725,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1107.04 206.725,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,767.359 206.725,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,427.682 206.725,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,88.0053 206.725,88.0053 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.135, 1541.47)\" x=\"242.135\" y=\"1541.47\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 754.421, 1541.47)\" x=\"754.421\" y=\"1541.47\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1266.71, 1541.47)\" x=\"1266.71\" y=\"1541.47\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1778.99, 1541.47)\" x=\"1778.99\" y=\"1541.47\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2291.28, 1541.47)\" x=\"2291.28\" y=\"1541.47\">1.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.21)\" x=\"156.66\" y=\"1464.21\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1124.54)\" x=\"156.66\" y=\"1124.54\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 784.859)\" x=\"156.66\" y=\"784.859\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 445.182)\" x=\"156.66\" y=\"445.182\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 105.505)\" x=\"156.66\" y=\"105.505\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip7302)\" d=\"\n",
"M242.135 1446.71 L262.146 1433.44 L447.182 1310.75 L558.381 1237.02 L652.399 1174.68 L754.528 1106.97 L848.682 1044.54 L949.625 977.605 L1066.58 900.058 L1170.51 831.144 \n",
" L1261.65 770.712 L1361.02 704.826 L1460.98 638.547 L1571.49 565.268 L1676.65 495.545 L1785.98 423.049 L1878.02 362.023 L1990.39 287.517 L2096.01 217.479 L2265.24 105.273 \n",
" L2291.28 88.0053 L2291.28 1446.71 L2265.24 1446.71 L2096.01 1446.71 L1990.39 1446.71 L1878.02 1446.71 L1785.98 1446.71 L1676.65 1446.71 L1571.49 1446.71 L1460.98 1446.71 \n",
" L1361.02 1446.71 L1261.65 1446.71 L1170.51 1446.71 L1066.58 1446.71 L949.625 1446.71 L848.682 1446.71 L754.528 1446.71 L652.399 1446.71 L558.381 1446.71 L447.182 1446.71 \n",
" L262.146 1446.71 L242.135 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip7302)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1446.71 262.146,1433.44 447.182,1310.75 558.381,1237.02 652.399,1174.68 754.528,1106.97 848.682,1044.54 949.625,977.605 1066.58,900.058 1170.51,831.144 \n",
" 1261.65,770.712 1361.02,704.826 1460.98,638.547 1571.49,565.268 1676.65,495.545 1785.98,423.049 1878.02,362.023 1990.39,287.517 2096.01,217.479 2265.24,105.273 \n",
" 2291.28,88.0053 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7300)\" d=\"\n",
"M2016.76 251.724 L2280.76 251.724 L2280.76 130.764 L2016.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2016.76,251.724 2280.76,251.724 2280.76,130.764 2016.76,130.764 2016.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7300)\" d=\"\n",
"M2040.76 215.436 L2184.76 215.436 L2184.76 167.052 L2040.76 167.052 L2040.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip7300)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2040.76,167.052 2184.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7300)\">\n",
"<image width=\"24\" height=\"22\" xlink:href=\"data:image/png;base64,\n",
"iVBORw0KGgoAAAANSUhEUgAAABgAAAAWCAYAAADafVyIAAABzklEQVRIiaVV0a3jIBCcexWQlLDp\n",
"gKQESqAGXgcoJVBCarBSgZMSkCsgLaxLmPs44Wdin5/vHdJK2LsMu7NoFiSxZqUUeu8pIgRAEWGM\n",
"karK99iUEq21U1wIgaUUksQqeEqJABhjZM6Zqsr6T0Smw6pKay2991Nc3/e01tIYw1LKEjyEMDnX\n",
"fABorSVJOOfovedaDAB671uArusIYBV87q+HRYR/8wOgc64FMMaw67pVcJLIOTcAt9utia00Vksp\n",
"fTljjIuMtioAsIhV1elRhBDaJhtjFhm9W4xxAq99+M4+AGAcRx6PR3x+fv7CxhqGYdo757ZCv9ae\n",
"LOZV1gr6vt9VwW7wUsom/5sU7VnP53PaW2v3HvvZBbv5/+kFl8tl9wW7eFTVhv81wfuvHsyzFxEc\n",
"DofN53w+n/l6vQjspOhf+H88HhyGAafT6U8SVUOMMRQR5pwX5c/ff0ppk553hUXf9w2/VUOqvfv3\n",
"iOG8Rx/3+70pUUSa7+v12tCiqqvUjONI5xxSSm2P5hLrnGuySylNCuu9X42pr6xOtoVUVImts0BV\n",
"mXNmCKEZjyRR526dzaWUaZS+U9tokaqyzgMANMYwhPDtgDfG0Dm3KXy/AaIxxrLgDnJUAAAAAElF\n",
"TkSuQmCC\n",
"\" transform=\"translate(2209, 180)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = x\n",
" @printeval quadde(f, 0.0, 1.0)\n",
" @printeval quadgk(f, 0.0, 1.0)\n",
" plot(f, label=L\"x\", xlim=[0.0, 1.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, -1.0, 1.0): Evaluation=51 I=2.666666666666667e+00 E=5.9246e-16\n",
"quadgk(f, -1.0, 1.0): Evaluation=15 I=2.666666666666667e+00 E=0.0000e+00\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip7700\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip7700)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7701\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip7700)\" d=\"\n",
"M113.754 1487.47 L2352.76 1487.47 L2352.76 47.2441 L113.754 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7702\">\n",
" <rect x=\"113\" y=\"47\" width=\"2240\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 177.122,1487.47 177.122,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 705.189,1487.47 705.189,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1233.26,1487.47 1233.26,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1761.32,1487.47 1761.32,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2289.39,1487.47 2289.39,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 113.754,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 113.754,1107.04 2352.76,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 113.754,767.359 2352.76,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 113.754,427.682 2352.76,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 113.754,88.0053 2352.76,88.0053 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,1487.47 113.754,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 177.122,1487.47 177.122,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 705.189,1487.47 705.189,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1233.26,1487.47 1233.26,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1761.32,1487.47 1761.32,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2289.39,1487.47 2289.39,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,1446.71 140.622,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,1107.04 140.622,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,767.359 140.622,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,427.682 140.622,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 113.754,88.0053 140.622,88.0053 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 177.122, 1541.47)\" x=\"177.122\" y=\"1541.47\">-1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 705.189, 1541.47)\" x=\"705.189\" y=\"1541.47\">-0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1233.26, 1541.47)\" x=\"1233.26\" y=\"1541.47\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1761.32, 1541.47)\" x=\"1761.32\" y=\"1541.47\">0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2289.39, 1541.47)\" x=\"2289.39\" y=\"1541.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 1464.21)\" x=\"89.7545\" y=\"1464.21\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 1124.54)\" x=\"89.7545\" y=\"1124.54\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 784.859)\" x=\"89.7545\" y=\"784.859\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 445.182)\" x=\"89.7545\" y=\"445.182\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 105.505)\" x=\"89.7545\" y=\"105.505\">4</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip7702)\" d=\"\n",
"M177.122 1446.71 L197.75 1433.7 L388.486 1335.24 L503.11 1291.76 L600.024 1261.8 L705.299 1234.39 L802.353 1212.15 L906.405 1189.69 L1026.96 1162.96 L1134.1 1136.22 \n",
" L1228.04 1108.7 L1330.47 1072.63 L1433.51 1028.1 L1547.43 966.991 L1655.82 894.995 L1712.17 851.485 L1768.52 803.409 L1815.96 759.173 L1863.4 711.299 L1921.31 647.647 \n",
" L1979.22 577.96 L2033.67 506.648 L2088.11 429.427 L2175.32 292.698 L2262.54 138.937 L2275.97 113.689 L2289.39 88.0053 L2289.39 1446.71 L2275.97 1446.71 L2262.54 1446.71 \n",
" L2175.32 1446.71 L2088.11 1446.71 L2033.67 1446.71 L1979.22 1446.71 L1921.31 1446.71 L1863.4 1446.71 L1815.96 1446.71 L1768.52 1446.71 L1712.17 1446.71 L1655.82 1446.71 \n",
" L1547.43 1446.71 L1433.51 1446.71 L1330.47 1446.71 L1228.04 1446.71 L1134.1 1446.71 L1026.96 1446.71 L906.405 1446.71 L802.353 1446.71 L705.299 1446.71 L600.024 1446.71 \n",
" L503.11 1446.71 L388.486 1446.71 L197.75 1446.71 L177.122 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip7702)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 177.122,1446.71 197.75,1433.7 388.486,1335.24 503.11,1291.76 600.024,1261.8 705.299,1234.39 802.353,1212.15 906.405,1189.69 1026.96,1162.96 1134.1,1136.22 \n",
" 1228.04,1108.7 1330.47,1072.63 1433.51,1028.1 1547.43,966.991 1655.82,894.995 1712.17,851.485 1768.52,803.409 1815.96,759.173 1863.4,711.299 1921.31,647.647 \n",
" 1979.22,577.96 2033.67,506.648 2088.11,429.427 2175.32,292.698 2262.54,138.937 2275.97,113.689 2289.39,88.0053 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7700)\" d=\"\n",
"M1726.76 251.724 L2280.76 251.724 L2280.76 130.764 L1726.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1726.76,251.724 2280.76,251.724 2280.76,130.764 1726.76,130.764 1726.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7700)\" d=\"\n",
"M1750.76 215.436 L1894.76 215.436 L1894.76 167.052 L1750.76 167.052 L1750.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip7700)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1750.76,167.052 1894.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7700)\">\n",
"<image width=\"314\" height=\"46\" xlink:href=\"data:image/png;base64,\n",
"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\n",
"\" transform=\"translate(1919, 168)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = x^3 + x^2 + x + 1\n",
" @printeval quadde(f, -1.0, 1.0)\n",
" @printeval quadgk(f, -1.0, 1.0)\n",
" plot(f, label=L\"x^3 + x^2 + x + 1\", xlim=[-1.0, 1.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# [ガウス積分](https://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E7%A9%8D%E5%88%86)\n",
"\n",
"$$\n",
"\\begin{eqnarray*}\n",
" \\int_{-\\infty}^{\\infty} exp(-x^2) dx = \\sqrt{\\pi} \\\\\n",
" \\int_{0}^{\\infty} x^3 exp(-x^2) dx = \\frac{1}{2}\n",
"\\end{eqnarray*}\n",
"$$\n",
"\n",
"物理などの分野ではよく見られる積分ですね。これらは不定積分を求めることはできませんが、厳密な定積分値を得られることがよく知られています。 `quadde`, `quadgk` ともに目立った性能差はなさそうです。"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, -Inf, Inf): Evaluation=227 I=1.772453850904036e+00 E=2.5628e-12\n",
"quadgk(f, -Inf, Inf): Evaluation=225 I=1.772453850905514e+00 E=6.4296e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip8100\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip8100)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip8101\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip8100)\" d=\"\n",
"M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip8102\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 447.049,1487.47 447.049,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 856.879,1487.47 856.879,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1676.54,1487.47 1676.54,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2086.37,1487.47 2086.37,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1106.83 2352.76,1106.83 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,766.946 2352.76,766.946 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,427.062 2352.76,427.062 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,87.1777 2352.76,87.1777 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 447.049,1487.47 447.049,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 856.879,1487.47 856.879,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1676.54,1487.47 1676.54,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2086.37,1487.47 2086.37,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1446.71 206.725,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1106.83 206.725,1106.83 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,766.946 206.725,766.946 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,427.062 206.725,427.062 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,87.1777 206.725,87.1777 \n",
" \"/>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 447.049, 1541.47)\" x=\"447.049\" y=\"1541.47\">-4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 856.879, 1541.47)\" x=\"856.879\" y=\"1541.47\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1266.71, 1541.47)\" x=\"1266.71\" y=\"1541.47\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1676.54, 1541.47)\" x=\"1676.54\" y=\"1541.47\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2086.37, 1541.47)\" x=\"2086.37\" y=\"1541.47\">4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.21)\" x=\"156.66\" y=\"1464.21\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1124.33)\" x=\"156.66\" y=\"1124.33\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 784.446)\" x=\"156.66\" y=\"784.446\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 444.562)\" x=\"156.66\" y=\"444.562\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 104.678)\" x=\"156.66\" y=\"104.678\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip8102)\" d=\"\n",
"M242.135 1446.71 L262.146 1446.71 L447.182 1446.71 L558.381 1446.7 L652.399 1446.54 L754.528 1444.08 L848.682 1425.53 L873.918 1412.23 L899.154 1392.25 L924.389 1363.27 \n",
" L949.625 1322.69 L964.244 1292.83 L978.863 1257.72 L993.482 1216.95 L1008.1 1170.22 L1022.72 1117.34 L1037.34 1058.33 L1051.96 993.391 L1066.58 922.946 L1092.56 786.443 \n",
" L1118.54 640.704 L1144.53 493.933 L1170.51 356.078 L1181.9 301.181 L1193.3 250.937 L1204.69 206.181 L1216.08 167.682 L1227.47 136.115 L1238.87 112.045 L1250.26 95.9101 \n",
" L1261.65 88.0053 L1274.07 88.9325 L1286.49 99.7932 L1298.91 120.35 L1311.34 150.155 L1323.76 188.57 L1336.18 234.785 L1348.6 287.85 L1361.02 346.705 L1411 618.661 \n",
" L1460.98 893.301 L1474.79 961.916 L1488.61 1025.87 L1502.42 1084.69 L1516.24 1138.1 L1530.05 1186.02 L1543.86 1228.49 L1557.68 1265.69 L1571.49 1297.91 L1597.78 1346.78 \n",
" L1624.07 1381.77 L1650.36 1405.88 L1676.65 1421.87 L1731.31 1438.76 L1785.98 1444.5 L1832 1446.04 L1878.02 1446.53 L1990.39 1446.71 L2096.01 1446.71 L2265.24 1446.71 \n",
" L2291.28 1446.71 L2291.28 1446.71 L2265.24 1446.71 L2096.01 1446.71 L1990.39 1446.71 L1878.02 1446.71 L1832 1446.71 L1785.98 1446.71 L1731.31 1446.71 L1676.65 1446.71 \n",
" L1650.36 1446.71 L1624.07 1446.71 L1597.78 1446.71 L1571.49 1446.71 L1557.68 1446.71 L1543.86 1446.71 L1530.05 1446.71 L1516.24 1446.71 L1502.42 1446.71 L1488.61 1446.71 \n",
" L1474.79 1446.71 L1460.98 1446.71 L1411 1446.71 L1361.02 1446.71 L1348.6 1446.71 L1336.18 1446.71 L1323.76 1446.71 L1311.34 1446.71 L1298.91 1446.71 L1286.49 1446.71 \n",
" L1274.07 1446.71 L1261.65 1446.71 L1250.26 1446.71 L1238.87 1446.71 L1227.47 1446.71 L1216.08 1446.71 L1204.69 1446.71 L1193.3 1446.71 L1181.9 1446.71 L1170.51 1446.71 \n",
" L1144.53 1446.71 L1118.54 1446.71 L1092.56 1446.71 L1066.58 1446.71 L1051.96 1446.71 L1037.34 1446.71 L1022.72 1446.71 L1008.1 1446.71 L993.482 1446.71 L978.863 1446.71 \n",
" L964.244 1446.71 L949.625 1446.71 L924.389 1446.71 L899.154 1446.71 L873.918 1446.71 L848.682 1446.71 L754.528 1446.71 L652.399 1446.71 L558.381 1446.71 L447.182 1446.71 \n",
" L262.146 1446.71 L242.135 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip8102)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1446.71 262.146,1446.71 447.182,1446.71 558.381,1446.7 652.399,1446.54 754.528,1444.08 848.682,1425.53 873.918,1412.23 899.154,1392.25 924.389,1363.27 \n",
" 949.625,1322.69 964.244,1292.83 978.863,1257.72 993.482,1216.95 1008.1,1170.22 1022.72,1117.34 1037.34,1058.33 1051.96,993.391 1066.58,922.946 1092.56,786.443 \n",
" 1118.54,640.704 1144.53,493.933 1170.51,356.078 1181.9,301.181 1193.3,250.937 1204.69,206.181 1216.08,167.682 1227.47,136.115 1238.87,112.045 1250.26,95.9101 \n",
" 1261.65,88.0053 1274.07,88.9325 1286.49,99.7932 1298.91,120.35 1311.34,150.155 1323.76,188.57 1336.18,234.785 1348.6,287.85 1361.02,346.705 1411,618.661 \n",
" 1460.98,893.301 1474.79,961.916 1488.61,1025.87 1502.42,1084.69 1516.24,1138.1 1530.05,1186.02 1543.86,1228.49 1557.68,1265.69 1571.49,1297.91 1597.78,1346.78 \n",
" 1624.07,1381.77 1650.36,1405.88 1676.65,1421.87 1731.31,1438.76 1785.98,1444.5 1832,1446.04 1878.02,1446.53 1990.39,1446.71 2096.01,1446.71 2265.24,1446.71 \n",
" 2291.28,1446.71 \n",
" \"/>\n",
"<path clip-path=\"url(#clip8100)\" d=\"\n",
"M1840.76 251.724 L2280.76 251.724 L2280.76 130.764 L1840.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1840.76,251.724 2280.76,251.724 2280.76,130.764 1840.76,130.764 1840.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip8100)\" d=\"\n",
"M1864.76 215.436 L2008.76 215.436 L2008.76 167.052 L1864.76 167.052 L1864.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip8100)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1864.76,167.052 2008.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip8100)\">\n",
"<image width=\"200\" height=\"58\" xlink:href=\"data:image/png;base64,\n",
"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\n",
"\" transform=\"translate(2033, 162)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = exp(-x^2)\n",
" @printeval quadde(f, -Inf, Inf)\n",
" @printeval quadgk(f, -Inf, Inf)\n",
" plot(f, label=L\"\\exp{\\left(-x^2\\right)}\", xlim=[-5.0, 5.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, Inf): Evaluation=145 I=4.999999999999333e-01 E=2.3797e-12\n",
"quadgk(f, 0.0, Inf): Evaluation=165 I=5.000000000000004e-01 E=2.7808e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip8500\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip8500)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip8501\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip8500)\" d=\"\n",
"M153.898 1487.47 L2352.76 1487.47 L2352.76 47.2441 L153.898 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip8502\">\n",
" <rect x=\"153\" y=\"47\" width=\"2200\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 216.13,1487.47 216.13,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 631.009,1487.47 631.009,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1045.89,1487.47 1045.89,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1460.77,1487.47 1460.77,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1875.65,1487.47 1875.65,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2290.52,1487.47 2290.52,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,1115.23 2352.76,1115.23 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,783.751 2352.76,783.751 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,452.27 2352.76,452.27 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,120.789 2352.76,120.789 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1487.47 153.898,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1487.47 216.13,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 631.009,1487.47 631.009,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1045.89,1487.47 1045.89,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1460.77,1487.47 1460.77,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1875.65,1487.47 1875.65,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2290.52,1487.47 2290.52,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1446.71 180.284,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1115.23 180.284,1115.23 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,783.751 180.284,783.751 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,452.27 180.284,452.27 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,120.789 180.284,120.789 \n",
" \"/>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 216.13, 1541.47)\" x=\"216.13\" y=\"1541.47\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 631.009, 1541.47)\" x=\"631.009\" y=\"1541.47\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1045.89, 1541.47)\" x=\"1045.89\" y=\"1541.47\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1460.77, 1541.47)\" x=\"1460.77\" y=\"1541.47\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1875.65, 1541.47)\" x=\"1875.65\" y=\"1541.47\">4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2290.52, 1541.47)\" x=\"2290.52\" y=\"1541.47\">5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 1464.21)\" x=\"129.898\" y=\"1464.21\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 1132.73)\" x=\"129.898\" y=\"1132.73\">0.1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 801.251)\" x=\"129.898\" y=\"801.251\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 469.77)\" x=\"129.898\" y=\"469.77\">0.3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 138.289)\" x=\"129.898\" y=\"138.289\">0.4</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip8502)\" d=\"\n",
"M216.13 1446.71 L221.194 1446.71 L226.259 1446.67 L231.323 1446.55 L236.388 1446.33 L259.802 1442.89 L283.217 1433.06 L306.631 1413.9 L330.046 1383.08 L353.46 1338.97 \n",
" L376.875 1280.79 L400.289 1208.64 L423.704 1123.49 L451.846 1006.49 L479.988 877.672 L508.131 742.486 L536.273 607.009 L560.067 496.847 L583.861 394.532 L607.655 303.319 \n",
" L631.449 225.972 L644.372 190.566 L657.296 160.16 L670.219 134.955 L683.142 115.09 L696.066 100.643 L708.989 91.6287 L721.913 88.0053 L734.836 89.6749 L758.665 106.093 \n",
" L782.493 138.622 L806.322 185.475 L830.15 244.545 L855.697 318.811 L881.244 401.502 L906.79 489.697 L932.337 580.634 L961.935 686.152 L991.534 788.698 L1021.13 885.643 \n",
" L1050.73 975.069 L1077.03 1047.21 L1103.34 1111.97 L1129.64 1169.21 L1155.94 1219.07 L1179.01 1257 L1202.08 1289.85 L1225.14 1318.02 L1248.21 1341.95 L1298.5 1381.57 \n",
" L1348.8 1407.63 L1399.39 1424.16 L1449.99 1434.15 L1561.87 1443.66 L1668.32 1446.03 L1779 1446.59 L1872.17 1446.69 L1985.92 1446.71 L2092.85 1446.71 L2264.16 1446.71 \n",
" L2290.52 1446.71 L2290.52 1446.71 L2264.16 1446.71 L2092.85 1446.71 L1985.92 1446.71 L1872.17 1446.71 L1779 1446.71 L1668.32 1446.71 L1561.87 1446.71 L1449.99 1446.71 \n",
" L1399.39 1446.71 L1348.8 1446.71 L1298.5 1446.71 L1248.21 1446.71 L1225.14 1446.71 L1202.08 1446.71 L1179.01 1446.71 L1155.94 1446.71 L1129.64 1446.71 L1103.34 1446.71 \n",
" L1077.03 1446.71 L1050.73 1446.71 L1021.13 1446.71 L991.534 1446.71 L961.935 1446.71 L932.337 1446.71 L906.79 1446.71 L881.244 1446.71 L855.697 1446.71 L830.15 1446.71 \n",
" L806.322 1446.71 L782.493 1446.71 L758.665 1446.71 L734.836 1446.71 L721.913 1446.71 L708.989 1446.71 L696.066 1446.71 L683.142 1446.71 L670.219 1446.71 L657.296 1446.71 \n",
" L644.372 1446.71 L631.449 1446.71 L607.655 1446.71 L583.861 1446.71 L560.067 1446.71 L536.273 1446.71 L508.131 1446.71 L479.988 1446.71 L451.846 1446.71 L423.704 1446.71 \n",
" L400.289 1446.71 L376.875 1446.71 L353.46 1446.71 L330.046 1446.71 L306.631 1446.71 L283.217 1446.71 L259.802 1446.71 L236.388 1446.71 L231.323 1446.71 L226.259 1446.71 \n",
" L221.194 1446.71 L216.13 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip8502)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1446.71 221.194,1446.71 226.259,1446.67 231.323,1446.55 236.388,1446.33 259.802,1442.89 283.217,1433.06 306.631,1413.9 330.046,1383.08 353.46,1338.97 \n",
" 376.875,1280.79 400.289,1208.64 423.704,1123.49 451.846,1006.49 479.988,877.672 508.131,742.486 536.273,607.009 560.067,496.847 583.861,394.532 607.655,303.319 \n",
" 631.449,225.972 644.372,190.566 657.296,160.16 670.219,134.955 683.142,115.09 696.066,100.643 708.989,91.6287 721.913,88.0053 734.836,89.6749 758.665,106.093 \n",
" 782.493,138.622 806.322,185.475 830.15,244.545 855.697,318.811 881.244,401.502 906.79,489.697 932.337,580.634 961.935,686.152 991.534,788.698 1021.13,885.643 \n",
" 1050.73,975.069 1077.03,1047.21 1103.34,1111.97 1129.64,1169.21 1155.94,1219.07 1179.01,1257 1202.08,1289.85 1225.14,1318.02 1248.21,1341.95 1298.5,1381.57 \n",
" 1348.8,1407.63 1399.39,1424.16 1449.99,1434.15 1561.87,1443.66 1668.32,1446.03 1779,1446.59 1872.17,1446.69 1985.92,1446.71 2092.85,1446.71 2264.16,1446.71 \n",
" 2290.52,1446.71 \n",
" \"/>\n",
"<path clip-path=\"url(#clip8500)\" d=\"\n",
"M1784.76 251.724 L2280.76 251.724 L2280.76 130.764 L1784.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1784.76,251.724 2280.76,251.724 2280.76,130.764 1784.76,130.764 1784.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip8500)\" d=\"\n",
"M1808.76 215.436 L1952.76 215.436 L1952.76 167.052 L1808.76 167.052 L1808.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip8500)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1808.76,167.052 1952.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip8500)\">\n",
"<image width=\"256\" height=\"58\" xlink:href=\"data:image/png;base64,\n",
"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\n",
"\" transform=\"translate(1977, 162)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = x^3*exp(-x^2)\n",
" @printeval quadde(f, 0.0, Inf)\n",
" @printeval quadgk(f, 0.0, Inf)\n",
" plot(f, label=L\"x^3 \\exp{\\left(-x^2\\right)}\", xlim=[0.0, 5.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 平方根を含む関数\n",
"\n",
"$$\n",
"\\begin{eqnarray*}\n",
" \\int_{0}^{1} \\sqrt{x} dx = \\frac{2}{3} \\\\\n",
" \\int_{0}^{1} \\frac{1}{\\sqrt{x}} dx = 2\n",
"\\end{eqnarray*}\n",
"$$\n",
"\n",
"理由はわかりませんが、被積分関数に平方根の計算 `sqrt` が含まれると数値積分の性能が悪化しやすくなるような気がします。(有効桁数の問題?)しかし、以下二つの簡単な例ではなぜか `quadde` が非常にいい結果を出しています。"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 1.0): Evaluation=25 I=6.666666666668387e-01 E=2.6111e-09\n",
"quadgk(f, 0.0, 1.0): Evaluation=315 I=6.666666670773991e-01 E=7.1095e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip8900\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip8900)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip8901\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip8900)\" d=\"\n",
"M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip8902\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 754.421,1487.47 754.421,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1778.99,1487.47 1778.99,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1107.04 2352.76,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,767.359 2352.76,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,427.682 2352.76,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,88.0053 2352.76,88.0053 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 754.421,1487.47 754.421,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1778.99,1487.47 1778.99,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1446.71 206.725,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1107.04 206.725,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,767.359 206.725,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,427.682 206.725,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,88.0053 206.725,88.0053 \n",
" \"/>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.135, 1541.47)\" x=\"242.135\" y=\"1541.47\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 754.421, 1541.47)\" x=\"754.421\" y=\"1541.47\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1266.71, 1541.47)\" x=\"1266.71\" y=\"1541.47\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1778.99, 1541.47)\" x=\"1778.99\" y=\"1541.47\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2291.28, 1541.47)\" x=\"2291.28\" y=\"1541.47\">1.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.21)\" x=\"156.66\" y=\"1464.21\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1124.54)\" x=\"156.66\" y=\"1124.54\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 784.859)\" x=\"156.66\" y=\"784.859\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 445.182)\" x=\"156.66\" y=\"445.182\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 105.505)\" x=\"156.66\" y=\"105.505\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip8902)\" d=\"\n",
"M242.135 1446.71 L247.138 1379.58 L252.141 1351.77 L257.143 1330.43 L262.146 1312.44 L285.276 1249.57 L308.405 1202.37 L331.535 1162.92 L354.664 1128.31 L400.923 1068.49 \n",
" L447.182 1016.91 L502.782 962.133 L558.381 912.945 L605.39 874.648 L652.399 838.759 L754.528 767.289 L848.682 707.496 L949.625 648.351 L1066.58 584.887 L1170.51 532.176 \n",
" L1261.65 488.335 L1361.02 442.717 L1460.98 398.829 L1571.49 352.352 L1676.65 309.893 L1785.98 267.366 L1878.02 232.721 L1990.39 191.72 L2096.01 154.363 L2265.24 96.667 \n",
" L2291.28 88.0053 L2291.28 1446.71 L2265.24 1446.71 L2096.01 1446.71 L1990.39 1446.71 L1878.02 1446.71 L1785.98 1446.71 L1676.65 1446.71 L1571.49 1446.71 L1460.98 1446.71 \n",
" L1361.02 1446.71 L1261.65 1446.71 L1170.51 1446.71 L1066.58 1446.71 L949.625 1446.71 L848.682 1446.71 L754.528 1446.71 L652.399 1446.71 L605.39 1446.71 L558.381 1446.71 \n",
" L502.782 1446.71 L447.182 1446.71 L400.923 1446.71 L354.664 1446.71 L331.535 1446.71 L308.405 1446.71 L285.276 1446.71 L262.146 1446.71 L257.143 1446.71 L252.141 1446.71 \n",
" L247.138 1446.71 L242.135 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip8902)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1446.71 247.138,1379.58 252.141,1351.77 257.143,1330.43 262.146,1312.44 285.276,1249.57 308.405,1202.37 331.535,1162.92 354.664,1128.31 400.923,1068.49 \n",
" 447.182,1016.91 502.782,962.133 558.381,912.945 605.39,874.648 652.399,838.759 754.528,767.289 848.682,707.496 949.625,648.351 1066.58,584.887 1170.51,532.176 \n",
" 1261.65,488.335 1361.02,442.717 1460.98,398.829 1571.49,352.352 1676.65,309.893 1785.98,267.366 1878.02,232.721 1990.39,191.72 2096.01,154.363 2265.24,96.667 \n",
" 2291.28,88.0053 \n",
" \"/>\n",
"<path clip-path=\"url(#clip8900)\" d=\"\n",
"M1977.76 251.724 L2280.76 251.724 L2280.76 130.764 L1977.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1977.76,251.724 2280.76,251.724 2280.76,130.764 1977.76,130.764 1977.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip8900)\" d=\"\n",
"M2001.76 215.436 L2145.76 215.436 L2145.76 167.052 L2001.76 167.052 L2001.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip8900)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2001.76,167.052 2145.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip8900)\">\n",
"<image width=\"63\" height=\"47\" xlink:href=\"data:image/png;base64,\n",
"iVBORw0KGgoAAAANSUhEUgAAAD8AAAAvCAYAAABUiRJEAAADoklEQVRogeWa/XGjMBDFX64CkRKU\n",
"VEBaUAmqQSUwLkFJBU5K8KQCkhIoAacE2R28+yO3BAgYLDuCzDGzM8ESaJ9++tolIIm1mPeeAJLZ\n",
"DUms4drv97y/v0/b6NK0xay1BEDvPVO1uQrybeokb1K1+ydVQ6eup6cnAEBRFEnbXZz84XDg7e0t\n",
"ACCEgCzL/h/y3nsAn9RTCgcWJr8kdWBh8kLdOZdcOLAg+aWpAwuSf3l5AbAcdWBB8lmW8Xg8oq5r\n",
"3N3dLSJ+EfKPj488Ho+w1i4mHFiI/BqoAwuQf35+XgV1AOkDG6UUAbCqqmQBzJglbWy73RIAjTGL\n",
"C08uXmt9EfW6rmmtpbxHa82iKBhC+PY+7z3zPG/qOedY13WnXjLhu93uIuqS5SmKglVVMYRA+U1r\n",
"3QgLITDPc1prm3plWTLPcyqlOh2QnHpZlmeLd859c7xdBoB5npMkjDG01nKoDoBOWVLq4mDMs0PC\n",
"2+UiTGvNsfL+yEsiXuZeDHWlFHe73ehzVVV1xG23207dflK0nSb7ceFlWUZTL4riG8lT5D937m55\n",
"CKFZIJ1znfLRRq+1HQn1U/ROUe+THPJVhJ/bwd96SZyNHaZtkyE5RW/IhNhUPWNM429RFHHiy7Kk\n",
"nL5ie3LMsRjq54yOWFjN0FFKsSxLtnvykgPJJdTnWl3XJ+f7pHjvPY0xzSlJFqihfTGG+tScvcTk\n",
"uBw7Sgd/lNVRbGyPnSKilPox4eTXV56Y+T4qvt2jQ1vEXKd+kjrZne8x68qsFwMYDB6WpB5CiPKv\n",
"baPJjM1m07mXhOPUJZ+e+s9f+3p/f2/+1lpPJkEfHh643++7aau5PTuHpDzz09TJbrAyNS1lEZ89\n",
"7Mnu6Qkz5rA4dI3PzN57KqWotR7cbtvTcqq9oUhvUnyf/qk9u103Zv4NkRoj2y+fE/gM+XQygZll\n",
"2Y21trn/+PjA29vbYLr3mh8cX19fO/da6879ZrOBMaa5DyEMvudwONAYA+/9sE9TFPoh41DAc03q\n",
"MuTH2vPeNyNQttQxnySjM9bOLGemjryyNsQcNMamkNaaEsuHEFhVFZ1znZQV+RU1Si6vrusmvTW1\n",
"EEbNwX5vyuJzDertDpB4Hv92EOfcZLJSKUVjzKwgZ7Yz/SOvODG3l9dosyv2MyYyxIX6uef/NdhZ\n",
"lftHXpnrv5H62eLH/kPyN1I/WzxJ9IXHxvtrsLMf6B95fyv1KPHtA81aPjgmEy/0xz4f/Sb7C/95\n",
"NjsaMYPLAAAAAElFTkSuQmCC\n",
"\" transform=\"translate(2170, 168)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = sqrt(x)\n",
" @printeval quadde(f, 0.0, 1.0)\n",
" @printeval quadgk(f, 0.0, 1.0)\n",
" plot(f, label=L\"\\sqrt{x}\", xlim=[0.0, 1.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 1.0): Evaluation=25 I=1.999999982931068e+00 E=9.0356e-12\n",
"quadgk(f, 0.0, 1.0): Evaluation=1305 I=1.999999984598392e+00 E=2.3763e-08\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip9300\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip9300)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip9301\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip9300)\" d=\"\n",
"M167.279 1487.47 L2352.76 1487.47 L2352.76 47.2441 L167.279 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip9302\">\n",
" <rect x=\"167\" y=\"47\" width=\"2186\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 229.132,1487.47 229.132,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 744.575,1487.47 744.575,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1260.02,1487.47 1260.02,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1775.46,1487.47 1775.46,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2290.9,1487.47 2290.9,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,1150.01 2352.76,1150.01 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,853.316 2352.76,853.316 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,556.618 2352.76,556.618 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,259.919 2352.76,259.919 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1487.47 167.279,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 229.132,1487.47 229.132,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 744.575,1487.47 744.575,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1260.02,1487.47 1260.02,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1775.46,1487.47 1775.46,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2290.9,1487.47 2290.9,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1446.71 193.505,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1150.01 193.505,1150.01 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,853.316 193.505,853.316 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,556.618 193.505,556.618 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,259.919 193.505,259.919 \n",
" \"/>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 229.132, 1541.47)\" x=\"229.132\" y=\"1541.47\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 744.575, 1541.47)\" x=\"744.575\" y=\"1541.47\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1260.02, 1541.47)\" x=\"1260.02\" y=\"1541.47\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1775.46, 1541.47)\" x=\"1775.46\" y=\"1541.47\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2290.9, 1541.47)\" x=\"2290.9\" y=\"1541.47\">1.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 1464.21)\" x=\"143.279\" y=\"1464.21\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 1167.51)\" x=\"143.279\" y=\"1167.51\">25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 870.816)\" x=\"143.279\" y=\"870.816\">50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 574.118)\" x=\"143.279\" y=\"574.118\">75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 277.419)\" x=\"143.279\" y=\"277.419\">100</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip9302)\" d=\"\n",
"M229.29 88.0053 L229.447 485.962 L229.604 662.263 L229.761 767.359 L229.919 839.081 L230.076 892.023 L230.233 933.17 L230.391 966.338 L230.548 993.811 L230.705 1017.05 \n",
" L230.863 1037.05 L231.02 1054.49 L231.335 1083.58 L231.649 1107.04 L231.964 1126.46 L232.278 1142.9 L232.593 1157.04 L232.908 1169.37 L233.537 1189.94 L234.166 1206.53 \n",
" L234.795 1220.26 L235.424 1231.88 L236.054 1241.88 L236.683 1250.6 L237.941 1265.15 L239.2 1276.87 L240.458 1286.59 L241.717 1294.81 L242.975 1301.87 L244.233 1308.04 \n",
" L245.492 1313.48 L246.75 1318.33 L248.009 1322.68 L249.267 1326.62 L255.085 1340.93 L260.903 1351.11 L266.721 1358.82 L272.539 1364.92 L284.175 1374.08 L295.811 1380.72 \n",
" L319.083 1389.89 L342.355 1396.07 L365.627 1400.59 L388.899 1404.08 L412.171 1406.88 L435.443 1409.2 L491.385 1413.44 L547.327 1416.5 L594.625 1418.53 L641.924 1420.19 \n",
" L744.682 1422.98 L839.416 1424.9 L940.981 1426.52 L1058.65 1428 L1163.23 1429.08 L1254.93 1429.89 L1354.91 1430.65 L1455.48 1431.33 L1566.68 1431.98 L1672.48 1432.53 \n",
" L1782.49 1433.04 L1875.09 1433.43 L1988.15 1433.86 L2094.43 1434.24 L2264.7 1434.77 L2290.9 1434.85 L2290.9 1446.71 L2264.7 1446.71 L2094.43 1446.71 L1988.15 1446.71 \n",
" L1875.09 1446.71 L1782.49 1446.71 L1672.48 1446.71 L1566.68 1446.71 L1455.48 1446.71 L1354.91 1446.71 L1254.93 1446.71 L1163.23 1446.71 L1058.65 1446.71 L940.981 1446.71 \n",
" L839.416 1446.71 L744.682 1446.71 L641.924 1446.71 L594.625 1446.71 L547.327 1446.71 L491.385 1446.71 L435.443 1446.71 L412.171 1446.71 L388.899 1446.71 L365.627 1446.71 \n",
" L342.355 1446.71 L319.083 1446.71 L295.811 1446.71 L284.175 1446.71 L272.539 1446.71 L266.721 1446.71 L260.903 1446.71 L255.085 1446.71 L249.267 1446.71 L248.009 1446.71 \n",
" L246.75 1446.71 L245.492 1446.71 L244.233 1446.71 L242.975 1446.71 L241.717 1446.71 L240.458 1446.71 L239.2 1446.71 L237.941 1446.71 L236.683 1446.71 L236.054 1446.71 \n",
" L235.424 1446.71 L234.795 1446.71 L234.166 1446.71 L233.537 1446.71 L232.908 1446.71 L232.593 1446.71 L232.278 1446.71 L231.964 1446.71 L231.649 1446.71 L231.335 1446.71 \n",
" L231.02 1446.71 L230.863 1446.71 L230.705 1446.71 L230.548 1446.71 L230.391 1446.71 L230.233 1446.71 L230.076 1446.71 L229.919 1446.71 L229.761 1446.71 L229.604 1446.71 \n",
" L229.447 1446.71 L229.29 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip9302)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 229.29,88.0053 229.447,485.962 229.604,662.263 229.761,767.359 229.919,839.081 230.076,892.023 230.233,933.17 230.391,966.338 230.548,993.811 230.705,1017.05 \n",
" 230.863,1037.05 231.02,1054.49 231.335,1083.58 231.649,1107.04 231.964,1126.46 232.278,1142.9 232.593,1157.04 232.908,1169.37 233.537,1189.94 234.166,1206.53 \n",
" 234.795,1220.26 235.424,1231.88 236.054,1241.88 236.683,1250.6 237.941,1265.15 239.2,1276.87 240.458,1286.59 241.717,1294.81 242.975,1301.87 244.233,1308.04 \n",
" 245.492,1313.48 246.75,1318.33 248.009,1322.68 249.267,1326.62 255.085,1340.93 260.903,1351.11 266.721,1358.82 272.539,1364.92 284.175,1374.08 295.811,1380.72 \n",
" 319.083,1389.89 342.355,1396.07 365.627,1400.59 388.899,1404.08 412.171,1406.88 435.443,1409.2 491.385,1413.44 547.327,1416.5 594.625,1418.53 641.924,1420.19 \n",
" 744.682,1422.98 839.416,1424.9 940.981,1426.52 1058.65,1428 1163.23,1429.08 1254.93,1429.89 1354.91,1430.65 1455.48,1431.33 1566.68,1431.98 1672.48,1432.53 \n",
" 1782.49,1433.04 1875.09,1433.43 1988.15,1433.86 2094.43,1434.24 2264.7,1434.77 2290.9,1434.85 \n",
" \"/>\n",
"<path clip-path=\"url(#clip9300)\" d=\"\n",
"M1973.76 251.724 L2280.76 251.724 L2280.76 130.764 L1973.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1973.76,251.724 2280.76,251.724 2280.76,130.764 1973.76,130.764 1973.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip9300)\" d=\"\n",
"M1997.76 215.436 L2141.76 215.436 L2141.76 167.052 L1997.76 167.052 L1997.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip9300)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1997.76,167.052 2141.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip9300)\">\n",
"<image width=\"67\" height=\"107\" xlink:href=\"data:image/png;base64,\n",
"iVBORw0KGgoAAAANSUhEUgAAAEMAAABrCAYAAAAsNT8oAAAFOElEQVR4nO2d/ZGyOhTGH+/cAmBL\n",
"iFsBNbAd4JZACRlLiFuBbgloBYwloBWgJUQ6OPePveE9gh+ALuC855k5M6sECL88CfkAd0JEGFKn\n",
"04nCMIRSCuv1ejJkXv4Z8uTr9ZqUUtjv9zgej0NmBQDwb58nOxwOdDwesdlskCQJiqLo8/R31QuM\n",
"6XRKvOQ9z8Pn5yeyLMN+v+8jC43UCwxjDKy1eHt7QxAEmE6nEwCYzWb018GYzWaDNoxNNWgDOjYJ\n",
"DCaBwSQwmAQGk8BgEhhMAoNJYDAJDCaBwSQwmAQGk8BgEhhMAoNJYDAJDCaBwSQwmAQG06Aw+CLS\n",
"GBaUBoXBF5aOxyNOp9OgC7+TPhaed7sdbbdbAIC1FkVRYLvd1tZX3Uqb53l4e3sDAARBgI+Pj37W\n",
"XYjo10NrTQDK8DyvDKUUKaXOvuNpoyiiPvJIRP0441UkdxMmgcEkMJgEBpPAYBIYTAKDSWAwCQwm\n",
"gcEkMJgEBpPAYBIYTAKDSWAwCQwmgcE0wc9cowjijDPJhDCTOINJYDAJDCaBwSQwmAQGk8BgGi2M\n",
"xWJBk8mktwBG2uk6HA70/v7e6zmJaNLLcw9tI4oiAkDGmN6ezRjl8xncFUTU65vSo2szvr6+AABa\n",
"697PPSpnnE4ncs9yWWvh+/7f6wxjDIAfV/QNAhiRM4Z2BTAiZzhXxHE8CAhgJM4YgyuAkTjj+/sb\n",
"wLCuAEbiDN/3qSgK5Hle/gTNEBrcGYvFgoqiQBRFg4IARuCMsbgCGNgZq9VqNK4A0M+D9NfCPTSf\n",
"ZVnrAVme5xRFESmlCAAppUhrTdba2rGMMRQEQZkujmPK87yWbjAQy+WSAFAYhq1BGGMIAGmtKcsy\n",
"staS+04pVV6otZaCIKAoisp0aZpSEATkeV4NyGAwXIm2dUUcxxcvxG0DQEEQEBEhDMPaKxouDS68\n",
"vjEIiCRJOrnC7XcJBN/uLlQpRde2Xzr/oK5I07QVDM/zKEmSq/tkWXZ2scvl8iytq0ouqpNHg7nC\n",
"WblpaK1rJX3LGT/3hvPt1tqywY3juLa9dxiuVe/iimpJXwLmQLSF3TuMNE07ZdSV6L10YRiWMLTW\n",
"z4ehte50+7vlilv1/pHgL/u1dd5NGO4e/cjBebjGrUkJd4k8z2+2F51hpGlae6WySx3k4Sz8W65w\n",
"nbhH8lr7QmtNnudRmqbE62DXbnMfriD6s9bStb2owTDGUBiGZf/eNXjXemxtXXHvbvBIcCd3dd/d\n",
"BO6+7OJa7+9auLrsed6vgbDWnuXx0mDtKTB4XbzWWbkVzr6/6Qre2WpSFYMg6D5qrTamTcn34Qqi\n",
"88HXvcJyVf/StkaTO/P5/Oyzm8C9J7dUWN2/rRaLBfm+T9PplHa7XW1qLkmS8m+l1N08RVF0eWMT\n",
"8tU62aSk3T6PuqLaiFdLvrq9yUDumrMbOcP3/QlfCC6KAqvV6ubkqXPDo67YbDZnn6slP5/PEYZh\n",
"+dlae/E47h9EGGOuL0c0LaGqO241VDxt15bdBR92V4cFxpgyH66hvjR04DNet87VKmO8Y4MbXXQ3\n",
"euza+aleiPuxkSRJyFpLWZZRHMdnU3xEf8Y+bi40z/NyOrDJXbBVxqqTJ9dK4Vmu4Md08xn4vx2K\n",
"4/ju5K/neRSGYeNxVeuM3euiP9MVfUfrHe510V2f5FmuGDUMonoX3V14m/o5xui0U3Wu0VUJ54q2\n",
"45exROcdq11011a8qiseglGddnfxqq54CAYRoQqizx8YGx2M6i+zvbIrHobBO1jPmkF/WRjOHdcW\n",
"gl8t/gNJNFuP1WLWOwAAAABJRU5ErkJggg==\n",
"\" transform=\"translate(2166, 138)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = 1/sqrt(x)\n",
" @printeval quadde(f, 0.0, 1.0)\n",
" @printeval quadgk(f, 0.0, 1.0)\n",
" plot(f, label=L\"\\frac{1}{\\sqrt{x}}\", xlim=[0.0, 1.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 三角関数\n",
"\n",
"$$\n",
"\\begin{eqnarray*}\n",
" \\int_{0}^{\\pi} \\sin{x} dx = 2 \\\\\n",
" \\int_{0}^{\\pi/2} \\cos{x} dx = 1\n",
"\\end{eqnarray*}\n",
"$$\n",
"\n",
"一般的に言うと、振動する関数は数値積分が少し困難です。特に周期が極端に短い場合は非常に困難になり、積分区間を分割するなどの対策が必要になります。しかし、以下の簡単な例では、うまくいっているようですね。 `quadgk` の評価回数はここでも驚異的に少ないです。"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, π): Evaluation=51 I=2.000000000000000e+00 E=1.1712e-14\n",
"quadgk(f, 0.0, π): Evaluation=15 I=2.000000000000000e+00 E=1.7906e-12\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip9700\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip9700)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip9701\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip9700)\" d=\"\n",
"M180.66 1455.84 L2352.76 1455.84 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip9702\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1410\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 242.135,1455.84 242.135,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1266.71,1455.84 1266.71,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.28,1455.84 2291.28,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1415.97 2352.76,1415.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1083.74 2352.76,1083.74 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,751.52 2352.76,751.52 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,419.295 2352.76,419.295 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,87.0699 2352.76,87.0699 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1455.84 2352.76,1455.84 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1455.84 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1455.84 242.135,1438.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1266.71,1455.84 1266.71,1438.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.28,1455.84 2291.28,1438.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1415.97 206.725,1415.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1083.74 206.725,1083.74 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,751.52 206.725,751.52 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,419.295 206.725,419.295 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,87.0699 206.725,87.0699 \n",
" \"/>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.135, 1509.84)\" x=\"242.135\" y=\"1509.84\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Symbol; font-size:46px; text-anchor:start;\" transform=\"rotate(0, 1253.82, 1507.06)\" x=\"1253.82\" y=\"1507.06\">π</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:43px; text-anchor:start;\" transform=\"rotate(0, 1254.58, 1559.41)\" x=\"1254.58\" y=\"1559.41\">2</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:2.2242; stroke-opacity:1; fill:none\" points=\"\n",
" 1251.24,1520.86 1282.18,1520.86 \n",
" \"/>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Symbol; font-size:52px; text-anchor:start;\" transform=\"rotate(0, 2277.06, 1510.69)\" x=\"2277.06\" y=\"1510.69\">π</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1433.47)\" x=\"156.66\" y=\"1433.47\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1101.24)\" x=\"156.66\" y=\"1101.24\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 769.02)\" x=\"156.66\" y=\"769.02\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 436.795)\" x=\"156.66\" y=\"436.795\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 104.57)\" x=\"156.66\" y=\"104.57\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip9702)\" d=\"\n",
"M242.135 1415.97 L252.141 1395.58 L262.146 1375.2 L354.664 1187.84 L447.182 1005.06 L502.782 898.956 L558.381 796.608 L605.39 713.553 L652.399 634.146 L703.463 552.499 \n",
" L754.528 476.142 L801.605 410.838 L848.682 350.768 L899.154 292.534 L949.625 241.024 L1008.1 190.156 L1066.58 149.133 L1118.54 121.207 L1170.51 101.496 L1216.08 91.0708 \n",
" L1261.65 87.1099 L1311.34 90.1791 L1361.02 100.937 L1411 119.453 L1460.98 145.577 L1516.24 183.131 L1571.49 229.528 L1624.07 281.58 L1676.65 340.998 L1731.31 410.176 \n",
" L1785.98 486.416 L1832 555.675 L1878.02 629.214 L1990.39 824.448 L2096.01 1024.05 L2265.24 1362.92 L2291.28 1415.97 L2291.28 1415.97 L2265.24 1415.97 L2096.01 1415.97 \n",
" L1990.39 1415.97 L1878.02 1415.97 L1832 1415.97 L1785.98 1415.97 L1731.31 1415.97 L1676.65 1415.97 L1624.07 1415.97 L1571.49 1415.97 L1516.24 1415.97 L1460.98 1415.97 \n",
" L1411 1415.97 L1361.02 1415.97 L1311.34 1415.97 L1261.65 1415.97 L1216.08 1415.97 L1170.51 1415.97 L1118.54 1415.97 L1066.58 1415.97 L1008.1 1415.97 L949.625 1415.97 \n",
" L899.154 1415.97 L848.682 1415.97 L801.605 1415.97 L754.528 1415.97 L703.463 1415.97 L652.399 1415.97 L605.39 1415.97 L558.381 1415.97 L502.782 1415.97 L447.182 1415.97 \n",
" L354.664 1415.97 L262.146 1415.97 L252.141 1415.97 L242.135 1415.97 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip9702)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1415.97 252.141,1395.58 262.146,1375.2 354.664,1187.84 447.182,1005.06 502.782,898.956 558.381,796.608 605.39,713.553 652.399,634.146 703.463,552.499 \n",
" 754.528,476.142 801.605,410.838 848.682,350.768 899.154,292.534 949.625,241.024 1008.1,190.156 1066.58,149.133 1118.54,121.207 1170.51,101.496 1216.08,91.0708 \n",
" 1261.65,87.1099 1311.34,90.1791 1361.02,100.937 1411,119.453 1460.98,145.577 1516.24,183.131 1571.49,229.528 1624.07,281.58 1676.65,340.998 1731.31,410.176 \n",
" 1785.98,486.416 1832,555.675 1878.02,629.214 1990.39,824.448 2096.01,1024.05 2265.24,1362.92 2291.28,1415.97 \n",
" \"/>\n",
"<path clip-path=\"url(#clip9700)\" d=\"\n",
"M1951.76 251.724 L2280.76 251.724 L2280.76 130.764 L1951.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1951.76,251.724 2280.76,251.724 2280.76,130.764 1951.76,130.764 1951.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip9700)\" d=\"\n",
"M1975.76 215.436 L2119.76 215.436 L2119.76 167.052 L1975.76 167.052 L1975.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip9700)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1975.76,167.052 2119.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip9700)\">\n",
"<image width=\"89\" height=\"32\" xlink:href=\"data:image/png;base64,\n",
"iVBORw0KGgoAAAANSUhEUgAAAFkAAAAgCAYAAAB5JtSmAAAE6ElEQVRoge1a63GrOhBepQKREkQH\n",
"OCVgVwApQXQgXILsCsAlYFcAlIBdAbgE4Q72/vCIK57GyXHOcZKd2QlGu9LqY/X6FEBEeIRGUYSU\n",
"UqSUopQSH9XOM+hDKi2KAgGgpUVR/FigX+ABUhRF712e549o6inkISC/vb313rmu+4imnkMeNUR+\n",
"5+T/lSDi3/7O314eMl38Slt+Qf4C+QX5C+QX5C+QHshxHONyuUTLshq1bRt938fj8YgAAEEQYBAE\n",
"vRWzqioMwxCDIMDlcomLxQJt20bLsjDLssEV9ng8YhiG6Pt+y4cQgnVdt3w2mw0uFgu0LAsJIU1c\n",
"Y3V/VqqqQt/3m3hs28YwDHtxmbFpuyAIsKqqq53eZiRJgpRSdBwH0zRFpVSz7VJKYRRFyBhDxhgC\n",
"ALqu29uWpWnaO+lpTdN0cBsnpRz10TGkaYqUUuScY5IkqJTCsixRCNHYDsXzGdVxCSGwKApUSqF+\n",
"xxjDsixRY+M4Dnqe19ilaYqO4yClFMuybIPDOZ8MVCk1CbJp1wVvDGStXdA0yGmatjrVVc55Y/+n\n",
"9uOc8wagsfYcx0FEBNd10fM8HIvJ87zrS0opXpP6dgCal5iTObreOSBrNUEuimISYP1xTJ/PApwk\n",
"CQLAaJu6XAPIGMOxco1TA1rXeEoZY7NA1ll/D8imj+u6GEXRQz7mVF1JkozW0SW/uvF1R7CU8nr8\n",
"vTcLOOezQHYc51MgU0rv9pkC6JYKIW4mWzdTu+XmlKqn39buYmjHMCSMMaCUzjH9lMwllf5ULLvd\n",
"DoQQkzYmw+g4Tq/csixSVRVBRBLHMQEAeDE7stvtYLFY4H6/nwQ7DEOy3+/JfV24X4bYvFuilPpQ\n",
"W3Vd4+vrKwRBMNmv0+nUPM9Nghfbtonnea1K3t/fgRCCy+USwzB82D70lnwkQy+Xy4fa0hl4y87M\n",
"5NkgAwDs93sylPp5nsN2u4XVatWA/rcA/xekqio0P+JyuZw1mps5+Xg8Es75pHGe57BarSAMwx8J\n",
"tHm7M5SUY9Ja+OI4JkopiKIIPM8bHa7b7RY2m82PA9oE+Z6bnh53YVkWCYKA7Pd7Utc1KcsSkiTp\n",
"Vbper0FzGT9FTJDvWZRfqqrCOI5HwbJtm/i+T7IsI2VZtrJ7t9t9MNznk7quW/PxXZl8OBxgvV7P\n",
"MrZtm5zP5wbooVvp7ypmFjPGwLKsyUVvsVg0LNwLwHXbM3foW5bVLJAf3S49o9wzH2dZhqfTCWzb\n",
"vh5GdEGSJLMbZIy1/n4H2Ww2DXc+lHAmPrf6vd1uwTx7NCDvdjsYIqOH5Hw+A8DtbYyZ6f9y1mdZ\n",
"huv1Gi6XC5zP595ak2VZaz6eAvl4PGKe5606GpAvl8vsuVkPnVv7avOIO/e4qz8gQPsIO9fHfJ4r\n",
"h8Oh9bsL4nq9bk0RY32p6xpd1wUpZXvO7lJzt1gsTawLIXp2RVGglBKFEGgycFo55yilbDFyt3w8\n",
"z0MpZYuQn+MjhEApZeuGZ0xNDLrsopSyYeY8zxvl0s0bkm5Z04DrulgUBVJK0fO85gpKKYVFUWCS\n",
"JE2Hxm4gzGD1fw8xxppnE+y5PqafBsykZ2/5TBH+XXpSc8m6z5zz3qWBxkAI0VyD6T6M3SxBkiQt\n",
"9PXVkb6j0h1xHAeFELOCfkZVSqHmk3WfOeeDI0Hjo+1c153ky/8DzCOFNbCAJ30AAAAASUVORK5C\n",
"YII=\n",
"\" transform=\"translate(2144, 175)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = sin(x)\n",
" @printeval quadde(f, 0.0, π)\n",
" @printeval quadgk(f, 0.0, π)\n",
" plot(f, label=L\"\\sin{x}\", \n",
" xlim=[0.0, π], xticks=(0.0:π/2:π, [\"0\", \"\\\\pi/2\", \"\\\\pi\"]),\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, π / 2): Evaluation=51 I=1.000000000000000e+00 E=2.2393e-16\n",
"quadgk(f, 0.0, π / 2): Evaluation=15 I=1.000000000000000e+00 E=2.2204e-16\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip0100\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0100)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0101\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0100)\" d=\"\n",
"M180.66 1455.84 L2352.76 1455.84 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0102\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1410\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 242.135,1455.84 242.135,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1266.71,1455.84 1266.71,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.28,1455.84 2291.28,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1415.97 2352.76,1415.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1083.75 2352.76,1083.75 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,751.54 2352.76,751.54 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,419.325 2352.76,419.325 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,87.1099 2352.76,87.1099 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1455.84 2352.76,1455.84 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1455.84 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1455.84 242.135,1438.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1266.71,1455.84 1266.71,1438.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.28,1455.84 2291.28,1438.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1415.97 206.725,1415.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1083.75 206.725,1083.75 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,751.54 206.725,751.54 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,419.325 206.725,419.325 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,87.1099 206.725,87.1099 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.135, 1509.84)\" x=\"242.135\" y=\"1509.84\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Symbol; font-size:46px; text-anchor:start;\" transform=\"rotate(0, 1253.82, 1507.06)\" x=\"1253.82\" y=\"1507.06\">π</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:43px; text-anchor:start;\" transform=\"rotate(0, 1254.58, 1559.41)\" x=\"1254.58\" y=\"1559.41\">4</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:2.2242; stroke-opacity:1; fill:none\" points=\"\n",
" 1251.24,1520.86 1282.18,1520.86 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Symbol; font-size:46px; text-anchor:start;\" transform=\"rotate(0, 2278.39, 1507.06)\" x=\"2278.39\" y=\"1507.06\">π</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:43px; text-anchor:start;\" transform=\"rotate(0, 2279.15, 1559.41)\" x=\"2279.15\" y=\"1559.41\">2</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:2.2242; stroke-opacity:1; fill:none\" points=\"\n",
" 2275.81,1520.86 2306.75,1520.86 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1433.47)\" x=\"156.66\" y=\"1433.47\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1101.25)\" x=\"156.66\" y=\"1101.25\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 769.04)\" x=\"156.66\" y=\"769.04\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 436.825)\" x=\"156.66\" y=\"436.825\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 104.61)\" x=\"156.66\" y=\"104.61\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip0102)\" d=\"\n",
"M242.135 87.1099 L262.146 87.2662 L447.182 103.492 L558.381 125.967 L652.399 152.286 L754.528 188.305 L848.682 228.18 L949.625 277.793 L1066.58 343.771 L1170.51 409.65 \n",
" L1261.65 472.689 L1361.02 546.651 L1460.98 626.138 L1571.49 719.397 L1676.65 812.779 L1785.98 914.02 L1878.02 1002 L1990.39 1112.17 L2096.01 1217.8 L2265.24 1389.44 \n",
" L2291.28 1415.97 L2291.28 1415.97 L2265.24 1415.97 L2096.01 1415.97 L1990.39 1415.97 L1878.02 1415.97 L1785.98 1415.97 L1676.65 1415.97 L1571.49 1415.97 L1460.98 1415.97 \n",
" L1361.02 1415.97 L1261.65 1415.97 L1170.51 1415.97 L1066.58 1415.97 L949.625 1415.97 L848.682 1415.97 L754.528 1415.97 L652.399 1415.97 L558.381 1415.97 L447.182 1415.97 \n",
" L262.146 1415.97 L242.135 1415.97 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip0102)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,87.1099 262.146,87.2662 447.182,103.492 558.381,125.967 652.399,152.286 754.528,188.305 848.682,228.18 949.625,277.793 1066.58,343.771 1170.51,409.65 \n",
" 1261.65,472.689 1361.02,546.651 1460.98,626.138 1571.49,719.397 1676.65,812.779 1785.98,914.02 1878.02,1002 1990.39,1112.17 2096.01,1217.8 2265.24,1389.44 \n",
" 2291.28,1415.97 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0100)\" d=\"\n",
"M1945.76 251.724 L2280.76 251.724 L2280.76 130.764 L1945.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1945.76,251.724 2280.76,251.724 2280.76,130.764 1945.76,130.764 1945.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0100)\" d=\"\n",
"M1969.76 215.436 L2113.76 215.436 L2113.76 167.052 L1969.76 167.052 L1969.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip0100)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1969.76,167.052 2113.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0100)\">\n",
"<image width=\"95\" height=\"22\" xlink:href=\"data:image/png;base64,\n",
"iVBORw0KGgoAAAANSUhEUgAAAF8AAAAWCAYAAACmG0BRAAAEoklEQVRogbVZ7XHzIAxWOgHpCHgD\n",
"ZqCdgK7ACLQjkEzgdARGIBnB6QRuRyDZQO+fVxwmYOOk5U53uRiEePQFEiAi1Mg5h1JK5JwjACBj\n",
"DIUQqLXGYRhwbm2JQgjY932RpzEGx3FczRMRgXgyxiJxzlEpFeXUWqPW+i7+OY3jiEqpeAbOORpj\n",
"MIRww99ai0KIOE9rHc9ZBZ0xhgCAQgi01qL3Hr332Pc9KqUQAFBKWdywBhABY4zBYRgwhIDjOKJz\n",
"LgqolGrmSXIKIdB7P1lHiuacR5CklA+Db61FAJicgf7jnEdgQwgohIgGEEJA7z0KIZAxhuM43jLX\n",
"WiMAIACgtbYqbAghWtsSWFLKqMi5uXQIxtiiZ3nvEQAWrTmE8Gvga60jcDXchBBIZ1ZKYWkOGVkV\n",
"eGPMrKDW2ugdcwAQ8JzzJos2xkQZ5hRAe7eANgzDw+A75xAAqqGRvhOwnHOsfSdZ4se+7+OHfGFO\n",
"4zhOGDHGivNTIL33zQdP80FJYQTmkpw5z0fAZ4yhc666nmQi6vt+Mpe8Oo0qN5ZUWpgTufwc+KmC\n",
"1oCUG0LJq9LvrTy11neDb4xZPENu2fn3NPzRmYpaaQkPxKiWGygpt8TlOcWV5FlSTomstTcxuJUY\n",
"Y4sGmXo5xf0lugFyjZV674sxMIQw64JNgmUuOqccIcRsSHiEyGKX5lFua8mX8Yw5UPdaR0q5C66J\n",
"96m1zVlS6ll5IjPG3LXnI5TK27r3Tfz+jYdI6oL3gp96Yy2209tgjqSUf66I3BNb1z1dr1dIB2MM\n",
"Hh05z+fn59U8WuQ4n88brfXsnNPpBK+vr/D+/o6rhWgcp9Mp/hZCNK97+gthQgi/zvNyuRTBOxwO\n",
"mxAC9H0PSqmq0vb7Pex2uz9RQAq+lLJ94V+EnfSxBn8YdubCANWlIAtD99SkliiN92sS/xPnfKKM\n",
"37Da3PXyMNQyUjlyGb+/v/FwOFStuOu6zdvb2+Z4PG7GcZx4w+fn52pZ5sblcsH0fKssP7eytQ+i\n",
"lgT06FUz90YqbbTyCiFMCoW/afXpza4FOyFEvJ4/AQAopaIyfn5+qvG1Nna7HR6Px7im67pNaq1p\n",
"TGwZ5/N5sn8qH43r9Xozrza2221MzPd44dxYE++PxyN+fX1B13UbgP8J9+PjYzJprWvm6wEArLVF\n",
"AVuGcy7+FkLAy8vLZmne0iBjyEPY0tjtdrjdbrHrOiwpO5Vhifd+v58aUurKsFAoK5G1tupuacJb\n",
"k4jSBFZKkGnpubX2T2+P1tcn4m0NKw9/+feWwlsq72RC+mpseelSbK/dZtJiUq0OnlN6U6odJjWU\n",
"1tsZPcjWdMvyW1te5hBCTG5UtdxGOSdffzOxtSA2DEPsSs0dgDo68D8hzV31WoDPwW/xqnusPt8n\n",
"r4imHp929mrnLxlzcVNq+RFgVCsZhgGdc7GNONfpqgFAXuWcw2EY0HuPaWNGSrl4FydQaC5jDJVS\n",
"sZUYQoiykuLXyJoCxzlHquUTX631pGVIXkAKpvYoyVkz4tnN08Y0hQ5qdrfG2vwwJZ7UWG59AJEB\n",
"pHypUV2S9d7GPPGmej7x1VovNssZY4t1pX/heuuK1m+bmgAAAABJRU5ErkJggg==\n",
"\" transform=\"translate(2138, 180)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = cos(x)\n",
" @printeval quadde(f, 0.0, π/2)\n",
" @printeval quadgk(f, 0.0, π/2)\n",
" plot(f, label=L\"\\cos{x}\", \n",
" xlim=[0.0, π/2], xticks=([0.0, π/4, π/2], [\"0\", \"\\\\pi/4\", \"\\\\pi/2\"]),\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# [アーベル変換](https://en.wikipedia.org/wiki/Abel_transform)\n",
"\n",
"$$\n",
"F(y) = 2 \\int_{|y|}^{\\infty} \\frac{f(r) r}{\\sqrt{r^2 - y^2}} dr \n",
"$$\n",
"\n",
"もう少し複雑な被積分関数の例として、アーベル変換を挙げてみます。変換を受ける関数 $f(x)$ によっては定積分の厳密解を計算することが不可能になり、数値計算が必要になります。"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(g, y, Inf): Evaluation=89 I=1.772453810111211e+00 E=5.3962e-11\n",
"quadgk(g, y, Inf): Evaluation=1395 I=1.772453829887660e+00 E=4.3196e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip0500\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0500)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0501\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0500)\" d=\"\n",
"M167.279 1487.47 L2352.76 1487.47 L2352.76 47.2441 L167.279 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0502\">\n",
" <rect x=\"167\" y=\"47\" width=\"2186\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 641.486,1487.47 641.486,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1260.02,1487.47 1260.02,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1878.55,1487.47 1878.55,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2290.9,1487.47 2290.9,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,1027.08 2352.76,1027.08 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,607.443 2352.76,607.443 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 167.279,187.808 2352.76,187.808 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1487.47 167.279,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 641.486,1487.47 641.486,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1260.02,1487.47 1260.02,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1878.55,1487.47 1878.55,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2290.9,1487.47 2290.9,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1446.71 193.505,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,1027.08 193.505,1027.08 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,607.443 193.505,607.443 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 167.279,187.808 193.505,187.808 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 641.486, 1541.47)\" x=\"641.486\" y=\"1541.47\">1.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1260.02, 1541.47)\" x=\"1260.02\" y=\"1541.47\">1.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1878.55, 1541.47)\" x=\"1878.55\" y=\"1541.47\">1.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2290.9, 1541.47)\" x=\"2290.9\" y=\"1541.47\">2.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 1464.21)\" x=\"143.279\" y=\"1464.21\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 1044.58)\" x=\"143.279\" y=\"1044.58\">50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 624.943)\" x=\"143.279\" y=\"624.943\">100</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 143.279, 205.308)\" x=\"143.279\" y=\"205.308\">150</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip0502)\" d=\"\n",
"M229.29 88.0053 L229.447 486.053 L229.604 662.413 L229.761 767.554 L229.919 839.313 L230.076 892.288 L230.233 933.464 L230.391 966.658 L230.548 994.156 L230.705 1017.42 \n",
" L230.863 1037.44 L231.02 1054.9 L231.335 1084.03 L231.649 1107.52 L231.964 1126.98 L232.278 1143.45 L232.593 1157.62 L232.908 1169.98 L233.537 1190.6 L234.166 1207.24 \n",
" L234.795 1221.02 L235.424 1232.68 L236.054 1242.72 L236.683 1251.48 L237.941 1266.1 L239.2 1277.9 L240.458 1287.68 L241.717 1295.95 L242.975 1303.08 L244.233 1309.3 \n",
" L245.492 1314.8 L246.75 1319.69 L248.009 1324.1 L249.267 1328.08 L255.085 1342.6 L260.903 1352.96 L266.721 1360.83 L272.539 1367.09 L284.175 1376.53 L295.811 1383.42 \n",
" L319.083 1393.05 L342.355 1399.63 L365.627 1404.51 L388.899 1408.34 L412.171 1411.46 L435.443 1414.07 L491.385 1418.96 L547.327 1422.62 L594.625 1425.09 L641.924 1427.17 \n",
" L744.682 1430.78 L839.416 1433.34 L940.981 1435.55 L1058.65 1437.61 L1163.23 1439.1 L1254.93 1440.2 L1354.91 1441.23 L1455.48 1442.11 L1566.68 1442.93 L1672.48 1443.58 \n",
" L1782.49 1444.15 L1875.09 1444.55 L1988.15 1444.97 L2094.43 1445.29 L2264.7 1445.7 L2290.9 1445.75 L2290.9 1446.71 L2264.7 1446.71 L2094.43 1446.71 L1988.15 1446.71 \n",
" L1875.09 1446.71 L1782.49 1446.71 L1672.48 1446.71 L1566.68 1446.71 L1455.48 1446.71 L1354.91 1446.71 L1254.93 1446.71 L1163.23 1446.71 L1058.65 1446.71 L940.981 1446.71 \n",
" L839.416 1446.71 L744.682 1446.71 L641.924 1446.71 L594.625 1446.71 L547.327 1446.71 L491.385 1446.71 L435.443 1446.71 L412.171 1446.71 L388.899 1446.71 L365.627 1446.71 \n",
" L342.355 1446.71 L319.083 1446.71 L295.811 1446.71 L284.175 1446.71 L272.539 1446.71 L266.721 1446.71 L260.903 1446.71 L255.085 1446.71 L249.267 1446.71 L248.009 1446.71 \n",
" L246.75 1446.71 L245.492 1446.71 L244.233 1446.71 L242.975 1446.71 L241.717 1446.71 L240.458 1446.71 L239.2 1446.71 L237.941 1446.71 L236.683 1446.71 L236.054 1446.71 \n",
" L235.424 1446.71 L234.795 1446.71 L234.166 1446.71 L233.537 1446.71 L232.908 1446.71 L232.593 1446.71 L232.278 1446.71 L231.964 1446.71 L231.649 1446.71 L231.335 1446.71 \n",
" L231.02 1446.71 L230.863 1446.71 L230.705 1446.71 L230.548 1446.71 L230.391 1446.71 L230.233 1446.71 L230.076 1446.71 L229.919 1446.71 L229.761 1446.71 L229.604 1446.71 \n",
" L229.447 1446.71 L229.29 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip0502)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 229.29,88.0053 229.447,486.053 229.604,662.413 229.761,767.554 229.919,839.313 230.076,892.288 230.233,933.464 230.391,966.658 230.548,994.156 230.705,1017.42 \n",
" 230.863,1037.44 231.02,1054.9 231.335,1084.03 231.649,1107.52 231.964,1126.98 232.278,1143.45 232.593,1157.62 232.908,1169.98 233.537,1190.6 234.166,1207.24 \n",
" 234.795,1221.02 235.424,1232.68 236.054,1242.72 236.683,1251.48 237.941,1266.1 239.2,1277.9 240.458,1287.68 241.717,1295.95 242.975,1303.08 244.233,1309.3 \n",
" 245.492,1314.8 246.75,1319.69 248.009,1324.1 249.267,1328.08 255.085,1342.6 260.903,1352.96 266.721,1360.83 272.539,1367.09 284.175,1376.53 295.811,1383.42 \n",
" 319.083,1393.05 342.355,1399.63 365.627,1404.51 388.899,1408.34 412.171,1411.46 435.443,1414.07 491.385,1418.96 547.327,1422.62 594.625,1425.09 641.924,1427.17 \n",
" 744.682,1430.78 839.416,1433.34 940.981,1435.55 1058.65,1437.61 1163.23,1439.1 1254.93,1440.2 1354.91,1441.23 1455.48,1442.11 1566.68,1442.93 1672.48,1443.58 \n",
" 1782.49,1444.15 1875.09,1444.55 1988.15,1444.97 2094.43,1445.29 2264.7,1445.7 2290.9,1445.75 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0500)\" d=\"\n",
"M1845.76 251.724 L2280.76 251.724 L2280.76 130.764 L1845.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1845.76,251.724 2280.76,251.724 2280.76,130.764 1845.76,130.764 1845.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0500)\" d=\"\n",
"M1869.76 215.436 L2013.76 215.436 L2013.76 167.052 L1869.76 167.052 L1869.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip0500)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1869.76,167.052 2013.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0500)\">\n",
"<image width=\"195\" height=\"120\" xlink:href=\"data:image/png;base64,\n",
"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\n",
"\" transform=\"translate(2038, 131)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(r) = exp(-(r^2 - 1))\n",
" y = 1\n",
" g(r) = 2*f(r)*r/sqrt(r^2 - y^2)\n",
" @printeval quadde(g, y, Inf)\n",
" @printeval quadgk(g, y, Inf)\n",
" plot(g, label=L\"\\frac{2 f(r) r}{\\sqrt{r^2 - y^2}}\",\n",
" xlim=[y, 2.0], fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"もとの式は $r = y$ となるすべての点で発散しますが、 $r = s^2 + |y|$ (y は実数)とおいて変数変換すると $r = y = 0$ の一点のみで発散する式に改良できます。\n",
"\n",
"$$\n",
"F(y) = 2 \\int_{|y|}^{\\infty} \\frac{f(r) r}{\\sqrt{r^2 - y^2}} dr = 2 \\int_{0}^{\\infty} \\frac{f(s^2 + |y|) (s^2 + |y|)}{\\sqrt{\\left( s^2 + |y| \\right)^2 - y^2 }} \\frac{dr}{ds} ds = 4 \\int_{0}^{\\infty} \\frac{f(s^2 + |y|) (s^2 + |y|)}{\\sqrt{s^2 + 2|y|}} ds = 4 \\int_{0}^{\\infty} \\frac{f(r) r}{\\sqrt{r + |y|}} ds\n",
"$$\n",
"\n",
"被積分関数の変形によって `quadgk` の評価回数が **1/10** に改善されました。(`quadde` はなぜか変換後の関数のほうが苦手のようです)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(g, 0.0, Inf): Evaluation=161 I=1.772453850904258e+00 E=9.1114e-13\n",
"quadgk(g, 0.0, Inf): Evaluation=135 I=1.772453850905516e+00 E=4.0140e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip0900\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0900)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0901\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0900)\" d=\"\n",
"M153.898 1487.47 L2352.76 1487.47 L2352.76 47.2441 L153.898 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0902\">\n",
" <rect x=\"153\" y=\"47\" width=\"2200\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 216.13,1487.47 216.13,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 734.728,1487.47 734.728,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1253.33,1487.47 1253.33,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1771.93,1487.47 1771.93,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2290.52,1487.47 2290.52,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,1206.53 2352.76,1206.53 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,966.338 2352.76,966.338 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,726.15 2352.76,726.15 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,485.962 2352.76,485.962 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,245.774 2352.76,245.774 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1487.47 153.898,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1487.47 216.13,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 734.728,1487.47 734.728,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1253.33,1487.47 1253.33,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1771.93,1487.47 1771.93,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2290.52,1487.47 2290.52,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1446.71 180.284,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1206.53 180.284,1206.53 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,966.338 180.284,966.338 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,726.15 180.284,726.15 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,485.962 180.284,485.962 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,245.774 180.284,245.774 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 216.13, 1541.47)\" x=\"216.13\" y=\"1541.47\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 734.728, 1541.47)\" x=\"734.728\" y=\"1541.47\">0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1253.33, 1541.47)\" x=\"1253.33\" y=\"1541.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1771.93, 1541.47)\" x=\"1771.93\" y=\"1541.47\">1.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2290.52, 1541.47)\" x=\"2290.52\" y=\"1541.47\">2.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 1464.21)\" x=\"129.898\" y=\"1464.21\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 1224.03)\" x=\"129.898\" y=\"1224.03\">0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 983.838)\" x=\"129.898\" y=\"983.838\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 743.65)\" x=\"129.898\" y=\"743.65\">1.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 503.462)\" x=\"129.898\" y=\"503.462\">2.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 263.274)\" x=\"129.898\" y=\"263.274\">2.5</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip0902)\" d=\"\n",
"M216.13 88.0053 L221.194 88.0458 L226.259 88.1673 L231.323 88.3698 L236.388 88.6534 L283.217 95.1262 L330.046 108.618 L376.875 129.28 L423.704 157.306 L479.988 201.013 \n",
" L536.273 255.886 L583.861 311 L631.449 373.883 L683.142 450.427 L734.836 534.529 L782.493 617.472 L830.15 704.043 L932.337 893.21 L1050.73 1096.31 L1103.34 1173.91 \n",
" L1155.94 1241.19 L1202.08 1291.02 L1248.21 1332.2 L1298.5 1367.7 L1348.8 1394.35 L1399.39 1413.59 L1449.99 1426.72 L1561.87 1441.27 L1668.32 1445.5 L1779 1446.53 \n",
" L1872.17 1446.68 L1985.92 1446.71 L2092.85 1446.71 L2264.16 1446.71 L2290.52 1446.71 L2290.52 1446.71 L2264.16 1446.71 L2092.85 1446.71 L1985.92 1446.71 L1872.17 1446.71 \n",
" L1779 1446.71 L1668.32 1446.71 L1561.87 1446.71 L1449.99 1446.71 L1399.39 1446.71 L1348.8 1446.71 L1298.5 1446.71 L1248.21 1446.71 L1202.08 1446.71 L1155.94 1446.71 \n",
" L1103.34 1446.71 L1050.73 1446.71 L932.337 1446.71 L830.15 1446.71 L782.493 1446.71 L734.836 1446.71 L683.142 1446.71 L631.449 1446.71 L583.861 1446.71 L536.273 1446.71 \n",
" L479.988 1446.71 L423.704 1446.71 L376.875 1446.71 L330.046 1446.71 L283.217 1446.71 L236.388 1446.71 L231.323 1446.71 L226.259 1446.71 L221.194 1446.71 L216.13 1446.71 \n",
" Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,88.0053 221.194,88.0458 226.259,88.1673 231.323,88.3698 236.388,88.6534 283.217,95.1262 330.046,108.618 376.875,129.28 423.704,157.306 479.988,201.013 \n",
" 536.273,255.886 583.861,311 631.449,373.883 683.142,450.427 734.836,534.529 782.493,617.472 830.15,704.043 932.337,893.21 1050.73,1096.31 1103.34,1173.91 \n",
" 1155.94,1241.19 1202.08,1291.02 1248.21,1332.2 1298.5,1367.7 1348.8,1394.35 1399.39,1413.59 1449.99,1426.72 1561.87,1441.27 1668.32,1445.5 1779,1446.53 \n",
" 1872.17,1446.68 1985.92,1446.71 2092.85,1446.71 2264.16,1446.71 2290.52,1446.71 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0900)\" d=\"\n",
"M1612.76 251.724 L2280.76 251.724 L2280.76 130.764 L1612.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1612.76,251.724 2280.76,251.724 2280.76,130.764 1612.76,130.764 1612.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0900)\" d=\"\n",
"M1636.76 215.436 L1780.76 215.436 L1780.76 167.052 L1636.76 167.052 L1636.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1636.76,167.052 1780.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0900)\">\n",
"<image width=\"428\" height=\"124\" xlink:href=\"data:image/png;base64,\n",
"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\n",
"\" transform=\"translate(1805, 129)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(r) = exp(-(r^2 - 1))\n",
" y = 1\n",
" function g(s)\n",
" absy = abs(y)\n",
" r = s^2 + absy\n",
" 4*f(r)*r/sqrt(r + absy)\n",
" end\n",
" @printeval quadde(g, 0.0, Inf)\n",
" @printeval quadgk(g, 0.0, Inf)\n",
" plot(g, label=L\"\\frac{4 f(s^2 + |y|) (s^2 + |y|)}{\\sqrt{s^2 + 2|y|}}\",\n",
" xlim=[0.0, 2.0], fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 積分区間の一部で急激に変化する関数(1)\n",
"\n",
"ほとんどの数値積分アルゴリズムは連続な関数 $f(x)$ の積分を離散値の重み付き和に近似させて計算します。\n",
"\n",
"$$\n",
"\\int_{a}^{b} f(x) dx \\approx \\Sigma^{k} f(x_k) w_k\n",
"$$\n",
"\n",
"ここで $x_k$ は離散値であり、非適応型の積分法では $x_k$ を一定の間隔でとります。結果的に、最も変化の激しい(=スパイク)部分にあわせて全体を細かい間隔で評価するために、このような被積分関数に対しては $k$ の最大値が大きくなる場合があります。対して、適応型の積分法では $f(x)$ の変化の激しさによって $x_k$ の間隔を調整するためこの問題は幾分緩和されます。しかし、スパイクに含まれる $x_k$ を「発見」できるか、という困難は常に存在しています。このスパイクを発見できるか、という問題は適応型・非適応型問わずに存在する問題で、ユーザーが結果を見つつ対応しなければなりません。\n",
"\n",
"$$\n",
"\\int_{0}^{1} \\cosh^{-2}{(10x-2)} + \\cosh^{-4}{(100x-40)} + \\cosh^{-6}{(1000x-600)} dx = 0.2108027355005492773756\\dots\n",
"$$\n",
"\n",
"上の積分は `x = 0.4` および `x = 0.6` 付近にスパイクを含みます。適応型の `quadgk` は評価回数を抑えていますが 0.01 程度の誤差があります、どうやら一つのスパイクを見落としているようです。対して、非適応型の `quadde` は9桁を合わせていますが、評価回数は5桁に及んでしまっています。"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 1.0): Evaluation=12893 I=2.108027351307217e-01 E=3.2400e-10\n",
"quadgk(f, 0.0, 1.0): Evaluation=315 I=2.097360711575962e-01 E=2.3612e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip1300\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1300)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1301\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1300)\" d=\"\n",
"M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1302\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 651.964,1487.47 651.964,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1061.79,1487.47 1061.79,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1471.62,1487.47 1471.62,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1881.45,1487.47 1881.45,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1129.45 2352.76,1129.45 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,812.189 2352.76,812.189 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,494.927 2352.76,494.927 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,177.665 2352.76,177.665 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 651.964,1487.47 651.964,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1061.79,1487.47 1061.79,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1471.62,1487.47 1471.62,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1881.45,1487.47 1881.45,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1446.71 206.725,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1129.45 206.725,1129.45 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,812.189 206.725,812.189 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,494.927 206.725,494.927 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1300)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,177.665 206.725,177.665 \n",
" \"/>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.135, 1541.47)\" x=\"242.135\" y=\"1541.47\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 651.964, 1541.47)\" x=\"651.964\" y=\"1541.47\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1061.79, 1541.47)\" x=\"1061.79\" y=\"1541.47\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1471.62, 1541.47)\" x=\"1471.62\" y=\"1541.47\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1881.45, 1541.47)\" x=\"1881.45\" y=\"1541.47\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2291.28, 1541.47)\" x=\"2291.28\" y=\"1541.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.21)\" x=\"156.66\" y=\"1464.21\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1146.95)\" x=\"156.66\" y=\"1146.95\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 829.689)\" x=\"156.66\" y=\"829.689\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 512.427)\" x=\"156.66\" y=\"512.427\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1300)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 195.165)\" x=\"156.66\" y=\"195.165\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip1302)\" d=\"\n",
"M242.135 1357.05 L244.184 1355.31 L246.233 1353.53 L248.282 1351.72 L250.331 1349.88 L252.38 1348 L254.43 1346.08 L256.479 1344.14 L258.528 1342.15 L260.577 1340.13 \n",
" L262.626 1338.07 L264.675 1335.97 L266.724 1333.84 L268.774 1331.66 L270.823 1329.45 L272.872 1327.19 L274.921 1324.9 L276.97 1322.56 L279.019 1320.18 L281.069 1317.76 \n",
" L283.118 1315.29 L285.167 1312.78 L287.216 1310.23 L289.265 1307.62 L291.314 1304.98 L293.363 1302.28 L295.413 1299.54 L297.462 1296.74 L299.511 1293.9 L301.56 1291.01 \n",
" L303.609 1288.07 L305.658 1285.08 L307.707 1282.03 L309.757 1278.93 L311.806 1275.78 L313.855 1272.57 L315.904 1269.31 L317.953 1265.99 L320.002 1262.61 L322.051 1259.18 \n",
" L324.101 1255.69 L326.15 1252.14 L328.199 1248.53 L330.248 1244.85 L332.297 1241.12 L334.346 1237.33 L336.395 1233.47 L338.445 1229.54 L340.494 1225.56 L342.543 1221.51 \n",
" L344.592 1217.39 L346.641 1213.2 L348.69 1208.95 L350.739 1204.63 L352.789 1200.24 L354.838 1195.78 L356.887 1191.25 L358.936 1186.65 L360.985 1181.97 L363.034 1177.23 \n",
" L365.084 1172.41 L367.133 1167.51 L369.182 1162.54 L371.231 1157.5 L373.28 1152.38 L375.329 1147.18 L377.378 1141.9 L379.428 1136.55 L381.477 1131.12 L383.526 1125.61 \n",
" L385.575 1120.02 L387.624 1114.35 L389.673 1108.6 L391.722 1102.76 L393.772 1096.85 L395.821 1090.85 L397.87 1084.77 L399.919 1078.61 L401.968 1072.37 L404.017 1066.04 \n",
" L406.066 1059.63 L408.116 1053.13 L410.165 1046.55 L412.214 1039.89 L414.263 1033.14 L416.312 1026.31 L418.361 1019.39 L420.41 1012.38 L422.46 1005.3 L424.509 998.125 \n",
" L426.558 990.869 L428.607 983.529 L430.656 976.106 L432.705 968.598 L434.755 961.008 L436.804 953.334 L438.853 945.579 L440.902 937.741 L442.951 929.823 L445 921.824 \n",
" L447.049 913.746 L449.099 905.588 L451.148 897.353 L453.197 889.04 L455.246 880.652 L457.295 872.188 L459.344 863.651 L461.393 855.042 L463.443 846.361 L465.492 837.61 \n",
" L467.541 828.792 L469.59 819.906 L471.639 810.956 L473.688 801.942 L475.737 792.867 L477.787 783.733 L479.836 774.542 L481.885 765.295 L483.934 755.995 L485.983 746.644 \n",
" L488.032 737.245 L490.081 727.8 L492.131 718.313 L494.18 708.784 L496.229 699.218 L498.278 689.617 L500.327 679.984 L502.376 670.323 L504.426 660.636 L506.475 650.926 \n",
" L508.524 641.198 L510.573 631.454 L512.622 621.699 L514.671 611.935 L516.72 602.167 L518.77 592.398 L520.819 582.633 L522.868 572.875 L524.917 563.128 L526.966 553.397 \n",
" L529.015 543.687 L531.064 534 L533.114 524.342 L535.163 514.718 L537.212 505.131 L539.261 495.587 L541.31 486.091 L543.359 476.646 L545.408 467.258 L547.458 457.932 \n",
" L549.507 448.673 L551.556 439.485 L553.605 430.375 L555.654 421.346 L557.703 412.404 L559.752 403.554 L561.802 394.801 L563.851 386.151 L565.9 377.608 L567.949 369.178 \n",
" L569.998 360.866 L572.047 352.677 L574.096 344.617 L576.146 336.689 L578.195 328.901 L580.244 321.256 L582.293 313.759 L584.342 306.417 L586.391 299.233 L588.441 292.212 \n",
" L590.49 285.36 L592.539 278.681 L594.588 272.18 L596.637 265.861 L598.686 259.729 L600.735 253.789 L602.785 248.044 L604.834 242.499 L606.883 237.158 L608.932 232.025 \n",
" L610.981 227.103 L613.03 222.397 L615.079 217.91 L617.129 213.645 L619.178 209.606 L621.227 205.795 L623.276 202.217 L625.325 198.872 L627.374 195.765 L629.423 192.897 \n",
" L631.473 190.271 L633.522 187.889 L635.571 185.752 L637.62 183.863 L639.669 182.222 L641.718 180.832 L643.767 179.693 L645.817 178.806 L647.866 178.172 L649.915 177.792 \n",
" L651.964 177.665 L654.013 177.792 L656.062 178.172 L658.112 178.806 L660.161 179.693 L662.21 180.832 L664.259 182.222 L666.308 183.863 L668.357 185.752 L670.406 187.889 \n",
" L672.456 190.271 L674.505 192.897 L676.554 195.765 L678.603 198.872 L680.652 202.217 L682.701 205.795 L684.75 209.606 L686.8 213.645 L688.849 217.91 L690.898 222.397 \n",
" L692.947 227.103 L694.996 232.025 L697.045 237.158 L699.094 242.499 L701.144 248.044 L703.193 253.789 L705.242 259.729 L707.291 265.861 L709.34 272.18 L711.389 278.681 \n",
" L713.438 285.36 L715.488 292.212 L717.537 299.233 L719.586 306.417 L721.635 313.759 L723.684 321.256 L725.733 328.901 L727.783 336.689 L729.832 344.617 L731.881 352.677 \n",
" L733.93 360.866 L735.979 369.178 L738.028 377.608 L740.077 386.151 L742.127 394.801 L744.176 403.554 L746.225 412.404 L748.274 421.346 L750.323 430.375 L752.372 439.485 \n",
" L754.421 448.673 L756.471 457.932 L758.52 467.258 L760.569 476.646 L762.618 486.091 L764.667 495.587 L766.716 505.131 L768.765 514.718 L770.815 524.342 L772.864 534 \n",
" L774.913 543.687 L776.962 553.397 L779.011 563.128 L781.06 572.875 L783.109 582.633 L785.159 592.398 L787.208 602.167 L789.257 611.935 L791.306 621.699 L793.355 631.454 \n",
" L795.404 641.198 L797.453 650.926 L799.503 660.636 L801.552 670.323 L803.601 679.984 L805.65 689.617 L807.699 699.218 L809.748 708.784 L811.798 718.313 L813.847 727.8 \n",
" L815.896 737.245 L817.945 746.644 L819.994 755.995 L822.043 765.295 L824.092 774.542 L826.142 783.733 L828.191 792.867 L830.24 801.942 L832.289 810.956 L834.338 819.906 \n",
" L836.387 828.792 L838.436 837.61 L840.486 846.361 L842.535 855.042 L844.584 863.651 L846.633 872.188 L848.682 880.652 L850.731 889.04 L852.78 897.353 L854.83 905.588 \n",
" L856.879 913.746 L858.928 921.824 L860.977 929.823 L863.026 937.741 L865.075 945.579 L867.124 953.334 L869.174 961.008 L871.223 968.598 L873.272 976.106 L875.321 983.529 \n",
" L877.37 990.869 L879.419 998.125 L881.469 1005.3 L883.518 1012.38 L885.567 1019.39 L887.616 1026.31 L889.665 1033.14 L891.714 1039.89 L893.763 1046.55 L895.813 1053.13 \n",
" L897.862 1059.63 L899.911 1066.04 L901.96 1072.37 L904.009 1078.61 L906.058 1084.77 L908.107 1090.85 L910.157 1096.85 L912.206 1102.76 L914.255 1108.6 L916.304 1114.35 \n",
" L918.353 1120.02 L920.402 1125.61 L922.451 1131.12 L924.501 1136.55 L926.55 1141.9 L928.599 1147.18 L930.648 1152.38 L932.697 1157.5 L934.746 1162.54 L936.795 1167.51 \n",
" L938.845 1172.41 L940.894 1177.23 L942.943 1181.97 L944.992 1186.65 L947.041 1191.25 L949.09 1195.78 L951.14 1200.24 L953.189 1204.63 L955.238 1208.95 L957.287 1213.2 \n",
" L959.336 1217.39 L961.385 1221.51 L963.434 1225.56 L965.484 1229.54 L967.533 1233.47 L969.582 1237.33 L971.631 1241.12 L973.68 1244.85 L975.729 1248.52 L977.778 1252.13 \n",
" L979.828 1255.68 L981.877 1259.18 L983.926 1262.61 L985.975 1265.98 L988.024 1269.3 L990.073 1272.55 L992.122 1275.75 L994.172 1278.89 L996.221 1281.97 L998.27 1284.99 \n",
" L1000.32 1287.95 L1002.37 1290.83 L1004.42 1293.63 L1006.47 1296.34 L1008.52 1298.93 L1010.56 1301.38 L1012.61 1303.64 L1014.66 1305.65 L1016.71 1307.31 L1018.76 1308.48 \n",
" L1020.81 1308.96 L1022.86 1308.46 L1024.91 1306.57 L1026.96 1302.73 L1029.01 1296.14 L1031.06 1285.75 L1033.11 1270.16 L1035.15 1247.56 L1037.2 1215.77 L1039.25 1172.23 \n",
" L1041.3 1114.24 L1043.35 1039.25 L1045.4 945.519 L1047.45 832.843 L1049.5 703.511 L1051.55 563.092 L1053.6 420.784 L1055.65 288.924 L1057.7 181.434 L1059.74 111.348 \n",
" L1061.79 88.0053 L1063.84 114.806 L1065.89 188.35 L1067.94 299.301 L1069.99 434.625 L1072.04 580.401 L1074.09 724.294 L1076.14 857.107 L1078.19 973.271 L1080.24 1070.5 \n",
" L1082.28 1148.99 L1084.33 1210.51 L1086.38 1257.57 L1088.43 1292.91 L1090.48 1319.06 L1092.53 1338.23 L1094.58 1352.21 L1096.63 1362.4 L1098.68 1369.86 L1100.73 1375.39 \n",
" L1102.78 1379.56 L1104.83 1382.77 L1106.87 1385.31 L1108.92 1387.38 L1110.97 1389.13 L1113.02 1390.66 L1115.07 1392.02 L1117.12 1393.26 L1119.17 1394.43 L1121.22 1395.53 \n",
" L1123.27 1396.58 L1125.32 1397.59 L1127.37 1398.57 L1129.42 1399.52 L1131.46 1400.45 L1133.51 1401.36 L1135.56 1402.24 L1137.61 1403.11 L1139.66 1403.96 L1141.71 1404.8 \n",
" L1143.76 1405.61 L1145.81 1406.42 L1147.86 1407.2 L1149.91 1407.97 L1151.96 1408.73 L1154.01 1409.47 L1156.05 1410.2 L1158.1 1410.91 L1160.15 1411.61 L1162.2 1412.29 \n",
" L1164.25 1412.97 L1166.3 1413.63 L1168.35 1414.27 L1170.4 1414.91 L1172.45 1415.53 L1174.5 1416.14 L1176.55 1416.74 L1178.59 1417.32 L1180.64 1417.9 L1182.69 1418.46 \n",
" L1184.74 1419.02 L1186.79 1419.56 L1188.84 1420.09 L1190.89 1420.61 L1192.94 1421.12 L1194.99 1421.63 L1197.04 1422.12 L1199.09 1422.6 L1201.14 1423.07 L1203.18 1423.54 \n",
" L1205.23 1423.99 L1207.28 1424.44 L1209.33 1424.88 L1211.38 1425.3 L1213.43 1425.72 L1215.48 1426.14 L1217.53 1426.54 L1219.58 1426.94 L1221.63 1427.33 L1223.68 1427.71 \n",
" L1225.73 1428.08 L1227.77 1428.45 L1229.82 1428.81 L1231.87 1429.16 L1233.92 1429.5 L1235.97 1429.84 L1238.02 1430.17 L1240.07 1430.5 L1242.12 1430.82 L1244.17 1431.13 \n",
" L1246.22 1431.44 L1248.27 1431.74 L1250.31 1432.03 L1252.36 1432.32 L1254.41 1432.61 L1256.46 1432.88 L1258.51 1433.16 L1260.56 1433.42 L1262.61 1433.68 L1264.66 1433.94 \n",
" L1266.71 1434.19 L1268.76 1434.44 L1270.81 1434.68 L1272.86 1434.92 L1274.9 1435.15 L1276.95 1435.38 L1279 1435.6 L1281.05 1435.82 L1283.1 1436.04 L1285.15 1436.25 \n",
" L1287.2 1436.45 L1289.25 1436.66 L1291.3 1436.85 L1293.35 1437.05 L1295.4 1437.24 L1297.45 1437.43 L1299.49 1437.61 L1301.54 1437.79 L1303.59 1437.97 L1305.64 1438.14 \n",
" L1307.69 1438.31 L1309.74 1438.47 L1311.79 1438.64 L1313.84 1438.8 L1315.89 1438.95 L1317.94 1439.1 L1319.99 1439.25 L1322.04 1439.4 L1324.08 1439.55 L1326.13 1439.69 \n",
" L1328.18 1439.83 L1330.23 1439.96 L1332.28 1440.1 L1334.33 1440.23 L1336.38 1440.35 L1338.43 1440.48 L1340.48 1440.6 L1342.53 1440.72 L1344.58 1440.84 L1346.62 1440.96 \n",
" L1348.67 1441.07 L1350.72 1441.18 L1352.77 1441.29 L1354.82 1441.4 L1356.87 1441.51 L1358.92 1441.61 L1360.97 1441.71 L1363.02 1441.81 L1365.07 1441.9 L1367.12 1442 \n",
" L1369.17 1442.09 L1371.21 1442.18 L1373.26 1442.27 L1375.31 1442.36 L1377.36 1442.45 L1379.41 1442.53 L1381.46 1442.61 L1383.51 1442.7 L1385.56 1442.78 L1387.61 1442.85 \n",
" L1389.66 1442.93 L1391.71 1443 L1393.76 1443.08 L1395.8 1443.15 L1397.85 1443.22 L1399.9 1443.29 L1401.95 1443.36 L1404 1443.42 L1406.05 1443.49 L1408.1 1443.55 \n",
" L1410.15 1443.61 L1412.2 1443.68 L1414.25 1443.74 L1416.3 1443.79 L1418.34 1443.85 L1420.39 1443.91 L1422.44 1443.96 L1424.49 1444.02 L1426.54 1444.07 L1428.59 1444.12 \n",
" L1430.64 1444.18 L1432.69 1444.23 L1434.74 1444.28 L1436.79 1444.32 L1438.84 1444.37 L1440.89 1444.42 L1442.93 1444.46 L1444.98 1444.51 L1447.03 1444.55 L1449.08 1444.59 \n",
" L1451.13 1444.64 L1453.18 1444.68 L1455.23 1444.72 L1457.28 1444.76 L1459.33 1444.79 L1461.38 1444.83 L1463.43 1444.87 L1465.48 1444.91 L1467.52 1444.49 L1469.57 1350.97 \n",
" L1471.62 175.963 L1473.67 1351.04 L1475.72 1444.63 L1477.77 1445.11 L1479.82 1445.14 L1481.87 1445.17 L1483.92 1445.2 L1485.97 1445.23 L1488.02 1445.26 L1490.07 1445.29 \n",
" L1492.11 1445.32 L1494.16 1445.35 L1496.21 1445.37 L1498.26 1445.4 L1500.31 1445.43 L1502.36 1445.45 L1504.41 1445.48 L1506.46 1445.5 L1508.51 1445.53 L1510.56 1445.55 \n",
" L1512.61 1445.57 L1514.65 1445.6 L1516.7 1445.62 L1518.75 1445.64 L1520.8 1445.66 L1522.85 1445.68 L1524.9 1445.7 L1526.95 1445.72 L1529 1445.74 L1531.05 1445.76 \n",
" L1533.1 1445.78 L1535.15 1445.8 L1537.2 1445.82 L1539.24 1445.83 L1541.29 1445.85 L1543.34 1445.87 L1545.39 1445.88 L1547.44 1445.9 L1549.49 1445.92 L1551.54 1445.93 \n",
" L1553.59 1445.95 L1555.64 1445.96 L1557.69 1445.98 L1559.74 1445.99 L1561.79 1446.01 L1563.83 1446.02 L1565.88 1446.04 L1567.93 1446.05 L1569.98 1446.06 L1572.03 1446.07 \n",
" L1574.08 1446.09 L1576.13 1446.1 L1578.18 1446.11 L1580.23 1446.12 L1582.28 1446.14 L1584.33 1446.15 L1586.38 1446.16 L1588.42 1446.17 L1590.47 1446.18 L1592.52 1446.19 \n",
" L1594.57 1446.2 L1596.62 1446.21 L1598.67 1446.22 L1600.72 1446.23 L1602.77 1446.24 L1604.82 1446.25 L1606.87 1446.26 L1608.92 1446.27 L1610.96 1446.28 L1613.01 1446.29 \n",
" L1615.06 1446.29 L1617.11 1446.3 L1619.16 1446.31 L1621.21 1446.32 L1623.26 1446.33 L1625.31 1446.33 L1627.36 1446.34 L1629.41 1446.35 L1631.46 1446.36 L1633.51 1446.36 \n",
" L1635.55 1446.37 L1637.6 1446.38 L1639.65 1446.38 L1641.7 1446.39 L1643.75 1446.4 L1645.8 1446.4 L1647.85 1446.41 L1649.9 1446.41 L1651.95 1446.42 L1654 1446.43 \n",
" L1656.05 1446.43 L1658.1 1446.44 L1660.14 1446.44 L1662.19 1446.45 L1664.24 1446.45 L1666.29 1446.46 L1668.34 1446.46 L1670.39 1446.47 L1672.44 1446.47 L1674.49 1446.48 \n",
" L1676.54 1446.48 L1678.59 1446.49 L1680.64 1446.49 L1682.68 1446.5 L1684.73 1446.5 L1686.78 1446.5 L1688.83 1446.51 L1690.88 1446.51 L1692.93 1446.52 L1694.98 1446.52 \n",
" L1697.03 1446.52 L1699.08 1446.53 L1701.13 1446.53 L1703.18 1446.54 L1705.23 1446.54 L1707.27 1446.54 L1709.32 1446.55 L1711.37 1446.55 L1713.42 1446.55 L1715.47 1446.56 \n",
" L1717.52 1446.56 L1719.57 1446.56 L1721.62 1446.57 L1723.67 1446.57 L1725.72 1446.57 L1727.77 1446.57 L1729.82 1446.58 L1731.86 1446.58 L1733.91 1446.58 L1735.96 1446.58 \n",
" L1738.01 1446.59 L1740.06 1446.59 L1742.11 1446.59 L1744.16 1446.59 L1746.21 1446.6 L1748.26 1446.6 L1750.31 1446.6 L1752.36 1446.6 L1754.41 1446.61 L1756.45 1446.61 \n",
" L1758.5 1446.61 L1760.55 1446.61 L1762.6 1446.61 L1764.65 1446.62 L1766.7 1446.62 L1768.75 1446.62 L1770.8 1446.62 L1772.85 1446.62 L1774.9 1446.63 L1776.95 1446.63 \n",
" L1778.99 1446.63 L1781.04 1446.63 L1783.09 1446.63 L1785.14 1446.63 L1787.19 1446.64 L1789.24 1446.64 L1791.29 1446.64 L1793.34 1446.64 L1795.39 1446.64 L1797.44 1446.64 \n",
" L1799.49 1446.64 L1801.54 1446.65 L1803.58 1446.65 L1805.63 1446.65 L1807.68 1446.65 L1809.73 1446.65 L1811.78 1446.65 L1813.83 1446.65 L1815.88 1446.65 L1817.93 1446.66 \n",
" L1819.98 1446.66 L1822.03 1446.66 L1824.08 1446.66 L1826.13 1446.66 L1828.17 1446.66 L1830.22 1446.66 L1832.27 1446.66 L1834.32 1446.66 L1836.37 1446.67 L1838.42 1446.67 \n",
" L1840.47 1446.67 L1842.52 1446.67 L1844.57 1446.67 L1846.62 1446.67 L1848.67 1446.67 L1850.71 1446.67 L1852.76 1446.67 L1854.81 1446.67 L1856.86 1446.67 L1858.91 1446.67 \n",
" L1860.96 1446.68 L1863.01 1446.68 L1865.06 1446.68 L1867.11 1446.68 L1869.16 1446.68 L1871.21 1446.68 L1873.26 1446.68 L1875.3 1446.68 L1877.35 1446.68 L1879.4 1446.68 \n",
" L1881.45 1446.68 L1883.5 1446.68 L1885.55 1446.68 L1887.6 1446.68 L1889.65 1446.68 L1891.7 1446.69 L1893.75 1446.69 L1895.8 1446.69 L1897.85 1446.69 L1899.89 1446.69 \n",
" L1901.94 1446.69 L1903.99 1446.69 L1906.04 1446.69 L1908.09 1446.69 L1910.14 1446.69 L1912.19 1446.69 L1914.24 1446.69 L1916.29 1446.69 L1918.34 1446.69 L1920.39 1446.69 \n",
" L1922.44 1446.69 L1924.48 1446.69 L1926.53 1446.69 L1928.58 1446.69 L1930.63 1446.69 L1932.68 1446.69 L1934.73 1446.69 L1936.78 1446.7 L1938.83 1446.7 L1940.88 1446.7 \n",
" L1942.93 1446.7 L1944.98 1446.7 L1947.02 1446.7 L1949.07 1446.7 L1951.12 1446.7 L1953.17 1446.7 L1955.22 1446.7 L1957.27 1446.7 L1959.32 1446.7 L1961.37 1446.7 \n",
" L1963.42 1446.7 L1965.47 1446.7 L1967.52 1446.7 L1969.57 1446.7 L1971.61 1446.7 L1973.66 1446.7 L1975.71 1446.7 L1977.76 1446.7 L1979.81 1446.7 L1981.86 1446.7 \n",
" L1983.91 1446.7 L1985.96 1446.7 L1988.01 1446.7 L1990.06 1446.7 L1992.11 1446.7 L1994.16 1446.7 L1996.2 1446.7 L1998.25 1446.7 L2000.3 1446.7 L2002.35 1446.7 \n",
" L2004.4 1446.7 L2006.45 1446.7 L2008.5 1446.7 L2010.55 1446.7 L2012.6 1446.7 L2014.65 1446.7 L2016.7 1446.71 L2018.74 1446.71 L2020.79 1446.71 L2022.84 1446.71 \n",
" L2024.89 1446.71 L2026.94 1446.71 L2028.99 1446.71 L2031.04 1446.71 L2033.09 1446.71 L2035.14 1446.71 L2037.19 1446.71 L2039.24 1446.71 L2041.29 1446.71 L2043.33 1446.71 \n",
" L2045.38 1446.71 L2047.43 1446.71 L2049.48 1446.71 L2051.53 1446.71 L2053.58 1446.71 L2055.63 1446.71 L2057.68 1446.71 L2059.73 1446.71 L2061.78 1446.71 L2063.83 1446.71 \n",
" L2065.88 1446.71 L2067.92 1446.71 L2069.97 1446.71 L2072.02 1446.71 L2074.07 1446.71 L2076.12 1446.71 L2078.17 1446.71 L2080.22 1446.71 L2082.27 1446.71 L2084.32 1446.71 \n",
" L2086.37 1446.71 L2088.42 1446.71 L2090.47 1446.71 L2092.51 1446.71 L2094.56 1446.71 L2096.61 1446.71 L2098.66 1446.71 L2100.71 1446.71 L2102.76 1446.71 L2104.81 1446.71 \n",
" L2106.86 1446.71 L2108.91 1446.71 L2110.96 1446.71 L2113.01 1446.71 L2115.05 1446.71 L2117.1 1446.71 L2119.15 1446.71 L2121.2 1446.71 L2123.25 1446.71 L2125.3 1446.71 \n",
" L2127.35 1446.71 L2129.4 1446.71 L2131.45 1446.71 L2133.5 1446.71 L2135.55 1446.71 L2137.6 1446.71 L2139.64 1446.71 L2141.69 1446.71 L2143.74 1446.71 L2145.79 1446.71 \n",
" L2147.84 1446.71 L2149.89 1446.71 L2151.94 1446.71 L2153.99 1446.71 L2156.04 1446.71 L2158.09 1446.71 L2160.14 1446.71 L2162.19 1446.71 L2164.23 1446.71 L2166.28 1446.71 \n",
" L2168.33 1446.71 L2170.38 1446.71 L2172.43 1446.71 L2174.48 1446.71 L2176.53 1446.71 L2178.58 1446.71 L2180.63 1446.71 L2182.68 1446.71 L2184.73 1446.71 L2186.78 1446.71 \n",
" L2188.82 1446.71 L2190.87 1446.71 L2192.92 1446.71 L2194.97 1446.71 L2197.02 1446.71 L2199.07 1446.71 L2201.12 1446.71 L2203.17 1446.71 L2205.22 1446.71 L2207.27 1446.71 \n",
" L2209.32 1446.71 L2211.36 1446.71 L2213.41 1446.71 L2215.46 1446.71 L2217.51 1446.71 L2219.56 1446.71 L2221.61 1446.71 L2223.66 1446.71 L2225.71 1446.71 L2227.76 1446.71 \n",
" L2229.81 1446.71 L2231.86 1446.71 L2233.91 1446.71 L2235.95 1446.71 L2238 1446.71 L2240.05 1446.71 L2242.1 1446.71 L2244.15 1446.71 L2246.2 1446.71 L2248.25 1446.71 \n",
" L2250.3 1446.71 L2252.35 1446.71 L2254.4 1446.71 L2256.45 1446.71 L2258.5 1446.71 L2260.54 1446.71 L2262.59 1446.71 L2264.64 1446.71 L2266.69 1446.71 L2268.74 1446.71 \n",
" L2270.79 1446.71 L2272.84 1446.71 L2274.89 1446.71 L2276.94 1446.71 L2278.99 1446.71 L2281.04 1446.71 L2283.08 1446.71 L2285.13 1446.71 L2287.18 1446.71 L2289.23 1446.71 \n",
" L2291.28 1446.71 L2291.28 1446.71 L2289.23 1446.71 L2287.18 1446.71 L2285.13 1446.71 L2283.08 1446.71 L2281.04 1446.71 L2278.99 1446.71 L2276.94 1446.71 L2274.89 1446.71 \n",
" L2272.84 1446.71 L2270.79 1446.71 L2268.74 1446.71 L2266.69 1446.71 L2264.64 1446.71 L2262.59 1446.71 L2260.54 1446.71 L2258.5 1446.71 L2256.45 1446.71 L2254.4 1446.71 \n",
" L2252.35 1446.71 L2250.3 1446.71 L2248.25 1446.71 L2246.2 1446.71 L2244.15 1446.71 L2242.1 1446.71 L2240.05 1446.71 L2238 1446.71 L2235.95 1446.71 L2233.91 1446.71 \n",
" L2231.86 1446.71 L2229.81 1446.71 L2227.76 1446.71 L2225.71 1446.71 L2223.66 1446.71 L2221.61 1446.71 L2219.56 1446.71 L2217.51 1446.71 L2215.46 1446.71 L2213.41 1446.71 \n",
" L2211.36 1446.71 L2209.32 1446.71 L2207.27 1446.71 L2205.22 1446.71 L2203.17 1446.71 L2201.12 1446.71 L2199.07 1446.71 L2197.02 1446.71 L2194.97 1446.71 L2192.92 1446.71 \n",
" L2190.87 1446.71 L2188.82 1446.71 L2186.78 1446.71 L2184.73 1446.71 L2182.68 1446.71 L2180.63 1446.71 L2178.58 1446.71 L2176.53 1446.71 L2174.48 1446.71 L2172.43 1446.71 \n",
" L2170.38 1446.71 L2168.33 1446.71 L2166.28 1446.71 L2164.23 1446.71 L2162.19 1446.71 L2160.14 1446.71 L2158.09 1446.71 L2156.04 1446.71 L2153.99 1446.71 L2151.94 1446.71 \n",
" L2149.89 1446.71 L2147.84 1446.71 L2145.79 1446.71 L2143.74 1446.71 L2141.69 1446.71 L2139.64 1446.71 L2137.6 1446.71 L2135.55 1446.71 L2133.5 1446.71 L2131.45 1446.71 \n",
" L2129.4 1446.71 L2127.35 1446.71 L2125.3 1446.71 L2123.25 1446.71 L2121.2 1446.71 L2119.15 1446.71 L2117.1 1446.71 L2115.05 1446.71 L2113.01 1446.71 L2110.96 1446.71 \n",
" L2108.91 1446.71 L2106.86 1446.71 L2104.81 1446.71 L2102.76 1446.71 L2100.71 1446.71 L2098.66 1446.71 L2096.61 1446.71 L2094.56 1446.71 L2092.51 1446.71 L2090.47 1446.71 \n",
" L2088.42 1446.71 L2086.37 1446.71 L2084.32 1446.71 L2082.27 1446.71 L2080.22 1446.71 L2078.17 1446.71 L2076.12 1446.71 L2074.07 1446.71 L2072.02 1446.71 L2069.97 1446.71 \n",
" L2067.92 1446.71 L2065.88 1446.71 L2063.83 1446.71 L2061.78 1446.71 L2059.73 1446.71 L2057.68 1446.71 L2055.63 1446.71 L2053.58 1446.71 L2051.53 1446.71 L2049.48 1446.71 \n",
" L2047.43 1446.71 L2045.38 1446.71 L2043.33 1446.71 L2041.29 1446.71 L2039.24 1446.71 L2037.19 1446.71 L2035.14 1446.71 L2033.09 1446.71 L2031.04 1446.71 L2028.99 1446.71 \n",
" L2026.94 1446.71 L2024.89 1446.71 L2022.84 1446.71 L2020.79 1446.71 L2018.74 1446.71 L2016.7 1446.71 L2014.65 1446.71 L2012.6 1446.71 L2010.55 1446.71 L2008.5 1446.71 \n",
" L2006.45 1446.71 L2004.4 1446.71 L2002.35 1446.71 L2000.3 1446.71 L1998.25 1446.71 L1996.2 1446.71 L1994.16 1446.71 L1992.11 1446.71 L1990.06 1446.71 L1988.01 1446.71 \n",
" L1985.96 1446.71 L1983.91 1446.71 L1981.86 1446.71 L1979.81 1446.71 L1977.76 1446.71 L1975.71 1446.71 L1973.66 1446.71 L1971.61 1446.71 L1969.57 1446.71 L1967.52 1446.71 \n",
" L1965.47 1446.71 L1963.42 1446.71 L1961.37 1446.71 L1959.32 1446.71 L1957.27 1446.71 L1955.22 1446.71 L1953.17 1446.71 L1951.12 1446.71 L1949.07 1446.71 L1947.02 1446.71 \n",
" L1944.98 1446.71 L1942.93 1446.71 L1940.88 1446.71 L1938.83 1446.71 L1936.78 1446.71 L1934.73 1446.71 L1932.68 1446.71 L1930.63 1446.71 L1928.58 1446.71 L1926.53 1446.71 \n",
" L1924.48 1446.71 L1922.44 1446.71 L1920.39 1446.71 L1918.34 1446.71 L1916.29 1446.71 L1914.24 1446.71 L1912.19 1446.71 L1910.14 1446.71 L1908.09 1446.71 L1906.04 1446.71 \n",
" L1903.99 1446.71 L1901.94 1446.71 L1899.89 1446.71 L1897.85 1446.71 L1895.8 1446.71 L1893.75 1446.71 L1891.7 1446.71 L1889.65 1446.71 L1887.6 1446.71 L1885.55 1446.71 \n",
" L1883.5 1446.71 L1881.45 1446.71 L1879.4 1446.71 L1877.35 1446.71 L1875.3 1446.71 L1873.26 1446.71 L1871.21 1446.71 L1869.16 1446.71 L1867.11 1446.71 L1865.06 1446.71 \n",
" L1863.01 1446.71 L1860.96 1446.71 L1858.91 1446.71 L1856.86 1446.71 L1854.81 1446.71 L1852.76 1446.71 L1850.71 1446.71 L1848.67 1446.71 L1846.62 1446.71 L1844.57 1446.71 \n",
" L1842.52 1446.71 L1840.47 1446.71 L1838.42 1446.71 L1836.37 1446.71 L1834.32 1446.71 L1832.27 1446.71 L1830.22 1446.71 L1828.17 1446.71 L1826.13 1446.71 L1824.08 1446.71 \n",
" L1822.03 1446.71 L1819.98 1446.71 L1817.93 1446.71 L1815.88 1446.71 L1813.83 1446.71 L1811.78 1446.71 L1809.73 1446.71 L1807.68 1446.71 L1805.63 1446.71 L1803.58 1446.71 \n",
" L1801.54 1446.71 L1799.49 1446.71 L1797.44 1446.71 L1795.39 1446.71 L1793.34 1446.71 L1791.29 1446.71 L1789.24 1446.71 L1787.19 1446.71 L1785.14 1446.71 L1783.09 1446.71 \n",
" L1781.04 1446.71 L1778.99 1446.71 L1776.95 1446.71 L1774.9 1446.71 L1772.85 1446.71 L1770.8 1446.71 L1768.75 1446.71 L1766.7 1446.71 L1764.65 1446.71 L1762.6 1446.71 \n",
" L1760.55 1446.71 L1758.5 1446.71 L1756.45 1446.71 L1754.41 1446.71 L1752.36 1446.71 L1750.31 1446.71 L1748.26 1446.71 L1746.21 1446.71 L1744.16 1446.71 L1742.11 1446.71 \n",
" L1740.06 1446.71 L1738.01 1446.71 L1735.96 1446.71 L1733.91 1446.71 L1731.86 1446.71 L1729.82 1446.71 L1727.77 1446.71 L1725.72 1446.71 L1723.67 1446.71 L1721.62 1446.71 \n",
" L1719.57 1446.71 L1717.52 1446.71 L1715.47 1446.71 L1713.42 1446.71 L1711.37 1446.71 L1709.32 1446.71 L1707.27 1446.71 L1705.23 1446.71 L1703.18 1446.71 L1701.13 1446.71 \n",
" L1699.08 1446.71 L1697.03 1446.71 L1694.98 1446.71 L1692.93 1446.71 L1690.88 1446.71 L1688.83 1446.71 L1686.78 1446.71 L1684.73 1446.71 L1682.68 1446.71 L1680.64 1446.71 \n",
" L1678.59 1446.71 L1676.54 1446.71 L1674.49 1446.71 L1672.44 1446.71 L1670.39 1446.71 L1668.34 1446.71 L1666.29 1446.71 L1664.24 1446.71 L1662.19 1446.71 L1660.14 1446.71 \n",
" L1658.1 1446.71 L1656.05 1446.71 L1654 1446.71 L1651.95 1446.71 L1649.9 1446.71 L1647.85 1446.71 L1645.8 1446.71 L1643.75 1446.71 L1641.7 1446.71 L1639.65 1446.71 \n",
" L1637.6 1446.71 L1635.55 1446.71 L1633.51 1446.71 L1631.46 1446.71 L1629.41 1446.71 L1627.36 1446.71 L1625.31 1446.71 L1623.26 1446.71 L1621.21 1446.71 L1619.16 1446.71 \n",
" L1617.11 1446.71 L1615.06 1446.71 L1613.01 1446.71 L1610.96 1446.71 L1608.92 1446.71 L1606.87 1446.71 L1604.82 1446.71 L1602.77 1446.71 L1600.72 1446.71 L1598.67 1446.71 \n",
" L1596.62 1446.71 L1594.57 1446.71 L1592.52 1446.71 L1590.47 1446.71 L1588.42 1446.71 L1586.38 1446.71 L1584.33 1446.71 L1582.28 1446.71 L1580.23 1446.71 L1578.18 1446.71 \n",
" L1576.13 1446.71 L1574.08 1446.71 L1572.03 1446.71 L1569.98 1446.71 L1567.93 1446.71 L1565.88 1446.71 L1563.83 1446.71 L1561.79 1446.71 L1559.74 1446.71 L1557.69 1446.71 \n",
" L1555.64 1446.71 L1553.59 1446.71 L1551.54 1446.71 L1549.49 1446.71 L1547.44 1446.71 L1545.39 1446.71 L1543.34 1446.71 L1541.29 1446.71 L1539.24 1446.71 L1537.2 1446.71 \n",
" L1535.15 1446.71 L1533.1 1446.71 L1531.05 1446.71 L1529 1446.71 L1526.95 1446.71 L1524.9 1446.71 L1522.85 1446.71 L1520.8 1446.71 L1518.75 1446.71 L1516.7 1446.71 \n",
" L1514.65 1446.71 L1512.61 1446.71 L1510.56 1446.71 L1508.51 1446.71 L1506.46 1446.71 L1504.41 1446.71 L1502.36 1446.71 L1500.31 1446.71 L1498.26 1446.71 L1496.21 1446.71 \n",
" L1494.16 1446.71 L1492.11 1446.71 L1490.07 1446.71 L1488.02 1446.71 L1485.97 1446.71 L1483.92 1446.71 L1481.87 1446.71 L1479.82 1446.71 L1477.77 1446.71 L1475.72 1446.71 \n",
" L1473.67 1446.71 L1471.62 1446.71 L1469.57 1446.71 L1467.52 1446.71 L1465.48 1446.71 L1463.43 1446.71 L1461.38 1446.71 L1459.33 1446.71 L1457.28 1446.71 L1455.23 1446.71 \n",
" L1453.18 1446.71 L1451.13 1446.71 L1449.08 1446.71 L1447.03 1446.71 L1444.98 1446.71 L1442.93 1446.71 L1440.89 1446.71 L1438.84 1446.71 L1436.79 1446.71 L1434.74 1446.71 \n",
" L1432.69 1446.71 L1430.64 1446.71 L1428.59 1446.71 L1426.54 1446.71 L1424.49 1446.71 L1422.44 1446.71 L1420.39 1446.71 L1418.34 1446.71 L1416.3 1446.71 L1414.25 1446.71 \n",
" L1412.2 1446.71 L1410.15 1446.71 L1408.1 1446.71 L1406.05 1446.71 L1404 1446.71 L1401.95 1446.71 L1399.9 1446.71 L1397.85 1446.71 L1395.8 1446.71 L1393.76 1446.71 \n",
" L1391.71 1446.71 L1389.66 1446.71 L1387.61 1446.71 L1385.56 1446.71 L1383.51 1446.71 L1381.46 1446.71 L1379.41 1446.71 L1377.36 1446.71 L1375.31 1446.71 L1373.26 1446.71 \n",
" L1371.21 1446.71 L1369.17 1446.71 L1367.12 1446.71 L1365.07 1446.71 L1363.02 1446.71 L1360.97 1446.71 L1358.92 1446.71 L1356.87 1446.71 L1354.82 1446.71 L1352.77 1446.71 \n",
" L1350.72 1446.71 L1348.67 1446.71 L1346.62 1446.71 L1344.58 1446.71 L1342.53 1446.71 L1340.48 1446.71 L1338.43 1446.71 L1336.38 1446.71 L1334.33 1446.71 L1332.28 1446.71 \n",
" L1330.23 1446.71 L1328.18 1446.71 L1326.13 1446.71 L1324.08 1446.71 L1322.04 1446.71 L1319.99 1446.71 L1317.94 1446.71 L1315.89 1446.71 L1313.84 1446.71 L1311.79 1446.71 \n",
" L1309.74 1446.71 L1307.69 1446.71 L1305.64 1446.71 L1303.59 1446.71 L1301.54 1446.71 L1299.49 1446.71 L1297.45 1446.71 L1295.4 1446.71 L1293.35 1446.71 L1291.3 1446.71 \n",
" L1289.25 1446.71 L1287.2 1446.71 L1285.15 1446.71 L1283.1 1446.71 L1281.05 1446.71 L1279 1446.71 L1276.95 1446.71 L1274.9 1446.71 L1272.86 1446.71 L1270.81 1446.71 \n",
" L1268.76 1446.71 L1266.71 1446.71 L1264.66 1446.71 L1262.61 1446.71 L1260.56 1446.71 L1258.51 1446.71 L1256.46 1446.71 L1254.41 1446.71 L1252.36 1446.71 L1250.31 1446.71 \n",
" L1248.27 1446.71 L1246.22 1446.71 L1244.17 1446.71 L1242.12 1446.71 L1240.07 1446.71 L1238.02 1446.71 L1235.97 1446.71 L1233.92 1446.71 L1231.87 1446.71 L1229.82 1446.71 \n",
" L1227.77 1446.71 L1225.73 1446.71 L1223.68 1446.71 L1221.63 1446.71 L1219.58 1446.71 L1217.53 1446.71 L1215.48 1446.71 L1213.43 1446.71 L1211.38 1446.71 L1209.33 1446.71 \n",
" L1207.28 1446.71 L1205.23 1446.71 L1203.18 1446.71 L1201.14 1446.71 L1199.09 1446.71 L1197.04 1446.71 L1194.99 1446.71 L1192.94 1446.71 L1190.89 1446.71 L1188.84 1446.71 \n",
" L1186.79 1446.71 L1184.74 1446.71 L1182.69 1446.71 L1180.64 1446.71 L1178.59 1446.71 L1176.55 1446.71 L1174.5 1446.71 L1172.45 1446.71 L1170.4 1446.71 L1168.35 1446.71 \n",
" L1166.3 1446.71 L1164.25 1446.71 L1162.2 1446.71 L1160.15 1446.71 L1158.1 1446.71 L1156.05 1446.71 L1154.01 1446.71 L1151.96 1446.71 L1149.91 1446.71 L1147.86 1446.71 \n",
" L1145.81 1446.71 L1143.76 1446.71 L1141.71 1446.71 L1139.66 1446.71 L1137.61 1446.71 L1135.56 1446.71 L1133.51 1446.71 L1131.46 1446.71 L1129.42 1446.71 L1127.37 1446.71 \n",
" L1125.32 1446.71 L1123.27 1446.71 L1121.22 1446.71 L1119.17 1446.71 L1117.12 1446.71 L1115.07 1446.71 L1113.02 1446.71 L1110.97 1446.71 L1108.92 1446.71 L1106.87 1446.71 \n",
" L1104.83 1446.71 L1102.78 1446.71 L1100.73 1446.71 L1098.68 1446.71 L1096.63 1446.71 L1094.58 1446.71 L1092.53 1446.71 L1090.48 1446.71 L1088.43 1446.71 L1086.38 1446.71 \n",
" L1084.33 1446.71 L1082.28 1446.71 L1080.24 1446.71 L1078.19 1446.71 L1076.14 1446.71 L1074.09 1446.71 L1072.04 1446.71 L1069.99 1446.71 L1067.94 1446.71 L1065.89 1446.71 \n",
" L1063.84 1446.71 L1061.79 1446.71 L1059.74 1446.71 L1057.7 1446.71 L1055.65 1446.71 L1053.6 1446.71 L1051.55 1446.71 L1049.5 1446.71 L1047.45 1446.71 L1045.4 1446.71 \n",
" L1043.35 1446.71 L1041.3 1446.71 L1039.25 1446.71 L1037.2 1446.71 L1035.15 1446.71 L1033.11 1446.71 L1031.06 1446.71 L1029.01 1446.71 L1026.96 1446.71 L1024.91 1446.71 \n",
" L1022.86 1446.71 L1020.81 1446.71 L1018.76 1446.71 L1016.71 1446.71 L1014.66 1446.71 L1012.61 1446.71 L1010.56 1446.71 L1008.52 1446.71 L1006.47 1446.71 L1004.42 1446.71 \n",
" L1002.37 1446.71 L1000.32 1446.71 L998.27 1446.71 L996.221 1446.71 L994.172 1446.71 L992.122 1446.71 L990.073 1446.71 L988.024 1446.71 L985.975 1446.71 L983.926 1446.71 \n",
" L981.877 1446.71 L979.828 1446.71 L977.778 1446.71 L975.729 1446.71 L973.68 1446.71 L971.631 1446.71 L969.582 1446.71 L967.533 1446.71 L965.484 1446.71 L963.434 1446.71 \n",
" L961.385 1446.71 L959.336 1446.71 L957.287 1446.71 L955.238 1446.71 L953.189 1446.71 L951.14 1446.71 L949.09 1446.71 L947.041 1446.71 L944.992 1446.71 L942.943 1446.71 \n",
" L940.894 1446.71 L938.845 1446.71 L936.795 1446.71 L934.746 1446.71 L932.697 1446.71 L930.648 1446.71 L928.599 1446.71 L926.55 1446.71 L924.501 1446.71 L922.451 1446.71 \n",
" L920.402 1446.71 L918.353 1446.71 L916.304 1446.71 L914.255 1446.71 L912.206 1446.71 L910.157 1446.71 L908.107 1446.71 L906.058 1446.71 L904.009 1446.71 L901.96 1446.71 \n",
" L899.911 1446.71 L897.862 1446.71 L895.813 1446.71 L893.763 1446.71 L891.714 1446.71 L889.665 1446.71 L887.616 1446.71 L885.567 1446.71 L883.518 1446.71 L881.469 1446.71 \n",
" L879.419 1446.71 L877.37 1446.71 L875.321 1446.71 L873.272 1446.71 L871.223 1446.71 L869.174 1446.71 L867.124 1446.71 L865.075 1446.71 L863.026 1446.71 L860.977 1446.71 \n",
" L858.928 1446.71 L856.879 1446.71 L854.83 1446.71 L852.78 1446.71 L850.731 1446.71 L848.682 1446.71 L846.633 1446.71 L844.584 1446.71 L842.535 1446.71 L840.486 1446.71 \n",
" L838.436 1446.71 L836.387 1446.71 L834.338 1446.71 L832.289 1446.71 L830.24 1446.71 L828.191 1446.71 L826.142 1446.71 L824.092 1446.71 L822.043 1446.71 L819.994 1446.71 \n",
" L817.945 1446.71 L815.896 1446.71 L813.847 1446.71 L811.798 1446.71 L809.748 1446.71 L807.699 1446.71 L805.65 1446.71 L803.601 1446.71 L801.552 1446.71 L799.503 1446.71 \n",
" L797.453 1446.71 L795.404 1446.71 L793.355 1446.71 L791.306 1446.71 L789.257 1446.71 L787.208 1446.71 L785.159 1446.71 L783.109 1446.71 L781.06 1446.71 L779.011 1446.71 \n",
" L776.962 1446.71 L774.913 1446.71 L772.864 1446.71 L770.815 1446.71 L768.765 1446.71 L766.716 1446.71 L764.667 1446.71 L762.618 1446.71 L760.569 1446.71 L758.52 1446.71 \n",
" L756.471 1446.71 L754.421 1446.71 L752.372 1446.71 L750.323 1446.71 L748.274 1446.71 L746.225 1446.71 L744.176 1446.71 L742.127 1446.71 L740.077 1446.71 L738.028 1446.71 \n",
" L735.979 1446.71 L733.93 1446.71 L731.881 1446.71 L729.832 1446.71 L727.783 1446.71 L725.733 1446.71 L723.684 1446.71 L721.635 1446.71 L719.586 1446.71 L717.537 1446.71 \n",
" L715.488 1446.71 L713.438 1446.71 L711.389 1446.71 L709.34 1446.71 L707.291 1446.71 L705.242 1446.71 L703.193 1446.71 L701.144 1446.71 L699.094 1446.71 L697.045 1446.71 \n",
" L694.996 1446.71 L692.947 1446.71 L690.898 1446.71 L688.849 1446.71 L686.8 1446.71 L684.75 1446.71 L682.701 1446.71 L680.652 1446.71 L678.603 1446.71 L676.554 1446.71 \n",
" L674.505 1446.71 L672.456 1446.71 L670.406 1446.71 L668.357 1446.71 L666.308 1446.71 L664.259 1446.71 L662.21 1446.71 L660.161 1446.71 L658.112 1446.71 L656.062 1446.71 \n",
" L654.013 1446.71 L651.964 1446.71 L649.915 1446.71 L647.866 1446.71 L645.817 1446.71 L643.767 1446.71 L641.718 1446.71 L639.669 1446.71 L637.62 1446.71 L635.571 1446.71 \n",
" L633.522 1446.71 L631.473 1446.71 L629.423 1446.71 L627.374 1446.71 L625.325 1446.71 L623.276 1446.71 L621.227 1446.71 L619.178 1446.71 L617.129 1446.71 L615.079 1446.71 \n",
" L613.03 1446.71 L610.981 1446.71 L608.932 1446.71 L606.883 1446.71 L604.834 1446.71 L602.785 1446.71 L600.735 1446.71 L598.686 1446.71 L596.637 1446.71 L594.588 1446.71 \n",
" L592.539 1446.71 L590.49 1446.71 L588.441 1446.71 L586.391 1446.71 L584.342 1446.71 L582.293 1446.71 L580.244 1446.71 L578.195 1446.71 L576.146 1446.71 L574.096 1446.71 \n",
" L572.047 1446.71 L569.998 1446.71 L567.949 1446.71 L565.9 1446.71 L563.851 1446.71 L561.802 1446.71 L559.752 1446.71 L557.703 1446.71 L555.654 1446.71 L553.605 1446.71 \n",
" L551.556 1446.71 L549.507 1446.71 L547.458 1446.71 L545.408 1446.71 L543.359 1446.71 L541.31 1446.71 L539.261 1446.71 L537.212 1446.71 L535.163 1446.71 L533.114 1446.71 \n",
" L531.064 1446.71 L529.015 1446.71 L526.966 1446.71 L524.917 1446.71 L522.868 1446.71 L520.819 1446.71 L518.77 1446.71 L516.72 1446.71 L514.671 1446.71 L512.622 1446.71 \n",
" L510.573 1446.71 L508.524 1446.71 L506.475 1446.71 L504.426 1446.71 L502.376 1446.71 L500.327 1446.71 L498.278 1446.71 L496.229 1446.71 L494.18 1446.71 L492.131 1446.71 \n",
" L490.081 1446.71 L488.032 1446.71 L485.983 1446.71 L483.934 1446.71 L481.885 1446.71 L479.836 1446.71 L477.787 1446.71 L475.737 1446.71 L473.688 1446.71 L471.639 1446.71 \n",
" L469.59 1446.71 L467.541 1446.71 L465.492 1446.71 L463.443 1446.71 L461.393 1446.71 L459.344 1446.71 L457.295 1446.71 L455.246 1446.71 L453.197 1446.71 L451.148 1446.71 \n",
" L449.099 1446.71 L447.049 1446.71 L445 1446.71 L442.951 1446.71 L440.902 1446.71 L438.853 1446.71 L436.804 1446.71 L434.755 1446.71 L432.705 1446.71 L430.656 1446.71 \n",
" L428.607 1446.71 L426.558 1446.71 L424.509 1446.71 L422.46 1446.71 L420.41 1446.71 L418.361 1446.71 L416.312 1446.71 L414.263 1446.71 L412.214 1446.71 L410.165 1446.71 \n",
" L408.116 1446.71 L406.066 1446.71 L404.017 1446.71 L401.968 1446.71 L399.919 1446.71 L397.87 1446.71 L395.821 1446.71 L393.772 1446.71 L391.722 1446.71 L389.673 1446.71 \n",
" L387.624 1446.71 L385.575 1446.71 L383.526 1446.71 L381.477 1446.71 L379.428 1446.71 L377.378 1446.71 L375.329 1446.71 L373.28 1446.71 L371.231 1446.71 L369.182 1446.71 \n",
" L367.133 1446.71 L365.084 1446.71 L363.034 1446.71 L360.985 1446.71 L358.936 1446.71 L356.887 1446.71 L354.838 1446.71 L352.789 1446.71 L350.739 1446.71 L348.69 1446.71 \n",
" L346.641 1446.71 L344.592 1446.71 L342.543 1446.71 L340.494 1446.71 L338.445 1446.71 L336.395 1446.71 L334.346 1446.71 L332.297 1446.71 L330.248 1446.71 L328.199 1446.71 \n",
" L326.15 1446.71 L324.101 1446.71 L322.051 1446.71 L320.002 1446.71 L317.953 1446.71 L315.904 1446.71 L313.855 1446.71 L311.806 1446.71 L309.757 1446.71 L307.707 1446.71 \n",
" L305.658 1446.71 L303.609 1446.71 L301.56 1446.71 L299.511 1446.71 L297.462 1446.71 L295.413 1446.71 L293.363 1446.71 L291.314 1446.71 L289.265 1446.71 L287.216 1446.71 \n",
" L285.167 1446.71 L283.118 1446.71 L281.069 1446.71 L279.019 1446.71 L276.97 1446.71 L274.921 1446.71 L272.872 1446.71 L270.823 1446.71 L268.774 1446.71 L266.724 1446.71 \n",
" L264.675 1446.71 L262.626 1446.71 L260.577 1446.71 L258.528 1446.71 L256.479 1446.71 L254.43 1446.71 L252.38 1446.71 L250.331 1446.71 L248.282 1446.71 L246.233 1446.71 \n",
" L244.184 1446.71 L242.135 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip1302)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1357.05 244.184,1355.31 246.233,1353.53 248.282,1351.72 250.331,1349.88 252.38,1348 254.43,1346.08 256.479,1344.14 258.528,1342.15 260.577,1340.13 \n",
" 262.626,1338.07 264.675,1335.97 266.724,1333.84 268.774,1331.66 270.823,1329.45 272.872,1327.19 274.921,1324.9 276.97,1322.56 279.019,1320.18 281.069,1317.76 \n",
" 283.118,1315.29 285.167,1312.78 287.216,1310.23 289.265,1307.62 291.314,1304.98 293.363,1302.28 295.413,1299.54 297.462,1296.74 299.511,1293.9 301.56,1291.01 \n",
" 303.609,1288.07 305.658,1285.08 307.707,1282.03 309.757,1278.93 311.806,1275.78 313.855,1272.57 315.904,1269.31 317.953,1265.99 320.002,1262.61 322.051,1259.18 \n",
" 324.101,1255.69 326.15,1252.14 328.199,1248.53 330.248,1244.85 332.297,1241.12 334.346,1237.33 336.395,1233.47 338.445,1229.54 340.494,1225.56 342.543,1221.51 \n",
" 344.592,1217.39 346.641,1213.2 348.69,1208.95 350.739,1204.63 352.789,1200.24 354.838,1195.78 356.887,1191.25 358.936,1186.65 360.985,1181.97 363.034,1177.23 \n",
" 365.084,1172.41 367.133,1167.51 369.182,1162.54 371.231,1157.5 373.28,1152.38 375.329,1147.18 377.378,1141.9 379.428,1136.55 381.477,1131.12 383.526,1125.61 \n",
" 385.575,1120.02 387.624,1114.35 389.673,1108.6 391.722,1102.76 393.772,1096.85 395.821,1090.85 397.87,1084.77 399.919,1078.61 401.968,1072.37 404.017,1066.04 \n",
" 406.066,1059.63 408.116,1053.13 410.165,1046.55 412.214,1039.89 414.263,1033.14 416.312,1026.31 418.361,1019.39 420.41,1012.38 422.46,1005.3 424.509,998.125 \n",
" 426.558,990.869 428.607,983.529 430.656,976.106 432.705,968.598 434.755,961.008 436.804,953.334 438.853,945.579 440.902,937.741 442.951,929.823 445,921.824 \n",
" 447.049,913.746 449.099,905.588 451.148,897.353 453.197,889.04 455.246,880.652 457.295,872.188 459.344,863.651 461.393,855.042 463.443,846.361 465.492,837.61 \n",
" 467.541,828.792 469.59,819.906 471.639,810.956 473.688,801.942 475.737,792.867 477.787,783.733 479.836,774.542 481.885,765.295 483.934,755.995 485.983,746.644 \n",
" 488.032,737.245 490.081,727.8 492.131,718.313 494.18,708.784 496.229,699.218 498.278,689.617 500.327,679.984 502.376,670.323 504.426,660.636 506.475,650.926 \n",
" 508.524,641.198 510.573,631.454 512.622,621.699 514.671,611.935 516.72,602.167 518.77,592.398 520.819,582.633 522.868,572.875 524.917,563.128 526.966,553.397 \n",
" 529.015,543.687 531.064,534 533.114,524.342 535.163,514.718 537.212,505.131 539.261,495.587 541.31,486.091 543.359,476.646 545.408,467.258 547.458,457.932 \n",
" 549.507,448.673 551.556,439.485 553.605,430.375 555.654,421.346 557.703,412.404 559.752,403.554 561.802,394.801 563.851,386.151 565.9,377.608 567.949,369.178 \n",
" 569.998,360.866 572.047,352.677 574.096,344.617 576.146,336.689 578.195,328.901 580.244,321.256 582.293,313.759 584.342,306.417 586.391,299.233 588.441,292.212 \n",
" 590.49,285.36 592.539,278.681 594.588,272.18 596.637,265.861 598.686,259.729 600.735,253.789 602.785,248.044 604.834,242.499 606.883,237.158 608.932,232.025 \n",
" 610.981,227.103 613.03,222.397 615.079,217.91 617.129,213.645 619.178,209.606 621.227,205.795 623.276,202.217 625.325,198.872 627.374,195.765 629.423,192.897 \n",
" 631.473,190.271 633.522,187.889 635.571,185.752 637.62,183.863 639.669,182.222 641.718,180.832 643.767,179.693 645.817,178.806 647.866,178.172 649.915,177.792 \n",
" 651.964,177.665 654.013,177.792 656.062,178.172 658.112,178.806 660.161,179.693 662.21,180.832 664.259,182.222 666.308,183.863 668.357,185.752 670.406,187.889 \n",
" 672.456,190.271 674.505,192.897 676.554,195.765 678.603,198.872 680.652,202.217 682.701,205.795 684.75,209.606 686.8,213.645 688.849,217.91 690.898,222.397 \n",
" 692.947,227.103 694.996,232.025 697.045,237.158 699.094,242.499 701.144,248.044 703.193,253.789 705.242,259.729 707.291,265.861 709.34,272.18 711.389,278.681 \n",
" 713.438,285.36 715.488,292.212 717.537,299.233 719.586,306.417 721.635,313.759 723.684,321.256 725.733,328.901 727.783,336.689 729.832,344.617 731.881,352.677 \n",
" 733.93,360.866 735.979,369.178 738.028,377.608 740.077,386.151 742.127,394.801 744.176,403.554 746.225,412.404 748.274,421.346 750.323,430.375 752.372,439.485 \n",
" 754.421,448.673 756.471,457.932 758.52,467.258 760.569,476.646 762.618,486.091 764.667,495.587 766.716,505.131 768.765,514.718 770.815,524.342 772.864,534 \n",
" 774.913,543.687 776.962,553.397 779.011,563.128 781.06,572.875 783.109,582.633 785.159,592.398 787.208,602.167 789.257,611.935 791.306,621.699 793.355,631.454 \n",
" 795.404,641.198 797.453,650.926 799.503,660.636 801.552,670.323 803.601,679.984 805.65,689.617 807.699,699.218 809.748,708.784 811.798,718.313 813.847,727.8 \n",
" 815.896,737.245 817.945,746.644 819.994,755.995 822.043,765.295 824.092,774.542 826.142,783.733 828.191,792.867 830.24,801.942 832.289,810.956 834.338,819.906 \n",
" 836.387,828.792 838.436,837.61 840.486,846.361 842.535,855.042 844.584,863.651 846.633,872.188 848.682,880.652 850.731,889.04 852.78,897.353 854.83,905.588 \n",
" 856.879,913.746 858.928,921.824 860.977,929.823 863.026,937.741 865.075,945.579 867.124,953.334 869.174,961.008 871.223,968.598 873.272,976.106 875.321,983.529 \n",
" 877.37,990.869 879.419,998.125 881.469,1005.3 883.518,1012.38 885.567,1019.39 887.616,1026.31 889.665,1033.14 891.714,1039.89 893.763,1046.55 895.813,1053.13 \n",
" 897.862,1059.63 899.911,1066.04 901.96,1072.37 904.009,1078.61 906.058,1084.77 908.107,1090.85 910.157,1096.85 912.206,1102.76 914.255,1108.6 916.304,1114.35 \n",
" 918.353,1120.02 920.402,1125.61 922.451,1131.12 924.501,1136.55 926.55,1141.9 928.599,1147.18 930.648,1152.38 932.697,1157.5 934.746,1162.54 936.795,1167.51 \n",
" 938.845,1172.41 940.894,1177.23 942.943,1181.97 944.992,1186.65 947.041,1191.25 949.09,1195.78 951.14,1200.24 953.189,1204.63 955.238,1208.95 957.287,1213.2 \n",
" 959.336,1217.39 961.385,1221.51 963.434,1225.56 965.484,1229.54 967.533,1233.47 969.582,1237.33 971.631,1241.12 973.68,1244.85 975.729,1248.52 977.778,1252.13 \n",
" 979.828,1255.68 981.877,1259.18 983.926,1262.61 985.975,1265.98 988.024,1269.3 990.073,1272.55 992.122,1275.75 994.172,1278.89 996.221,1281.97 998.27,1284.99 \n",
" 1000.32,1287.95 1002.37,1290.83 1004.42,1293.63 1006.47,1296.34 1008.52,1298.93 1010.56,1301.38 1012.61,1303.64 1014.66,1305.65 1016.71,1307.31 1018.76,1308.48 \n",
" 1020.81,1308.96 1022.86,1308.46 1024.91,1306.57 1026.96,1302.73 1029.01,1296.14 1031.06,1285.75 1033.11,1270.16 1035.15,1247.56 1037.2,1215.77 1039.25,1172.23 \n",
" 1041.3,1114.24 1043.35,1039.25 1045.4,945.519 1047.45,832.843 1049.5,703.511 1051.55,563.092 1053.6,420.784 1055.65,288.924 1057.7,181.434 1059.74,111.348 \n",
" 1061.79,88.0053 1063.84,114.806 1065.89,188.35 1067.94,299.301 1069.99,434.625 1072.04,580.401 1074.09,724.294 1076.14,857.107 1078.19,973.271 1080.24,1070.5 \n",
" 1082.28,1148.99 1084.33,1210.51 1086.38,1257.57 1088.43,1292.91 1090.48,1319.06 1092.53,1338.23 1094.58,1352.21 1096.63,1362.4 1098.68,1369.86 1100.73,1375.39 \n",
" 1102.78,1379.56 1104.83,1382.77 1106.87,1385.31 1108.92,1387.38 1110.97,1389.13 1113.02,1390.66 1115.07,1392.02 1117.12,1393.26 1119.17,1394.43 1121.22,1395.53 \n",
" 1123.27,1396.58 1125.32,1397.59 1127.37,1398.57 1129.42,1399.52 1131.46,1400.45 1133.51,1401.36 1135.56,1402.24 1137.61,1403.11 1139.66,1403.96 1141.71,1404.8 \n",
" 1143.76,1405.61 1145.81,1406.42 1147.86,1407.2 1149.91,1407.97 1151.96,1408.73 1154.01,1409.47 1156.05,1410.2 1158.1,1410.91 1160.15,1411.61 1162.2,1412.29 \n",
" 1164.25,1412.97 1166.3,1413.63 1168.35,1414.27 1170.4,1414.91 1172.45,1415.53 1174.5,1416.14 1176.55,1416.74 1178.59,1417.32 1180.64,1417.9 1182.69,1418.46 \n",
" 1184.74,1419.02 1186.79,1419.56 1188.84,1420.09 1190.89,1420.61 1192.94,1421.12 1194.99,1421.63 1197.04,1422.12 1199.09,1422.6 1201.14,1423.07 1203.18,1423.54 \n",
" 1205.23,1423.99 1207.28,1424.44 1209.33,1424.88 1211.38,1425.3 1213.43,1425.72 1215.48,1426.14 1217.53,1426.54 1219.58,1426.94 1221.63,1427.33 1223.68,1427.71 \n",
" 1225.73,1428.08 1227.77,1428.45 1229.82,1428.81 1231.87,1429.16 1233.92,1429.5 1235.97,1429.84 1238.02,1430.17 1240.07,1430.5 1242.12,1430.82 1244.17,1431.13 \n",
" 1246.22,1431.44 1248.27,1431.74 1250.31,1432.03 1252.36,1432.32 1254.41,1432.61 1256.46,1432.88 1258.51,1433.16 1260.56,1433.42 1262.61,1433.68 1264.66,1433.94 \n",
" 1266.71,1434.19 1268.76,1434.44 1270.81,1434.68 1272.86,1434.92 1274.9,1435.15 1276.95,1435.38 1279,1435.6 1281.05,1435.82 1283.1,1436.04 1285.15,1436.25 \n",
" 1287.2,1436.45 1289.25,1436.66 1291.3,1436.85 1293.35,1437.05 1295.4,1437.24 1297.45,1437.43 1299.49,1437.61 1301.54,1437.79 1303.59,1437.97 1305.64,1438.14 \n",
" 1307.69,1438.31 1309.74,1438.47 1311.79,1438.64 1313.84,1438.8 1315.89,1438.95 1317.94,1439.1 1319.99,1439.25 1322.04,1439.4 1324.08,1439.55 1326.13,1439.69 \n",
" 1328.18,1439.83 1330.23,1439.96 1332.28,1440.1 1334.33,1440.23 1336.38,1440.35 1338.43,1440.48 1340.48,1440.6 1342.53,1440.72 1344.58,1440.84 1346.62,1440.96 \n",
" 1348.67,1441.07 1350.72,1441.18 1352.77,1441.29 1354.82,1441.4 1356.87,1441.51 1358.92,1441.61 1360.97,1441.71 1363.02,1441.81 1365.07,1441.9 1367.12,1442 \n",
" 1369.17,1442.09 1371.21,1442.18 1373.26,1442.27 1375.31,1442.36 1377.36,1442.45 1379.41,1442.53 1381.46,1442.61 1383.51,1442.7 1385.56,1442.78 1387.61,1442.85 \n",
" 1389.66,1442.93 1391.71,1443 1393.76,1443.08 1395.8,1443.15 1397.85,1443.22 1399.9,1443.29 1401.95,1443.36 1404,1443.42 1406.05,1443.49 1408.1,1443.55 \n",
" 1410.15,1443.61 1412.2,1443.68 1414.25,1443.74 1416.3,1443.79 1418.34,1443.85 1420.39,1443.91 1422.44,1443.96 1424.49,1444.02 1426.54,1444.07 1428.59,1444.12 \n",
" 1430.64,1444.18 1432.69,1444.23 1434.74,1444.28 1436.79,1444.32 1438.84,1444.37 1440.89,1444.42 1442.93,1444.46 1444.98,1444.51 1447.03,1444.55 1449.08,1444.59 \n",
" 1451.13,1444.64 1453.18,1444.68 1455.23,1444.72 1457.28,1444.76 1459.33,1444.79 1461.38,1444.83 1463.43,1444.87 1465.48,1444.91 1467.52,1444.49 1469.57,1350.97 \n",
" 1471.62,175.963 1473.67,1351.04 1475.72,1444.63 1477.77,1445.11 1479.82,1445.14 1481.87,1445.17 1483.92,1445.2 1485.97,1445.23 1488.02,1445.26 1490.07,1445.29 \n",
" 1492.11,1445.32 1494.16,1445.35 1496.21,1445.37 1498.26,1445.4 1500.31,1445.43 1502.36,1445.45 1504.41,1445.48 1506.46,1445.5 1508.51,1445.53 1510.56,1445.55 \n",
" 1512.61,1445.57 1514.65,1445.6 1516.7,1445.62 1518.75,1445.64 1520.8,1445.66 1522.85,1445.68 1524.9,1445.7 1526.95,1445.72 1529,1445.74 1531.05,1445.76 \n",
" 1533.1,1445.78 1535.15,1445.8 1537.2,1445.82 1539.24,1445.83 1541.29,1445.85 1543.34,1445.87 1545.39,1445.88 1547.44,1445.9 1549.49,1445.92 1551.54,1445.93 \n",
" 1553.59,1445.95 1555.64,1445.96 1557.69,1445.98 1559.74,1445.99 1561.79,1446.01 1563.83,1446.02 1565.88,1446.04 1567.93,1446.05 1569.98,1446.06 1572.03,1446.07 \n",
" 1574.08,1446.09 1576.13,1446.1 1578.18,1446.11 1580.23,1446.12 1582.28,1446.14 1584.33,1446.15 1586.38,1446.16 1588.42,1446.17 1590.47,1446.18 1592.52,1446.19 \n",
" 1594.57,1446.2 1596.62,1446.21 1598.67,1446.22 1600.72,1446.23 1602.77,1446.24 1604.82,1446.25 1606.87,1446.26 1608.92,1446.27 1610.96,1446.28 1613.01,1446.29 \n",
" 1615.06,1446.29 1617.11,1446.3 1619.16,1446.31 1621.21,1446.32 1623.26,1446.33 1625.31,1446.33 1627.36,1446.34 1629.41,1446.35 1631.46,1446.36 1633.51,1446.36 \n",
" 1635.55,1446.37 1637.6,1446.38 1639.65,1446.38 1641.7,1446.39 1643.75,1446.4 1645.8,1446.4 1647.85,1446.41 1649.9,1446.41 1651.95,1446.42 1654,1446.43 \n",
" 1656.05,1446.43 1658.1,1446.44 1660.14,1446.44 1662.19,1446.45 1664.24,1446.45 1666.29,1446.46 1668.34,1446.46 1670.39,1446.47 1672.44,1446.47 1674.49,1446.48 \n",
" 1676.54,1446.48 1678.59,1446.49 1680.64,1446.49 1682.68,1446.5 1684.73,1446.5 1686.78,1446.5 1688.83,1446.51 1690.88,1446.51 1692.93,1446.52 1694.98,1446.52 \n",
" 1697.03,1446.52 1699.08,1446.53 1701.13,1446.53 1703.18,1446.54 1705.23,1446.54 1707.27,1446.54 1709.32,1446.55 1711.37,1446.55 1713.42,1446.55 1715.47,1446.56 \n",
" 1717.52,1446.56 1719.57,1446.56 1721.62,1446.57 1723.67,1446.57 1725.72,1446.57 1727.77,1446.57 1729.82,1446.58 1731.86,1446.58 1733.91,1446.58 1735.96,1446.58 \n",
" 1738.01,1446.59 1740.06,1446.59 1742.11,1446.59 1744.16,1446.59 1746.21,1446.6 1748.26,1446.6 1750.31,1446.6 1752.36,1446.6 1754.41,1446.61 1756.45,1446.61 \n",
" 1758.5,1446.61 1760.55,1446.61 1762.6,1446.61 1764.65,1446.62 1766.7,1446.62 1768.75,1446.62 1770.8,1446.62 1772.85,1446.62 1774.9,1446.63 1776.95,1446.63 \n",
" 1778.99,1446.63 1781.04,1446.63 1783.09,1446.63 1785.14,1446.63 1787.19,1446.64 1789.24,1446.64 1791.29,1446.64 1793.34,1446.64 1795.39,1446.64 1797.44,1446.64 \n",
" 1799.49,1446.64 1801.54,1446.65 1803.58,1446.65 1805.63,1446.65 1807.68,1446.65 1809.73,1446.65 1811.78,1446.65 1813.83,1446.65 1815.88,1446.65 1817.93,1446.66 \n",
" 1819.98,1446.66 1822.03,1446.66 1824.08,1446.66 1826.13,1446.66 1828.17,1446.66 1830.22,1446.66 1832.27,1446.66 1834.32,1446.66 1836.37,1446.67 1838.42,1446.67 \n",
" 1840.47,1446.67 1842.52,1446.67 1844.57,1446.67 1846.62,1446.67 1848.67,1446.67 1850.71,1446.67 1852.76,1446.67 1854.81,1446.67 1856.86,1446.67 1858.91,1446.67 \n",
" 1860.96,1446.68 1863.01,1446.68 1865.06,1446.68 1867.11,1446.68 1869.16,1446.68 1871.21,1446.68 1873.26,1446.68 1875.3,1446.68 1877.35,1446.68 1879.4,1446.68 \n",
" 1881.45,1446.68 1883.5,1446.68 1885.55,1446.68 1887.6,1446.68 1889.65,1446.68 1891.7,1446.69 1893.75,1446.69 1895.8,1446.69 1897.85,1446.69 1899.89,1446.69 \n",
" 1901.94,1446.69 1903.99,1446.69 1906.04,1446.69 1908.09,1446.69 1910.14,1446.69 1912.19,1446.69 1914.24,1446.69 1916.29,1446.69 1918.34,1446.69 1920.39,1446.69 \n",
" 1922.44,1446.69 1924.48,1446.69 1926.53,1446.69 1928.58,1446.69 1930.63,1446.69 1932.68,1446.69 1934.73,1446.69 1936.78,1446.7 1938.83,1446.7 1940.88,1446.7 \n",
" 1942.93,1446.7 1944.98,1446.7 1947.02,1446.7 1949.07,1446.7 1951.12,1446.7 1953.17,1446.7 1955.22,1446.7 1957.27,1446.7 1959.32,1446.7 1961.37,1446.7 \n",
" 1963.42,1446.7 1965.47,1446.7 1967.52,1446.7 1969.57,1446.7 1971.61,1446.7 1973.66,1446.7 1975.71,1446.7 1977.76,1446.7 1979.81,1446.7 1981.86,1446.7 \n",
" 1983.91,1446.7 1985.96,1446.7 1988.01,1446.7 1990.06,1446.7 1992.11,1446.7 1994.16,1446.7 1996.2,1446.7 1998.25,1446.7 2000.3,1446.7 2002.35,1446.7 \n",
" 2004.4,1446.7 2006.45,1446.7 2008.5,1446.7 2010.55,1446.7 2012.6,1446.7 2014.65,1446.7 2016.7,1446.71 2018.74,1446.71 2020.79,1446.71 2022.84,1446.71 \n",
" 2024.89,1446.71 2026.94,1446.71 2028.99,1446.71 2031.04,1446.71 2033.09,1446.71 2035.14,1446.71 2037.19,1446.71 2039.24,1446.71 2041.29,1446.71 2043.33,1446.71 \n",
" 2045.38,1446.71 2047.43,1446.71 2049.48,1446.71 2051.53,1446.71 2053.58,1446.71 2055.63,1446.71 2057.68,1446.71 2059.73,1446.71 2061.78,1446.71 2063.83,1446.71 \n",
" 2065.88,1446.71 2067.92,1446.71 2069.97,1446.71 2072.02,1446.71 2074.07,1446.71 2076.12,1446.71 2078.17,1446.71 2080.22,1446.71 2082.27,1446.71 2084.32,1446.71 \n",
" 2086.37,1446.71 2088.42,1446.71 2090.47,1446.71 2092.51,1446.71 2094.56,1446.71 2096.61,1446.71 2098.66,1446.71 2100.71,1446.71 2102.76,1446.71 2104.81,1446.71 \n",
" 2106.86,1446.71 2108.91,1446.71 2110.96,1446.71 2113.01,1446.71 2115.05,1446.71 2117.1,1446.71 2119.15,1446.71 2121.2,1446.71 2123.25,1446.71 2125.3,1446.71 \n",
" 2127.35,1446.71 2129.4,1446.71 2131.45,1446.71 2133.5,1446.71 2135.55,1446.71 2137.6,1446.71 2139.64,1446.71 2141.69,1446.71 2143.74,1446.71 2145.79,1446.71 \n",
" 2147.84,1446.71 2149.89,1446.71 2151.94,1446.71 2153.99,1446.71 2156.04,1446.71 2158.09,1446.71 2160.14,1446.71 2162.19,1446.71 2164.23,1446.71 2166.28,1446.71 \n",
" 2168.33,1446.71 2170.38,1446.71 2172.43,1446.71 2174.48,1446.71 2176.53,1446.71 2178.58,1446.71 2180.63,1446.71 2182.68,1446.71 2184.73,1446.71 2186.78,1446.71 \n",
" 2188.82,1446.71 2190.87,1446.71 2192.92,1446.71 2194.97,1446.71 2197.02,1446.71 2199.07,1446.71 2201.12,1446.71 2203.17,1446.71 2205.22,1446.71 2207.27,1446.71 \n",
" 2209.32,1446.71 2211.36,1446.71 2213.41,1446.71 2215.46,1446.71 2217.51,1446.71 2219.56,1446.71 2221.61,1446.71 2223.66,1446.71 2225.71,1446.71 2227.76,1446.71 \n",
" 2229.81,1446.71 2231.86,1446.71 2233.91,1446.71 2235.95,1446.71 2238,1446.71 2240.05,1446.71 2242.1,1446.71 2244.15,1446.71 2246.2,1446.71 2248.25,1446.71 \n",
" 2250.3,1446.71 2252.35,1446.71 2254.4,1446.71 2256.45,1446.71 2258.5,1446.71 2260.54,1446.71 2262.59,1446.71 2264.64,1446.71 2266.69,1446.71 2268.74,1446.71 \n",
" 2270.79,1446.71 2272.84,1446.71 2274.89,1446.71 2276.94,1446.71 2278.99,1446.71 2281.04,1446.71 2283.08,1446.71 2285.13,1446.71 2287.18,1446.71 2289.23,1446.71 \n",
" 2291.28,1446.71 \n",
" \"/>\n",
"</svg>\n"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = 1/cosh((10x-2))^2+1/cosh((100x-40))^4+1/cosh((1000x-600))^6\n",
" @printeval quadde(f, 0.0, 1.0)\n",
" @printeval quadgk(f, 0.0, 1.0)\n",
" x = 0.0:0.001:1.0\n",
" plot(x, f.(x), label=\"\", xlim=[0.0, 1.0], xticks=0.0:0.2:1.0,\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"これらの問題に対する万能の解決策というものはないのですが、例えば積分区間を分割することで改善することがあります。以下の例では積分区間を分割し、`quadgk` では積分値の精度を、`quadde` では評価回数を改善しています。"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 0.3, 0.5, 0.7, 1.0): Evaluation=6976 I=2.108027355006400e-01 E=1.6566e-12\n",
"quadgk(f, 0.0, 0.3, 0.5, 0.7, 1.0): Evaluation=690 I=2.108027355005494e-01 E=1.9724e-09\n"
]
}
],
"source": [
"let f(x) = 1/cosh((10x-2))^2+1/cosh((100x-40))^4+1/cosh((1000x-600))^6\n",
" @printeval quadde(f, 0.0, 0.3, 0.5, 0.7, 1.0)\n",
" @printeval quadgk(f, 0.0, 0.3, 0.5, 0.7, 1.0)\n",
"end\n",
";"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 積分区間の一部で急激に変化する関数(2)\n",
"\n",
"次は $x=0$ 付近で急激に変化する関数です。\n",
"\n",
"$$\n",
"\\int_{0}^{\\infty} \\left( K_0(x) \\right)^2 dx = \\frac{\\pi^2}{4} = 2.46740110027233\\dots\n",
"$$\n",
"\n",
"`quadgk` は評価回数は多いものの、7桁目まで一致、9桁目を四捨五入すると8桁目まで正答しています。対して、`quadde` は評価回数は少ないものの、 4桁まで一致と `x = 0` 付近の急な変化を見落としているようです。"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, Inf): Evaluation=47 I=2.467369673162837e+00 E=1.9604e-08\n",
"quadgk(f, 0.0, Inf): Evaluation=765 I=2.467401095296906e+00 E=2.7633e-08\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip1700\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1700)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1701\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1700)\" d=\"\n",
"M140.517 1487.47 L2352.76 1487.47 L2352.76 47.2441 L140.517 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1702\">\n",
" <rect x=\"140\" y=\"47\" width=\"2213\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 203.127,1487.47 203.127,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 724.882,1487.47 724.882,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1246.64,1487.47 1246.64,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1768.39,1487.47 1768.39,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2290.15,1487.47 2290.15,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,1103.93 2352.76,1103.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,761.151 2352.76,761.151 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,418.37 2352.76,418.37 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,75.5889 2352.76,75.5889 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1487.47 140.517,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 203.127,1487.47 203.127,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 724.882,1487.47 724.882,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1246.64,1487.47 1246.64,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1768.39,1487.47 1768.39,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2290.15,1487.47 2290.15,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1446.71 167.064,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1103.93 167.064,1103.93 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,761.151 167.064,761.151 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,418.37 167.064,418.37 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,75.5889 167.064,75.5889 \n",
" \"/>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 203.127, 1541.47)\" x=\"203.127\" y=\"1541.47\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 724.882, 1541.47)\" x=\"724.882\" y=\"1541.47\">0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1246.64, 1541.47)\" x=\"1246.64\" y=\"1541.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1768.39, 1541.47)\" x=\"1768.39\" y=\"1541.47\">1.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2290.15, 1541.47)\" x=\"2290.15\" y=\"1541.47\">2.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 1464.21)\" x=\"116.517\" y=\"1464.21\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 1121.43)\" x=\"116.517\" y=\"1121.43\">20</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 778.651)\" x=\"116.517\" y=\"778.651\">40</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 435.87)\" x=\"116.517\" y=\"435.87\">60</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 93.0889)\" x=\"116.517\" y=\"93.0889\">80</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip1702)\" d=\"\n",
"M203.287 88.0053 L203.446 291.32 L203.605 402.617 L203.764 478.166 L203.923 534.813 L204.083 579.829 L204.242 617.001 L204.401 648.543 L204.72 699.887 L205.038 740.571 \n",
" L205.357 774.081 L205.675 802.449 L206.312 848.491 L206.949 884.843 L207.586 914.688 L208.223 939.883 L209.497 980.621 L210.77 1012.64 L212.044 1038.82 L213.318 1060.84 \n",
" L214.592 1079.75 L215.866 1096.27 L217.14 1110.88 L218.413 1123.95 L219.687 1135.74 L220.961 1146.46 L222.235 1156.27 L223.509 1165.29 L229.398 1199.41 L235.287 1225.01 \n",
" L241.177 1245.21 L247.066 1261.72 L258.844 1287.39 L270.623 1306.69 L282.401 1321.89 L294.18 1334.25 L305.958 1344.55 L317.737 1353.28 L341.294 1367.37 L364.851 1378.27 \n",
" L388.408 1386.98 L411.965 1394.1 L440.278 1401.11 L468.592 1406.84 L496.905 1411.62 L525.219 1415.64 L573.096 1421.15 L620.974 1425.46 L724.99 1432.07 L820.884 1436.07 \n",
" L923.693 1439.01 L1042.81 1441.31 L1148.66 1442.73 L1241.49 1443.63 L1342.69 1444.37 L1444.5 1444.92 L1557.05 1445.38 L1664.15 1445.7 L1775.51 1445.94 L1869.25 1446.1 \n",
" L1983.69 1446.25 L2091.27 1446.36 L2263.62 1446.48 L2290.15 1446.49 L2290.15 1446.71 L2263.62 1446.71 L2091.27 1446.71 L1983.69 1446.71 L1869.25 1446.71 L1775.51 1446.71 \n",
" L1664.15 1446.71 L1557.05 1446.71 L1444.5 1446.71 L1342.69 1446.71 L1241.49 1446.71 L1148.66 1446.71 L1042.81 1446.71 L923.693 1446.71 L820.884 1446.71 L724.99 1446.71 \n",
" L620.974 1446.71 L573.096 1446.71 L525.219 1446.71 L496.905 1446.71 L468.592 1446.71 L440.278 1446.71 L411.965 1446.71 L388.408 1446.71 L364.851 1446.71 L341.294 1446.71 \n",
" L317.737 1446.71 L305.958 1446.71 L294.18 1446.71 L282.401 1446.71 L270.623 1446.71 L258.844 1446.71 L247.066 1446.71 L241.177 1446.71 L235.287 1446.71 L229.398 1446.71 \n",
" L223.509 1446.71 L222.235 1446.71 L220.961 1446.71 L219.687 1446.71 L218.413 1446.71 L217.14 1446.71 L215.866 1446.71 L214.592 1446.71 L213.318 1446.71 L212.044 1446.71 \n",
" L210.77 1446.71 L209.497 1446.71 L208.223 1446.71 L207.586 1446.71 L206.949 1446.71 L206.312 1446.71 L205.675 1446.71 L205.357 1446.71 L205.038 1446.71 L204.72 1446.71 \n",
" L204.401 1446.71 L204.242 1446.71 L204.083 1446.71 L203.923 1446.71 L203.764 1446.71 L203.605 1446.71 L203.446 1446.71 L203.287 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip1702)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 203.287,88.0053 203.446,291.32 203.605,402.617 203.764,478.166 203.923,534.813 204.083,579.829 204.242,617.001 204.401,648.543 204.72,699.887 205.038,740.571 \n",
" 205.357,774.081 205.675,802.449 206.312,848.491 206.949,884.843 207.586,914.688 208.223,939.883 209.497,980.621 210.77,1012.64 212.044,1038.82 213.318,1060.84 \n",
" 214.592,1079.75 215.866,1096.27 217.14,1110.88 218.413,1123.95 219.687,1135.74 220.961,1146.46 222.235,1156.27 223.509,1165.29 229.398,1199.41 235.287,1225.01 \n",
" 241.177,1245.21 247.066,1261.72 258.844,1287.39 270.623,1306.69 282.401,1321.89 294.18,1334.25 305.958,1344.55 317.737,1353.28 341.294,1367.37 364.851,1378.27 \n",
" 388.408,1386.98 411.965,1394.1 440.278,1401.11 468.592,1406.84 496.905,1411.62 525.219,1415.64 573.096,1421.15 620.974,1425.46 724.99,1432.07 820.884,1436.07 \n",
" 923.693,1439.01 1042.81,1441.31 1148.66,1442.73 1241.49,1443.63 1342.69,1444.37 1444.5,1444.92 1557.05,1445.38 1664.15,1445.7 1775.51,1445.94 1869.25,1446.1 \n",
" 1983.69,1446.25 2091.27,1446.36 2263.62,1446.48 2290.15,1446.49 \n",
" \"/>\n",
"<path clip-path=\"url(#clip1700)\" d=\"\n",
"M1866.76 251.724 L2280.76 251.724 L2280.76 130.764 L1866.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1866.76,251.724 2280.76,251.724 2280.76,130.764 1866.76,130.764 1866.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip1700)\" d=\"\n",
"M1890.76 215.436 L2034.76 215.436 L2034.76 167.052 L1890.76 167.052 L1890.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip1700)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1890.76,167.052 2034.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip1700)\">\n",
"<image width=\"174\" height=\"58\" xlink:href=\"data:image/png;base64,\n",
"iVBORw0KGgoAAAANSUhEUgAAAK4AAAA6CAYAAAAp+2K7AAAJ5ElEQVR4nO1d/5WiMBAetgLYEkIH\n",
"0RLQCuBKYK8C1hLQClhL4KxAKQG3ArEEsIO5P+6GjSzIjyQLvsf33veeK3HIjsNkMklGAxFhxoyx\n",
"kWUZ7nY7SJIErtcrmKYJy+USGGPgui6sVitDbP8yVkdnzCBst1tcLpeQ5zmEYQhpmsJ+vwfTNGG/\n",
"38N6vYbFYoFZln15WUScOXM0hmGIpmlimqZYdz2KIgQABAA0TRMvlwsi4my4M8djmqYIAI1GSwyC\n",
"oDRex3EQEedQYcZ42O/3wBiDPM8ftttsNuXrJEngfD7jbLgzRkOapnC9XmG9XsPpdGrMEliWZXDO\n",
"y7+TJJk97ozxcLvdytefn58P2zLGytfX63U23BnjIQxDME0TOOfg+/7DtqKRM8bAQJzzuDOmD8uy\n",
"kIz3eDzOHnfG9HE6nUqjZYzBarUyZsOdMXmIWYUoigCgx8qZ53n48fExxxUDMAXdZVmG31afRpTT\n",
"Fe/v70gTtyiKvpZ+25LEeZ4j57xM/M7szqnprm2V6qfltDGO43LhIYqiu3u1Kp4xhoyxSSj+mThV\n",
"3fm+jwBQLp2OLaeJx+OxXOY9Ho/f7vHww47joGmamOf5oM6J68zUCdM0yy+UMVa+J7brIlv8TFUu\n",
"XXNddzSjkdWdTnLOkTEm3TdVcqoko2WMNT4YjR+m9eE4jgd36nK5YBiGGIYhBkGAnPM7AyWj830f\n",
"gyDAMAw73y8MQ2SMfZMH/9ezgyDQPpTp1J1OXi6Xu3X/seWIJKNtkyn14b6kTRWi0co8rdRPklWN\n",
"g8agLt2pJo2GYRhK9VOVHMSvmNb3/UZZ5ORqL5InUx2/VEOHRx3sQsdxEAAwCILJGIku3ensq+xQ\n",
"r0IOGW2b8+GcYxzHzcYla1R1dF33znBlhlLHcZAxNlo4UEedutNBMhbZuYCsnDiOO2UpKDRJ0/T+\n",
"Qp7n5cRGh8eoTsKGPKGXywUZY5MzDt2600Xqc93M/SfkkNGbpomc80aK8xnESoxLkwod8Rk9LcQh\n",
"aaIoitA0zUlOenTq7hn6PURONXTsQrKbO0H01OgwDNn41vf9h+mRsalTdzqZ57nUCCgjpzoCdyE9\n",
"GKUQcYauQ0FD49vL5YKc81Fzsm3UrTvdpGFYdpKrSk4Xli/IsHQNdUPiWwraVaRadFK37nSThnnT\n",
"NKX6r0pOF369+G9QOoxkSHwbBMGPrIcrUaJG3f0ExRFDRt+q5HThCwDA+XxG+A/HcUA1kiS5+/vR\n",
"PYqiwMVigVQYYrFYGI2NJwDVusuyDD3PQ9u20TAMtG0b39/fsSgKrLbdbre4WCzKdm9vb4N2bYnF\n",
"Nqrf1RhyOgHx3/IpTCC+PR6P5Z6Dsb1QV6rUHcmi5eo8z5HeEyemtOvMdd2y3fF4RM75Xe2BPqT4\n",
"VHYuoUpOGwHxawVKV2zSJb4VDaCpzRSpSne+7zcaHe3E4pwj3bNqGNRmqNGQc5H9P1TJaSMgfj0l\n",
"Y+Rv8zxH+vJFTmkZ9xFV6I6S8E2eUtyX6rruNx2K14f2RSy6IeM0VMlp4wvAv+O+AACmaSoPRR7F\n",
"t+fzGZfLJXDOIY7ju3b7/V55X3RAhe5834c4jsG27dp4XjyafTgcIAiC2j4QhsTar6+vjfLGkNMK\n",
"0SP+5P6EulWwakgxhd1ej6hCd0EQtMb0VY9avU6b1mX6Id5DZhFFlZw2vojn1X/C43LOwfM83O12\n",
"kKYpeJ5XehnxUBwAwG63U96fj48PXK1WaNs2WpaFtm2j53n4qJJKE1Tobr/ff/OgVaRpWr4WK7oQ\n",
"LMsysiwzENH4+PgYlIUR+y/jKVXJacOLWLdJdPMqkGUZil8uAMB6vaZrRnVorBaFuF6vD0vz9MH5\n",
"fEbbtnGz2YDrupBlmVEUhZGmKTDGYL1eg+d5ve4lq7uiKPD19RXe3t4eGptY5UVHuhJA3Xev2oaa\n",
"oNXj1uXygiCAP3/+1H5RlmUZVeNV4XWzLEPHcSDPc0jT9M5QLMsyttutEccxHA4HWK1WnY1XVnfk\n",
"KdvaiR5Xl+GKaCtC99Ny6qC1rkLVcKMoavUu1WEzSRKQPQr9+/dvuN1usNlsGidAnucZnHNIkgTG\n",
"PkouojpqVStzq4L44FVHyTHktOFHDffXr1+tn7Ft26h6FRmvez6fkfrhuu7DttS/aqw9JkQd1sW3\n",
"qqBq5NU9ZyK86HpCqp6CMQaWZXXyFlWvK5MaEz/b5G0JlHa63W6dYuuf8C6i4eoME1TNdXTOmUS8\n",
"iMJVxiRVb9vm7USsVitDzF0C/FuXl+lHVV4dqjVY26BLdyLEfiyXSy33AFD34OkMD0Ro87h9NtbU\n",
"QZXX7bNAIBpiW73WqkwdX1hRFHej1k953C4PuW45bXgRh0+dHrevt6hO4oakxsRJXd9hq0sOUpfu\n",
"CKIOu4RaMjW9qmHdUKiS04YX8QaqEsbV+JZz3jm+FSGbGuvrBcU+djVE1boT0Se+PZ1O+Pn52RrH\n",
"N+HpPK54gy7DYxfIhgkE2dSYjBfsavQyuttut+XqnbivlyDu32gzgt1u12seUYUYUg1xMqrltOEF\n",
"4N6wVJSPlA0TCLZtG9UU0JRSVQDDdXc6nXCz2cDtdoPr9fothheLGQM8NlxK+clkX+jBk42jVclp\n",
"wzfDlfW6RVHg4XC4e09l/vFwOECdd6qDTDqmaw5yqO6qOqoa5mazuZPdNHoURYGO40AYhko8pWzm\n",
"QpWcVtBuGxi4yymO47KoHW2GBrjfW8s5L4vaRVHUuk8zjuPGInlE13UxDMOHZ5vEWmVd96hS+z6n\n",
"MIboTtw4X+0bFfRDfHwQUzwJIbPT6hnPnJUvaDM37bLvQvEsPcBXuU86fiP+LbZrq3ZSV0K0KrOL\n",
"sYj96/J/ie37bMYeqjv6f+I4xjzPMU1TrKsfQQ9wEASY5zlSFcwhjqaOT33KV3xanuXYTBeSkXdR\n",
"puih+5zAGKq7PM+R9uNSH33fbzzaRAZsmiY6jiNdNolIcmVPKauS04W1X/LUN3D3oXgWq62tuAm6\n",
"r1E8q+7EzfAyDkuVnK6822RDedPqxOGZIaaI2mb9tH3QNM3eu7CeVXeUiXAcR2pyp0pOZ4hWLMZ4\n",
"U63RNYRijPioHXnNIUPds+qO/mfZyZQqOV357Q2VQf9UKA5jTUZF/3efCdaz644KEcpmJVTJ6cPa\n",
"N1VVqp4S0zQtMxJiHJrnOVIcrOJ4/jPpbkoVyfuy9s1n+R2DIQzDEKmaOaXYXNdVNkN/Ft3R6CCb\n",
"AVAlpy8bL0z9l2OmzKnrbsq/utOVDy/Sb3U902RjKpyy7qb+O2dd+PCi+OuIzxCzTYlT1R0tIcs+\n",
"UKrkDGWnL2BKv0f7TJya7qjmsKyxqZIjw9ZTvpZlGefz2TBNc1LHtp8BU9JdlmWYJAmkaTp4s7lK\n",
"ObL4C15DZXUETvSGAAAAAElFTkSuQmCC\n",
"\" transform=\"translate(2059, 162)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = besselk(0, x)^2\n",
" @printeval quadde(f, 0.0, Inf)\n",
" @printeval quadgk(f, 0.0, Inf)\n",
" plot(f, label=L\"\\left( K_0(x) \\right)^2\", xlim=[0.0, 2.0],\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"これも、やはり積分区間を区切ることで改善します。もとの積分区間 (0 ~ ∞) よりも狭い範囲 (0 ~ 2) を具体的に指定することで急な変化を見つけることができたようです。"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 2.0, Inf): Evaluation=79 I=2.467401098347747e+00 E=1.7313e-11\n",
"quadgk(f, 0.0, 2.0, Inf): Evaluation=750 I=2.467401093715945e+00 E=3.3688e-08\n"
]
}
],
"source": [
"let f(x) = besselk(0, x)^2\n",
" @printeval quadde(f, 0.0, 2.0, Inf)\n",
" @printeval quadgk(f, 0.0, 2.0, Inf)\n",
"end\n",
";"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 積分区間の一部で急激に変化する関数(3)\n",
"\n",
"最後に積分区間に不連続な点を含む関数です。これは数値積分法にとっては悪夢のような問題といえます。\n",
"\n",
"$$\n",
"\\int_{0}^{1} \\lfloor \\min \\left(\\frac{x}{0.3}, 1\\right) \\rfloor dx\n",
"$$\n",
"\n",
"とにかく、不連続に変化している $x = 0.3$ を発見できるかによって精度が大きく左右されます。この一点を見つけられなければまともな精度は得られません。\n",
"\n",
"`quadgk` は数百程度の評価回数で8桁を一致させています。`quadde` は苦戦しており数万回の評価を経てなお4,5桁程度の一致にとどまります。"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 1.0): Evaluation=25787 I=6.999612521325285e-01 E=2.7833e-07\n",
"quadgk(f, 0.0, 1.0): Evaluation=675 I=7.000000081693309e-01 E=9.2649e-09\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip2100\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip2100)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip2101\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip2100)\" d=\"\n",
"M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip2102\">\n",
" <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 447.049,1487.47 447.049,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 651.964,1487.47 651.964,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 856.879,1487.47 856.879,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1061.79,1487.47 1061.79,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1471.62,1487.47 1471.62,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1676.54,1487.47 1676.54,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1881.45,1487.47 1881.45,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2086.37,1487.47 2086.37,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,1107.04 2352.76,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,767.359 2352.76,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,427.682 2352.76,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 180.66,88.0053 2352.76,88.0053 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1487.47 180.66,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1487.47 242.135,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 447.049,1487.47 447.049,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 651.964,1487.47 651.964,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 856.879,1487.47 856.879,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1061.79,1487.47 1061.79,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1266.71,1487.47 1266.71,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1471.62,1487.47 1471.62,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1676.54,1487.47 1676.54,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1881.45,1487.47 1881.45,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2086.37,1487.47 2086.37,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2291.28,1487.47 2291.28,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1446.71 206.725,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,1107.04 206.725,1107.04 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,767.359 206.725,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,427.682 206.725,427.682 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 180.66,88.0053 206.725,88.0053 \n",
" \"/>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.135, 1541.47)\" x=\"242.135\" y=\"1541.47\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 447.049, 1541.47)\" x=\"447.049\" y=\"1541.47\">0.1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 651.964, 1541.47)\" x=\"651.964\" y=\"1541.47\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 856.879, 1541.47)\" x=\"856.879\" y=\"1541.47\">0.3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1061.79, 1541.47)\" x=\"1061.79\" y=\"1541.47\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1266.71, 1541.47)\" x=\"1266.71\" y=\"1541.47\">0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1471.62, 1541.47)\" x=\"1471.62\" y=\"1541.47\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1676.54, 1541.47)\" x=\"1676.54\" y=\"1541.47\">0.7</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1881.45, 1541.47)\" x=\"1881.45\" y=\"1541.47\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2086.37, 1541.47)\" x=\"2086.37\" y=\"1541.47\">0.9</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2291.28, 1541.47)\" x=\"2291.28\" y=\"1541.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.21)\" x=\"156.66\" y=\"1464.21\">0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1124.54)\" x=\"156.66\" y=\"1124.54\">0.25</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 784.859)\" x=\"156.66\" y=\"784.859\">0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 445.182)\" x=\"156.66\" y=\"445.182\">0.75</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 105.505)\" x=\"156.66\" y=\"105.505\">1.00</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip2102)\" d=\"\n",
"M242.135 1446.71 L262.146 1446.71 L447.182 1446.71 L558.381 1446.71 L652.399 1446.71 L703.463 1446.71 L754.528 1446.71 L778.066 1446.71 L801.605 1446.71 L813.374 1446.71 \n",
" L825.143 1446.71 L831.028 1446.71 L836.913 1446.71 L842.797 1446.71 L848.682 1446.71 L850.259 1446.71 L851.836 1446.71 L853.414 1446.71 L854.991 1446.71 L855.78 1446.71 \n",
" L856.568 1446.71 L857.357 88.0053 L858.145 88.0053 L858.934 88.0053 L859.723 88.0053 L860.511 88.0053 L861.3 88.0053 L864.454 88.0053 L867.609 88.0053 L870.763 88.0053 \n",
" L873.918 88.0053 L886.536 88.0053 L899.154 88.0053 L924.389 88.0053 L949.625 88.0053 L1008.1 88.0053 L1066.58 88.0053 L1170.51 88.0053 L1261.65 88.0053 L1361.02 88.0053 \n",
" L1460.98 88.0053 L1571.49 88.0053 L1676.65 88.0053 L1785.98 88.0053 L1878.02 88.0053 L1990.39 88.0053 L2096.01 88.0053 L2265.24 88.0053 L2291.28 88.0053 L2291.28 1446.71 \n",
" L2265.24 1446.71 L2096.01 1446.71 L1990.39 1446.71 L1878.02 1446.71 L1785.98 1446.71 L1676.65 1446.71 L1571.49 1446.71 L1460.98 1446.71 L1361.02 1446.71 L1261.65 1446.71 \n",
" L1170.51 1446.71 L1066.58 1446.71 L1008.1 1446.71 L949.625 1446.71 L924.389 1446.71 L899.154 1446.71 L886.536 1446.71 L873.918 1446.71 L870.763 1446.71 L867.609 1446.71 \n",
" L864.454 1446.71 L861.3 1446.71 L860.511 1446.71 L859.723 1446.71 L858.934 1446.71 L858.145 1446.71 L857.357 1446.71 L856.568 1446.71 L855.78 1446.71 L854.991 1446.71 \n",
" L853.414 1446.71 L851.836 1446.71 L850.259 1446.71 L848.682 1446.71 L842.797 1446.71 L836.913 1446.71 L831.028 1446.71 L825.143 1446.71 L813.374 1446.71 L801.605 1446.71 \n",
" L778.066 1446.71 L754.528 1446.71 L703.463 1446.71 L652.399 1446.71 L558.381 1446.71 L447.182 1446.71 L262.146 1446.71 L242.135 1446.71 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip2102)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 242.135,1446.71 262.146,1446.71 447.182,1446.71 558.381,1446.71 652.399,1446.71 703.463,1446.71 754.528,1446.71 778.066,1446.71 801.605,1446.71 813.374,1446.71 \n",
" 825.143,1446.71 831.028,1446.71 836.913,1446.71 842.797,1446.71 848.682,1446.71 850.259,1446.71 851.836,1446.71 853.414,1446.71 854.991,1446.71 855.78,1446.71 \n",
" 856.568,1446.71 857.357,88.0053 858.145,88.0053 858.934,88.0053 859.723,88.0053 860.511,88.0053 861.3,88.0053 864.454,88.0053 867.609,88.0053 870.763,88.0053 \n",
" 873.918,88.0053 886.536,88.0053 899.154,88.0053 924.389,88.0053 949.625,88.0053 1008.1,88.0053 1066.58,88.0053 1170.51,88.0053 1261.65,88.0053 1361.02,88.0053 \n",
" 1460.98,88.0053 1571.49,88.0053 1676.65,88.0053 1785.98,88.0053 1878.02,88.0053 1990.39,88.0053 2096.01,88.0053 2265.24,88.0053 2291.28,88.0053 \n",
" \"/>\n",
"<path clip-path=\"url(#clip2100)\" d=\"\n",
"M1756.76 251.724 L2280.76 251.724 L2280.76 130.764 L1756.76 130.764 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1756.76,251.724 2280.76,251.724 2280.76,130.764 1756.76,130.764 1756.76,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip2100)\" d=\"\n",
"M1780.76 215.436 L1924.76 215.436 L1924.76 167.052 L1780.76 167.052 L1780.76 215.436 Z\n",
" \" fill=\"#0000ff\" fill-rule=\"evenodd\" fill-opacity=\"0.1\"/>\n",
"<polyline clip-path=\"url(#clip2100)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1780.76,167.052 1924.76,167.052 \n",
" \"/>\n",
"<g clip-path=\"url(#clip2100)\">\n",
"<image width=\"284\" height=\"87\" xlink:href=\"data:image/png;base64,\n",
"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\n",
"\" transform=\"translate(1949, 148)\"/>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"let f(x) = floor(min(x/3*10, one(x)))\n",
" @printeval quadde(f, 0.0, 1.0)\n",
" @printeval quadgk(f, 0.0, 1.0)\n",
" plot(f, label=L\"\\lfloor \\min \\left(\\frac{x}{0.3}, 1\\right) \\rfloor\", \n",
" xlim=[0.0, 1.0], xticks=0.0:0.1:1.0,\n",
" fillrange=0, fillalpha=0.1, fillcolor=:blue)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$x = 0.3$ で不連続になることが分かっていれば、ここを端点とすることで問題を回避できます。"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"quadde(f, 0.0, 0.3, 1.0): Evaluation=38 I=7.000000000000256e-01 E=3.1603e-10\n",
"quadgk(f, 0.0, 0.3, 1.0): Evaluation=30 I=7.000000000000000e-01 E=0.0000e+00\n"
]
}
],
"source": [
"let f(x) = floor(min(x/3*10, one(x)))\n",
" @printeval quadde(f, 0.0, 0.3, 1.0)\n",
" @printeval quadgk(f, 0.0, 0.3, 1.0)\n",
"end\n",
";"
]
}
],
"metadata": {
"@webio": {
"lastCommId": null,
"lastKernelId": null
},
"kernelspec": {
"display_name": "Julia 1.4.0",
"language": "julia",
"name": "julia-1.4"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.4.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment