Skip to content

Instantly share code, notes, and snippets.

@ohno
Last active October 20, 2021 20:09
Show Gist options
  • Save ohno/1eccdd8d6e04e41683095c2e693a9b1b to your computer and use it in GitHub Desktop.
Save ohno/1eccdd8d6e04e41683095c2e693a9b1b to your computer and use it in GitHub Desktop.
Diffusion Equation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 拡散方程式\n",
"\n",
"拡散方程式の物理的意味, 歴史, 導出, 解について説明する. まず拡散方程式の解を与え, その検算を通して理解を深めるアプローチを取る.\n",
"\n",
"© 2021 Shuhei Ohno\n",
"<br>Source: https://gist.github.com/ohno\n",
"<br>License: https://opensource.org/licenses/MIT"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Julia Version 1.6.2\n",
"Commit 1b93d53fc4 (2021-07-14 15:36 UTC)\n",
"Platform Info:\n",
" OS: Windows (x86_64-w64-mingw32)\n",
" CPU: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz\n",
" WORD_SIZE: 64\n",
" LIBM: libopenlibm\n",
" LLVM: libLLVM-11.0.1 (ORCJIT, haswell)\n"
]
}
],
"source": [
"versioninfo()\n",
"# using Pkg\n",
"# Pkg.add(\"Plots\")\n",
"# Pkg.add(\"Printf\")\n",
"using Plots\n",
"using Printf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 物理的意味\n",
"\n",
"拡散方程式は水にインクを垂らしてインクが拡がっていくような, 拡散現象を記述する方程式である. Brown運動などのミクロな現象からの導出を踏まえると, 溶質粒子間の相互作用が無視できる場合(希薄溶液)においてのみ有効だろうと予想される. また, 粒子の拡がりやすさが場所によって違うような現象, つまり拡散係数$D$が$x$に依存する場合はこの方程式では説明できないので, 導出からやり直す必要がある. 例えば, 水と大根では塩化ナトリウム(のイオン)などの拡散係数が異なるため, 水と大根の境界を含めて味の浸み具合を説明するのは難しい. (なお, 水側では十分速く一様の濃度になるので, 大根の内部だけで拡散方程式を考えれば, 一様濃度のDirichlet境界条件を考えれば概ね説明できる. 余談だが, 一般に拡散係数は温度に依存するので, 温度を上げることで, 早く味が浸み込む. ダシ汁の原液で煮込むのが最速であろう.) また, 粒子が決まった方向に力を受ける場合, 多くは移流拡散方程式という方程式で説明される. 例えば, 川にインクを垂らしたり, 工場の煙が風で流されるような場合である(実際はもっと複雑な流体方程式に従うが). なお, 電気泳動やカラムクロマトグラフィーの場合, 拡散(2階)というよりも移流(1階)と吸着(0階, 非線形)が支配的である(もちろん, 溶液とゲル(カラム)の内部ではそれぞれ溶媒の拡散係数も違うが, 拡散と移流だけは左右対称なGauss分布が平行移動するだけで, カラムクロマトに特有な尾を引くような濃度分布は再現できなかった.).\n",
"\n",
"次の2階線形偏微分方程式を拡散方程式という.\n",
"\n",
"$$\n",
" \\frac{\\partial u(x,t)}{\\partial t} = D\\frac{\\partial^2 u(x,t)}{{\\partial x}^2}\n",
"$$\n",
"\n",
"解$u(x,t)$はある位置$x$, ある時間$t$における粒子の濃度と解釈できる. $D$は拡散係数といい, 拡散係数が大きいほど, 粒子が素早く遠くまで拡がる. Newton力学では独立変数が$t$のみで質点の位置を$x(t)$のように時間の関数として表わしていたが, これは常微分方程式の話である. 位置$x$, 時間$t$はどちらも独立変数で, $x$が$t$に依存したりしない. 拡散方程式のような偏微分方程式では, 2つ以上の独立変数を考え$x,t$, 多変数関数$u(x,t)$を扱う. つまり, 解は次のグラフのように, $x$軸に加えて時間$t$の軸で表される. アニメーションや3Dグラフも有効だが, 初めて見る場合は理解に時間がかかる."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"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=\"clip7500\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip7500)\" 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=\"clip7501\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip7500)\" d=\"\n",
"M215.754 625.619 L752.756 625.619 L752.756 121.675 L215.754 121.675 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7502\">\n",
" <rect x=\"215\" y=\"121\" width=\"538\" height=\"505\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,625.619 215.754,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 305.254,625.619 305.254,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 394.755,625.619 394.755,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 484.255,625.619 484.255,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 573.755,625.619 573.755,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 663.256,625.619 663.256,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 752.756,625.619 752.756,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,625.619 752.756,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,548.089 752.756,548.089 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,470.559 752.756,470.559 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,393.029 752.756,393.029 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,315.5 752.756,315.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,237.97 752.756,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7502)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,237.97 752.756,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,625.619 752.756,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,625.619 215.754,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,625.619 215.754,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 305.254,625.619 305.254,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 394.755,625.619 394.755,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 484.255,625.619 484.255,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 573.755,625.619 573.755,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 663.256,625.619 663.256,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 752.756,625.619 752.756,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,625.619 222.198,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,548.089 222.198,548.089 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,470.559 222.198,470.559 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,393.029 222.198,393.029 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,315.5 222.198,315.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,237.97 222.198,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,237.97 222.198,237.97 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7500)\">\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, 215.754, 679.619)\" x=\"215.754\" y=\"679.619\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 305.254, 679.619)\" x=\"305.254\" y=\"679.619\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 394.755, 679.619)\" x=\"394.755\" y=\"679.619\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 484.255, 679.619)\" x=\"484.255\" y=\"679.619\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 573.755, 679.619)\" x=\"573.755\" y=\"679.619\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 663.256, 679.619)\" x=\"663.256\" y=\"679.619\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 752.756, 679.619)\" x=\"752.756\" y=\"679.619\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 643.119)\" x=\"191.754\" y=\"643.119\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 565.589)\" x=\"191.754\" y=\"565.589\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 488.059)\" x=\"191.754\" y=\"488.059\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 410.529)\" x=\"191.754\" y=\"410.529\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 333)\" x=\"191.754\" y=\"333\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 255.47)\" x=\"191.754\" y=\"255.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 255.47)\" x=\"191.754\" y=\"255.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 484.255, 73.2)\" x=\"484.255\" y=\"73.2\">t = 0.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 484.255, 759.48)\" x=\"484.255\" y=\"759.48\">x</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 89.2861, 373.647)\" x=\"89.2861\" y=\"373.647\">u(x,t)</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip7500)\" d=\"\n",
"M1015.75 625.619 L1552.76 625.619 L1552.76 121.675 L1015.75 121.675 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7503\">\n",
" <rect x=\"1015\" y=\"121\" width=\"538\" height=\"505\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,625.619 1015.75,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1105.25,625.619 1105.25,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1194.75,625.619 1194.75,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1284.25,625.619 1284.25,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1373.76,625.619 1373.76,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1463.26,625.619 1463.26,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1552.76,625.619 1552.76,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,625.619 1552.76,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,548.089 1552.76,548.089 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,470.559 1552.76,470.559 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,393.029 1552.76,393.029 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,315.5 1552.76,315.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,237.97 1552.76,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,237.97 1552.76,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,625.619 1552.76,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,625.619 1015.75,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,625.619 1015.75,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1105.25,625.619 1105.25,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1194.75,625.619 1194.75,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1284.25,625.619 1284.25,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1373.76,625.619 1373.76,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1463.26,625.619 1463.26,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1552.76,625.619 1552.76,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,625.619 1022.2,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,548.089 1022.2,548.089 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,470.559 1022.2,470.559 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,393.029 1022.2,393.029 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,315.5 1022.2,315.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,237.97 1022.2,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,237.97 1022.2,237.97 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1015.75, 679.619)\" x=\"1015.75\" y=\"679.619\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1105.25, 679.619)\" x=\"1105.25\" y=\"679.619\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1194.75, 679.619)\" x=\"1194.75\" y=\"679.619\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1284.25, 679.619)\" x=\"1284.25\" y=\"679.619\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1373.76, 679.619)\" x=\"1373.76\" y=\"679.619\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1463.26, 679.619)\" x=\"1463.26\" y=\"679.619\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1552.76, 679.619)\" x=\"1552.76\" y=\"679.619\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 643.119)\" x=\"991.754\" y=\"643.119\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 565.589)\" x=\"991.754\" y=\"565.589\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 488.059)\" x=\"991.754\" y=\"488.059\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 410.529)\" x=\"991.754\" y=\"410.529\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 333)\" x=\"991.754\" y=\"333\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 255.47)\" x=\"991.754\" y=\"255.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 255.47)\" x=\"991.754\" y=\"255.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1284.25, 73.2)\" x=\"1284.25\" y=\"73.2\">t = 0.10</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1284.25, 759.48)\" x=\"1284.25\" y=\"759.48\">x</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 889.286, 373.647)\" x=\"889.286\" y=\"373.647\">u(x,t)</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip7503)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,625.619 1021,625.619 1069.49,625.619 1098.63,625.619 1123.27,625.619 1150.03,625.612 1174.71,625.346 1187.93,624.125 1201.16,619.049 1204.99,615.932 \n",
" 1208.82,611.596 1212.65,605.687 1216.48,597.803 1220.32,587.505 1224.15,574.344 1227.98,557.889 1231.81,537.778 1235.21,516.635 1238.62,492.345 1242.02,464.982 \n",
" 1245.43,434.784 1252.24,367.73 1259.05,296.715 1262.03,266.317 1265.02,237.454 1268,210.913 1270.99,187.46 1273.97,167.803 1276.96,152.557 1279.94,142.213 \n",
" 1282.93,137.11 1284.56,136.602 1286.18,137.71 1287.81,140.422 1289.44,144.712 1292.69,157.842 1295.95,176.593 1299.21,200.256 1302.46,227.966 1305.72,258.756 \n",
" 1308.97,291.609 1315.52,359.926 1322.07,425.287 1325.34,455.122 1328.62,482.443 1331.89,506.985 1335.17,528.627 1338.79,549.19 1342.41,566.371 1346.03,580.435 \n",
" 1349.65,591.72 1353.27,600.599 1356.89,607.452 1360.51,612.642 1364.13,616.5 1371.02,621.165 1377.91,623.568 1384.79,624.729 1391.68,625.255 1420.34,625.614 \n",
" 1444.46,625.619 1473.9,625.619 1501.58,625.619 1545.93,625.619 1552.76,625.619 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7500)\" d=\"\n",
"M1815.75 625.619 L2352.76 625.619 L2352.76 121.675 L1815.75 121.675 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7504\">\n",
" <rect x=\"1815\" y=\"121\" width=\"538\" height=\"505\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,625.619 1815.75,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1905.25,625.619 1905.25,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1994.75,625.619 1994.75,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2084.25,625.619 2084.25,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2173.76,625.619 2173.76,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2263.26,625.619 2263.26,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2352.76,625.619 2352.76,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,625.619 2352.76,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,548.089 2352.76,548.089 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,470.559 2352.76,470.559 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,393.029 2352.76,393.029 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,315.5 2352.76,315.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,237.97 2352.76,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,237.97 2352.76,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,625.619 2352.76,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,625.619 1815.75,121.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,625.619 1815.75,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1905.25,625.619 1905.25,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1994.75,625.619 1994.75,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2084.25,625.619 2084.25,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2173.76,625.619 2173.76,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2263.26,625.619 2263.26,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2352.76,625.619 2352.76,619.571 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,625.619 1822.2,625.619 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,548.089 1822.2,548.089 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,470.559 1822.2,470.559 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,393.029 1822.2,393.029 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,315.5 1822.2,315.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,237.97 1822.2,237.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,237.97 1822.2,237.97 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1815.75, 679.619)\" x=\"1815.75\" y=\"679.619\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1905.25, 679.619)\" x=\"1905.25\" y=\"679.619\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1994.75, 679.619)\" x=\"1994.75\" y=\"679.619\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2084.25, 679.619)\" x=\"2084.25\" y=\"679.619\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2173.76, 679.619)\" x=\"2173.76\" y=\"679.619\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2263.26, 679.619)\" x=\"2263.26\" y=\"679.619\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2352.76, 679.619)\" x=\"2352.76\" y=\"679.619\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 643.119)\" x=\"1791.75\" y=\"643.119\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 565.589)\" x=\"1791.75\" y=\"565.589\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 488.059)\" x=\"1791.75\" y=\"488.059\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 410.529)\" x=\"1791.75\" y=\"410.529\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 333)\" x=\"1791.75\" y=\"333\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 255.47)\" x=\"1791.75\" y=\"255.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 255.47)\" x=\"1791.75\" y=\"255.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 2084.25, 73.2)\" x=\"2084.25\" y=\"73.2\">t = 0.50</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 2084.25, 759.48)\" x=\"2084.25\" y=\"759.48\">x</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 1689.29, 373.647)\" x=\"1689.29\" y=\"373.647\">u(x,t)</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip7504)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,625.592 1818.38,625.586 1821,625.58 1845.24,625.444 1869.49,624.928 1884.06,624.15 1898.63,622.656 1910.95,620.473 1923.27,617.014 1929.96,614.421 \n",
" 1936.65,611.21 1943.34,607.283 1950.03,602.545 1956.2,597.381 1962.37,591.388 1968.54,584.515 1974.71,576.729 1981.32,567.355 1987.93,556.936 1994.55,545.534 \n",
" 2001.16,533.254 2016.48,502.35 2031.81,470.475 2038.62,456.985 2045.43,444.432 2052.24,433.185 2059.05,423.592 2065.02,416.787 2070.99,411.665 2076.96,408.36 \n",
" 2082.93,406.959 2089.44,407.644 2095.95,410.614 2102.46,415.776 2108.97,422.969 2115.52,432.034 2122.07,442.664 2128.62,454.551 2135.17,467.37 2149.65,497.377 \n",
" 2164.13,526.995 2171.02,540.163 2177.91,552.445 2184.79,563.7 2191.68,573.841 2198.85,583.164 2206.01,591.252 2213.17,598.154 2220.34,603.948 2232.4,611.492 \n",
" 2244.46,616.738 2259.18,620.822 2273.9,623.165 2287.74,624.374 2301.58,625.017 2323.76,625.449 2345.93,625.576 2349.34,625.585 2352.76,625.592 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7500)\" d=\"\n",
"M215.754 1425.62 L752.756 1425.62 L752.756 921.675 L215.754 921.675 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7505\">\n",
" <rect x=\"215\" y=\"921\" width=\"538\" height=\"505\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1425.62 215.754,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 305.254,1425.62 305.254,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 394.755,1425.62 394.755,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 484.255,1425.62 484.255,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 573.755,1425.62 573.755,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 663.256,1425.62 663.256,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 752.756,1425.62 752.756,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1425.62 752.756,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1348.09 752.756,1348.09 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1270.56 752.756,1270.56 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1193.03 752.756,1193.03 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1115.5 752.756,1115.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1037.97 752.756,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 215.754,1037.97 752.756,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1425.62 752.756,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1425.62 215.754,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1425.62 215.754,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 305.254,1425.62 305.254,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 394.755,1425.62 394.755,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 484.255,1425.62 484.255,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 573.755,1425.62 573.755,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 663.256,1425.62 663.256,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 752.756,1425.62 752.756,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1425.62 222.198,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1348.09 222.198,1348.09 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1270.56 222.198,1270.56 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1193.03 222.198,1193.03 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1115.5 222.198,1115.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1037.97 222.198,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1037.97 222.198,1037.97 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7500)\">\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, 215.754, 1479.62)\" x=\"215.754\" y=\"1479.62\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 305.254, 1479.62)\" x=\"305.254\" y=\"1479.62\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 394.755, 1479.62)\" x=\"394.755\" y=\"1479.62\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 484.255, 1479.62)\" x=\"484.255\" y=\"1479.62\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 573.755, 1479.62)\" x=\"573.755\" y=\"1479.62\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 663.256, 1479.62)\" x=\"663.256\" y=\"1479.62\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 752.756, 1479.62)\" x=\"752.756\" y=\"1479.62\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1443.12)\" x=\"191.754\" y=\"1443.12\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1365.59)\" x=\"191.754\" y=\"1365.59\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1288.06)\" x=\"191.754\" y=\"1288.06\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1210.53)\" x=\"191.754\" y=\"1210.53\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1133)\" x=\"191.754\" y=\"1133\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1055.47)\" x=\"191.754\" y=\"1055.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 191.754, 1055.47)\" x=\"191.754\" y=\"1055.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 484.255, 873.2)\" x=\"484.255\" y=\"873.2\">t = 1.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 484.255, 1559.48)\" x=\"484.255\" y=\"1559.48\">x</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 89.2861, 1173.65)\" x=\"89.2861\" y=\"1173.65\">u(x,t)</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip7505)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 215.754,1423.9 218.376,1423.74 220.998,1423.57 245.244,1421.25 269.489,1416.93 276.774,1415.09 284.06,1412.95 291.345,1410.46 298.63,1407.62 310.949,1401.9 \n",
" 323.268,1394.94 336.65,1385.92 350.032,1375.39 362.37,1364.44 374.707,1352.5 387.933,1338.95 401.16,1325.12 416.484,1309.52 431.809,1295.37 438.618,1289.82 \n",
" 445.427,1284.86 452.236,1280.56 459.046,1276.98 465.017,1274.5 470.988,1272.66 476.959,1271.48 482.93,1270.99 489.44,1271.23 495.95,1272.28 502.46,1274.14 \n",
" 508.97,1276.75 515.519,1280.12 522.068,1284.17 528.617,1288.85 535.165,1294.07 549.646,1307.2 564.127,1321.77 577.906,1336.17 591.684,1350.37 606.01,1364.32 \n",
" 620.337,1376.94 632.396,1386.32 644.456,1394.46 659.179,1402.72 673.903,1409.24 687.743,1413.95 701.584,1417.51 723.758,1421.31 745.931,1423.47 749.343,1423.69 \n",
" 752.756,1423.9 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7500)\" d=\"\n",
"M1015.75 1425.62 L1552.76 1425.62 L1552.76 921.675 L1015.75 921.675 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7506\">\n",
" <rect x=\"1015\" y=\"921\" width=\"538\" height=\"505\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1425.62 1015.75,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1105.25,1425.62 1105.25,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1194.75,1425.62 1194.75,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1284.25,1425.62 1284.25,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1373.76,1425.62 1373.76,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1463.26,1425.62 1463.26,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1552.76,1425.62 1552.76,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1425.62 1552.76,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1348.09 1552.76,1348.09 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1270.56 1552.76,1270.56 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1193.03 1552.76,1193.03 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1115.5 1552.76,1115.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1037.97 1552.76,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1015.75,1037.97 1552.76,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1425.62 1552.76,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1425.62 1015.75,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1425.62 1015.75,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1105.25,1425.62 1105.25,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1194.75,1425.62 1194.75,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1284.25,1425.62 1284.25,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1373.76,1425.62 1373.76,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1463.26,1425.62 1463.26,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1552.76,1425.62 1552.76,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1425.62 1022.2,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1348.09 1022.2,1348.09 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1270.56 1022.2,1270.56 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1193.03 1022.2,1193.03 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1115.5 1022.2,1115.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1037.97 1022.2,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1037.97 1022.2,1037.97 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1015.75, 1479.62)\" x=\"1015.75\" y=\"1479.62\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1105.25, 1479.62)\" x=\"1105.25\" y=\"1479.62\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1194.75, 1479.62)\" x=\"1194.75\" y=\"1479.62\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1284.25, 1479.62)\" x=\"1284.25\" y=\"1479.62\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1373.76, 1479.62)\" x=\"1373.76\" y=\"1479.62\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1463.26, 1479.62)\" x=\"1463.26\" y=\"1479.62\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1552.76, 1479.62)\" x=\"1552.76\" y=\"1479.62\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1443.12)\" x=\"991.754\" y=\"1443.12\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1365.59)\" x=\"991.754\" y=\"1365.59\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1288.06)\" x=\"991.754\" y=\"1288.06\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1210.53)\" x=\"991.754\" y=\"1210.53\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1133)\" x=\"991.754\" y=\"1133\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1055.47)\" x=\"991.754\" y=\"1055.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 991.754, 1055.47)\" x=\"991.754\" y=\"1055.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1284.25, 873.2)\" x=\"1284.25\" y=\"873.2\">t = 5.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1284.25, 1559.48)\" x=\"1284.25\" y=\"1559.48\">x</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 889.286, 1173.65)\" x=\"889.286\" y=\"1173.65\">u(x,t)</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip7506)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1015.75,1397.5 1021,1396.5 1069.49,1386.73 1098.63,1380.64 1123.27,1375.57 1150.03,1370.39 1174.71,1366.08 1187.93,1364.02 1201.16,1362.17 1216.48,1360.31 \n",
" 1231.81,1358.79 1245.43,1357.75 1259.05,1357 1270.99,1356.61 1282.93,1356.46 1295.95,1356.58 1308.97,1356.98 1322.07,1357.68 1335.17,1358.66 1349.65,1360.05 \n",
" 1364.13,1361.75 1377.91,1363.63 1391.68,1365.74 1406.01,1368.14 1420.34,1370.73 1432.4,1373.03 1444.46,1375.42 1473.9,1381.48 1501.58,1387.27 1545.93,1396.2 \n",
" 1552.76,1397.5 \n",
" \"/>\n",
"<path clip-path=\"url(#clip7500)\" d=\"\n",
"M1815.75 1425.62 L2352.76 1425.62 L2352.76 921.675 L1815.75 921.675 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip7507\">\n",
" <rect x=\"1815\" y=\"921\" width=\"538\" height=\"505\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1425.62 1815.75,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1905.25,1425.62 1905.25,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1994.75,1425.62 1994.75,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2084.25,1425.62 2084.25,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2173.76,1425.62 2173.76,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2263.26,1425.62 2263.26,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2352.76,1425.62 2352.76,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1425.62 2352.76,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1348.09 2352.76,1348.09 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1270.56 2352.76,1270.56 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1193.03 2352.76,1193.03 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1115.5 2352.76,1115.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1037.97 2352.76,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1815.75,1037.97 2352.76,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1425.62 2352.76,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1425.62 1815.75,921.675 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1425.62 1815.75,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1905.25,1425.62 1905.25,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1994.75,1425.62 1994.75,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2084.25,1425.62 2084.25,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2173.76,1425.62 2173.76,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2263.26,1425.62 2263.26,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2352.76,1425.62 2352.76,1419.57 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1425.62 1822.2,1425.62 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1348.09 1822.2,1348.09 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1270.56 1822.2,1270.56 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1193.03 1822.2,1193.03 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1115.5 1822.2,1115.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1037.97 1822.2,1037.97 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip7500)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1037.97 1822.2,1037.97 \n",
" \"/>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1815.75, 1479.62)\" x=\"1815.75\" y=\"1479.62\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1905.25, 1479.62)\" x=\"1905.25\" y=\"1479.62\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1994.75, 1479.62)\" x=\"1994.75\" y=\"1479.62\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2084.25, 1479.62)\" x=\"2084.25\" y=\"1479.62\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2173.76, 1479.62)\" x=\"2173.76\" y=\"1479.62\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2263.26, 1479.62)\" x=\"2263.26\" y=\"1479.62\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 2352.76, 1479.62)\" x=\"2352.76\" y=\"1479.62\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1443.12)\" x=\"1791.75\" y=\"1443.12\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1365.59)\" x=\"1791.75\" y=\"1365.59\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1288.06)\" x=\"1791.75\" y=\"1288.06\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1210.53)\" x=\"1791.75\" y=\"1210.53\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1133)\" x=\"1791.75\" y=\"1133\">0.8</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1055.47)\" x=\"1791.75\" y=\"1055.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\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, 1791.75, 1055.47)\" x=\"1791.75\" y=\"1055.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 2084.25, 873.2)\" x=\"2084.25\" y=\"873.2\">t = 10.00</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 2084.25, 1559.48)\" x=\"2084.25\" y=\"1559.48\">x</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip7500)\">\n",
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 1689.29, 1173.65)\" x=\"1689.29\" y=\"1173.65\">u(x,t)</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip7507)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1815.75,1394.44 1818.38,1394.16 1821,1393.89 1845.24,1391.38 1869.49,1388.95 1884.06,1387.54 1898.63,1386.18 1910.95,1385.07 1923.27,1384.02 1936.65,1382.93 \n",
" 1950.03,1381.92 1962.37,1381.05 1974.71,1380.24 1987.93,1379.47 2001.16,1378.78 2016.48,1378.1 2031.81,1377.55 2045.43,1377.17 2059.05,1376.91 2070.99,1376.77 \n",
" 2082.93,1376.71 2095.95,1376.76 2108.97,1376.9 2122.07,1377.15 2135.17,1377.5 2149.65,1378 2164.13,1378.62 2177.91,1379.32 2191.68,1380.11 2206.01,1381.04 \n",
" 2220.34,1382.05 2232.4,1382.97 2244.46,1383.95 2273.9,1386.55 2301.58,1389.2 2345.93,1393.72 2352.76,1394.44 \n",
" \"/>\n",
"</svg>\n"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"D = 0.5\n",
"exact(x,t) = exp(-x^2/(4*D*t)) / sqrt(4*D*pi*t)\n",
"plt = []\n",
"\n",
"for t in [0.00, 0.10, 0.50, 1.00, 5.00, 10.0]\n",
" push!(plt, plot(x->exact(x,t), xlims=(-3,3), ylims=(0.0,1.3), label=\"\", xlabel=\"x\", ylabel=\"u(x,t)\", title=@sprintf(\"t = %.2f\", t)))\n",
"end\n",
" \n",
"plot(plt...)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 歴史\n",
"\n",
"拡散方程式はスカラー場の時間発展を記述する方程式である. 温度場については[Fourier(1822)](https://archive.org/details/thorieanalytiq00four), 濃度場については[Fick(1855)](https://doi.org/10.1080/14786445508641925)で与えられた.\n",
"\n",
"連続確率過程であるWiener過程(物理ではなく数学のBrown運動)の確率密度関数が従う方程式がまさに拡散方程式であり, 離散確率過程であるランダムウォークモデルの連続極限としても拡散方程式を導くことができる. このような確率モデルから拡散方程式が導出される歴史背景については未調査である."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 導出\n",
"\n",
"物理の難しいところは, 方程式を解くだけでなく, 方程式を作らなければいけないところである. 現象を数式で表す作業, つまりモデル化・モデリングは, 一意ではなく, 目的によって全く別のものになったりする. 拡散方程式は<b>Fickの法則</b>を<b>連続の式</b>に代入するだけで導出できる. さらに深堀すると, Fickの法則と連続の式は「導出」というよりも現象を元に作らなければいけない. 幸い, このような有名なモデルにはわかりやすい解説が用意されている. より詳細なモデリングや導出は参考文献を参照されたい. Fickの法則と連続の式はそれぞれ\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" j(x,t) &= -D \\frac{\\partial u(x,t)}{\\partial x}\\\\\n",
" \\frac{\\partial u(x,t)}{\\partial t} &= - \\frac{\\partial j(x,t)}{\\partial x}\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"であり, 連立すれば直ちに, 1次元の拡散方程式\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\frac{\\partial u(x,t)}{\\partial t} &= D \\frac{\\partial^2 u(x,t)}{\\partial x^2}\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"が導出できる. 3次元の場合, \n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\vec{j}(\\vec{r},t) &= -D \\nabla u(\\vec{r},t)\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= - \\nabla \\cdot \\vec{j}(\\vec{r},t)\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"を連立すれば拡散方程式を得る.\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= D \\nabla^2 u(\\vec{r},t)\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"<!-- ナブラ演算子の扱いに不慣れな読者はベクトル解析の教科書を参考にして頂きたい. ここで途中式を示すと, \n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= - \\nabla \\cdot \\vec{j}(\\vec{r},t)\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= - \\nabla \\cdot (-D \\nabla u(\\vec{r},t))\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= \\nabla \\cdot (D \\nabla u(\\vec{r},t))\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= \\left(\n",
" \\vec{e}_x \\frac{\\partial}{\\partial x} +\n",
" \\vec{e}_y \\frac{\\partial}{\\partial y} +\n",
" \\vec{e}_z \\frac{\\partial}{\\partial z}\n",
" \\right)\n",
" D \n",
" \\left(\n",
" \\vec{e}_x \\frac{\\partial}{\\partial x} +\n",
" \\vec{e}_y \\frac{\\partial}{\\partial y} +\n",
" \\vec{e}_z \\frac{\\partial}{\\partial z}\n",
" \\right)\n",
" u(\\vec{r},t)\n",
"\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= \\left(\n",
" \\vec{e}_x \\frac{\\partial}{\\partial x} +\n",
" \\vec{e}_y \\frac{\\partial}{\\partial y} +\n",
" \\vec{e}_z \\frac{\\partial}{\\partial z}\n",
" \\right)\n",
" D \n",
" \\left(\n",
" \\vec{e}_x \\frac{\\partial u(\\vec{r},t)}{\\partial x} +\n",
" \\vec{e}_y \\frac{\\partial u(\\vec{r},t)}{\\partial y} +\n",
" \\vec{e}_z \\frac{\\partial u(\\vec{r},t)}{\\partial z}\n",
" \\right)\n",
"\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= D \n",
" \\left(\n",
" \\frac{\\partial^2 u(\\vec{r},t)}{\\partial x^2} +\n",
" \\frac{\\partial^2 u(\\vec{r},t)}{\\partial y^2} +\n",
" \\frac{\\partial^2 u(\\vec{r},t)}{\\partial z^2}\n",
" \\right)\n",
"\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= D \n",
" \\left(\n",
" \\frac{\\partial^2}{\\partial x^2} +\n",
" \\frac{\\partial^2}{\\partial y^2} +\n",
" \\frac{\\partial^2}{\\partial z^2}\n",
" \\right)\n",
" u(\\vec{r},t)\n",
"\\\\\n",
" \\frac{\\partial u(\\vec{r},t)}{\\partial t} &= D \\nabla^2 u(\\vec{r},t)\n",
"\\end{aligned}\n",
"$$ -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 偏微分\n",
"\n",
"拡散方程式は偏微分方程式であるから, 偏微分が分からなければ理解できない. もし偏導関数の定義や連鎖則がわからないときは, [松尾厚『大学数学ことはじめ』(東京大学出版会, 2019)](http://www.utp.or.jp/book/b437932.html) pp.118-119 で復習しよう.\n",
"\n",
"> 関数の偏導関数を求めることを, その関数を<b>偏微分する</b>という. ― [松尾厚『大学数学ことはじめ』(東京大学出版会, 2019)](http://www.utp.or.jp/book/b437932.html) p.119"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 演習1\n",
"関数を偏微分して次の表を埋めよう. (1)は既に埋めてある. この問題は拡散方程式の解を扱うときに役立つ計算をまとめたものである.\n",
"\n",
"||$$u(x,t)$$|$$\\frac{\\partial u(x,t)}{\\partial t}$$|$$\\frac{\\partial u(x,t)}{\\partial x}$$|$$\\frac{\\partial^2 u(x,t)}{\\partial x^2}$$|\n",
"|---|---|---|---|---|\n",
"|(1)|$$t^2$$|$$2t$$|$$0$$|$$0$$|\n",
"|(2)|$$\\sin(x)$$||||\n",
"|(3)|$$\\frac{1}{\\sqrt{t}}$$||||\n",
"|(4)|$$\\frac{1}{\\sqrt{4\\pi Dt}}$$||||\n",
"|(5)|$$\\exp(x)$$||||\n",
"|(6)|$$-\\frac{x^2}{4Dt}$$||||\n",
"|(7)|$$\\exp\\left(-\\frac{x^2}{4Dt}\\right)$$||||\n",
"\n",
"## 解答1\n",
"\n",
"||$$u(x,t)$$|$$\\frac{\\partial u(x,t)}{\\partial t}$$|$$\\frac{\\partial u(x,t)}{\\partial x}$$|$$\\frac{\\partial^2 u(x,t)}{\\partial x^2}$$|\n",
"|---|---|---|---|---|\n",
"|(1)|$$t^2$$|$$2t$$|$$0$$|$$0$$|\n",
"|(2)|$$\\sin(x)$$|$$0$$|$$\\cos(x)$$|$$-\\sin(x)$$|\n",
"|(3)|$$\\frac{1}{\\sqrt{t}}$$|$$-\\frac{1}{2t\\sqrt{t}}$$|$$0$$|$$0$$|\n",
"|(4)|$$\\frac{1}{\\sqrt{4\\pi Dt}}$$|$$-\\frac{1}{2t\\sqrt{4\\pi Dt}}$$|$$0$$|$$0$$|\n",
"|(5)|$$\\exp(x)$$|$$0$$|$$\\exp(x)$$|$$\\exp(x)$$|\n",
"|(6)|$$-\\frac{x^2}{4Dt}$$|$$\\frac{x^2}{4Dt^2}$$|$$-\\frac{x}{2Dt}$$|$$-\\frac{1}{2Dt}$$|\n",
"|(7)|$$\\exp\\left(-\\frac{x^2}{4Dt}\\right)$$|$$\\frac{x^2}{4Dt^2}\\exp\\left(-\\frac{x^2}{4Dt}\\right)$$|$$-\\frac{x}{2Dt}\\exp\\left(-\\frac{x^2}{4Dt}\\right)$$|$$\\frac{x^2-2Dt}{4D^2t^2}\\exp\\left(-\\frac{x^2}{4Dt}\\right)$$|"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 拡散方程式の解\n",
"\n",
"拡散方程式の方程式の解は無限に存在する. [Polyanin, A. D. (2001). Handbook of Linear Partial Differential Equations for Engineers and Scientists , Chapman and Hall/CRC New York.](https://doi.org/10.1201/9781420035322) Chapter 1 は17個の解を紹介している. それらの定数倍, 和, 線形結合も解になるので, いくらでも解は作れる(勘の良い読者は全ての解の集合がベクトル空間になることに気付くだろう).\n",
"\n",
"さて, 演習2を解きなさい. この演習を通して, 拡散方程式にはたくさんの解があることがわかる. また, それらの解の線形結合も解になることを演習課題にしようかと思ったが, 大変だと思うので, 一般の場合について証明する. \n",
"\n",
"$u(x,t), v(x,t)$を拡散方程式の解だとする. つまり, \n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\frac{\\partial u}{\\partial t} &= D\\frac{\\partial^2 u}{{\\partial x}^2}\\\\\n",
" \\frac{\\partial v}{\\partial t} &= D\\frac{\\partial^2 v}{{\\partial x}^2}\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"を満たすものとする. すると, $u, v$の線形結合$au+bv$もまた\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\frac{\\partial (au+bv)}{\\partial t}\n",
" &= \\frac{\\partial au}{\\partial t} + \\frac{\\partial bv}{\\partial t}\\\\\n",
" &= a\\frac{\\partial u}{\\partial t} + b\\frac{\\partial v}{\\partial t}\\\\\n",
" &= aD\\frac{\\partial^2 u}{{\\partial x}^2} + bD\\frac{\\partial^2 v}{{\\partial x}^2}\\\\\n",
" &= D\\frac{\\partial^2 au}{{\\partial x}^2} + D\\frac{\\partial^2 bv}{{\\partial x}^2}\\\\\n",
" &= D\\frac{\\partial^2 au}{{\\partial x}^2} + D\\frac{\\partial^2 bv}{{\\partial x}^2}\\\\\n",
" &= D\\left(\\frac{\\partial^2 au}{{\\partial x}^2} + \\frac{\\partial^2 bv}{{\\partial x}^2}\\right)\\\\\n",
" &= D\\frac{\\partial^2 (au+bv)}{{\\partial x}^2}\\\\\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"となり, 拡散方程式を満たす(解である)ことがわかる. 和であれば$a=b=1$とすればよいし, $u$を2倍するだけであれば$a=2,b=0$とすればよい."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 演習2\n",
"次の表には1つだけ解ではない関数が載せてある. 表を埋めて, 全ての関数が解であるかどうか判定しなさい. (1)は既に埋めてある.\n",
"\n",
"||$$u(x,t)$$|$$\\frac{\\partial u(x,t)}{\\partial t}$$|$$\\frac{\\partial^2 u(x,t)}{\\partial x^2}$$|$$\\frac{\\partial u}{\\partial t}=D\\frac{\\partial^2}{\\partial x^2}$$|\n",
"|---|---|---|---|---|\n",
"|(1)|$$0$$|$$0$$|$$0$$|満たす|\n",
"|(2)|$$k$$||||\n",
"|(3)|$$ax+b$$||||\n",
"|(4)|$$ax^2+bx+c$$||||\n",
"|(5)|$$e^{-Dt}\\cos{x}$$||||\n",
"|(6)|$$e^{-Dt}\\sin{x}$$||||\n",
"|(7)|$$\\frac{1}{\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$||||\n",
"\n",
"## 解答2\n",
"\n",
"||$$u(x,t)$$|$$\\frac{\\partial u(x,t)}{\\partial t}$$|$$\\frac{\\partial^2 u(x,t)}{\\partial x^2}$$|$$\\frac{\\partial u}{\\partial t}=D\\frac{\\partial^2}{\\partial x^2}$$|\n",
"|---|---|---|---|---|\n",
"|(1)|$$0$$|$$0$$|$$0$$|満たす|\n",
"|(2)|$$k$$|$$0$$|$$0$$|満たす|\n",
"|(3)|$$ax+b$$|$$0$$|$$0$$|満たす|\n",
"|(4)|$$ax^2+bx+c$$|$$0$$|$$2a$$|満たさない|\n",
"|(5)|$$e^{-Dt}\\cos{x}$$|$$-De^{-Dt}\\cos{x}$$|$$-e^{-Dt}\\cos{x}$$|満たす|\n",
"|(6)|$$e^{-Dt}\\sin{x}$$|$$-De^{-Dt}\\sin{x}$$|$$-e^{-Dt}\\sin{x}$$|満たす|\n",
"|(7)|$$\\frac{1}{\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$|$$\\frac{x^2-2Dt}{4Dt^2\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$|$$\\frac{x^2-2Dt}{4D^2t^2\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$|満たす|"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 付加条件\n",
"\n",
"既に十分わかったように, 拡散方程式の解は無限に存在する. これに対して, 初期条件と境界条件を与えればただ1つの解が得られる(条件を与えすぎると解が存在しなくなることもある). \n",
"\n",
"演習3を解いてみよう. この演習を踏まえると, 初期条件$u(x,0)=\\delta(x)$と境界条件$u(\\pm\\infty,t)=0$に対応する解は以下に示す関数(Gauss分布)のみであることがわかる.\n",
"\n",
"$$u(x,t) = \\frac{1}{\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$\n",
"\n",
"以上で, Gauss関数による拡散方程式の解がどのような条件を満たす解なのか理解できた. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 演習3\n",
"次の表の関数は全て拡散方程式の解である. それぞれの関数に$t$や$x$の具体的な値を代入して, $u(x,t)$の値を求めなさい. 具体的な値が定まらないものは?を書きなさい. (1)は既に埋めてある.\n",
"\n",
"||$$u(x,t)$$|$$u(x,0)$$|$$u(x,\\infty)$$|$$u(0,t)$$|$$u(\\pm\\infty,t)$$|\n",
"|---|---|---|---|---|---|\n",
"|(1)|$$0$$|$$0$$|$$0$$|$$0$$|$$0$$|\n",
"|(2)|$$k$$|||||\n",
"|(3)|$$ax+b$$|||||\n",
"|(5)|$$e^{-Dt}\\cos{x}$$|||||\n",
"|(6)|$$e^{-Dt}\\sin{x}$$|||||\n",
"|(7)|$$\\frac{1}{\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$|||||\n",
"\n",
"## 解答3\n",
"\n",
"||$$u(x,t)$$|$$u(x,0)$$|$$u(x,\\infty)$$|$$u(0,t)$$|$$u(\\pm\\infty,t)$$|\n",
"|---|---|---|---|---|---|\n",
"|(1)|$$0$$|$$0$$|$$0$$|$$0$$|$$0$$|\n",
"|(2)|$$k$$|$$k$$|$$k$$|$$k$$|$$k$$|\n",
"|(3)|$$ax+b$$|$$ax+b$$|$$ax+b$$|$$b$$|$$\\pm\\infty$$|\n",
"|(5)|$$e^{-Dt}\\cos{x}$$|$$\\cos{x}$$|$$0$$|$$e^{-Dt}$$|$$?$$|\n",
"|(6)|$$e^{-Dt}\\sin{x}$$|$$\\sin{x}$$|$$0$$|$$0$$|$$?$$|\n",
"|(7)|$$\\frac{1}{\\sqrt{4\\pi Dt}} \\exp \\left( -\\frac{x^2}{4Dt} \\right)$$|$$\\delta(x)$$|$$0$$|$$\\frac{1}{\\sqrt{4\\pi Dt}}$$|$$0$$|"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 解法\n",
"\n",
"このノートの演習を通して, 与えられた関数が拡散方程式の解かどうか判定できるようになった. 思いついた関数を全て試してみるというもの解を見つける方法の一つだが, それでは時間がかかりすぎてしまう. 一方, 適切な解法は方程式や境界条件によって違うので, 網羅的に勉強するのは時間がかかりすぎてしまう. 必要になったときに勉強するのが良いだろう."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 参考文献\n",
"\n",
"- [伊東 章 編『シリーズ〈新しい化学工学〉3 物質移動解析』(朝倉書店, 2013)](https://www.asakura.co.jp/books/isbn/978-4-254-25603-1/) (吸着・移流・拡散などの一般論)\n",
"- [伊東 章『Excelで気軽に移動現象論』(丸善出版, 2014)](https://www.maruzen-publishing.co.jp/item/?book_no=294822) (吸着・移流・拡散などの一般論)\n",
"- [松尾厚『大学数学ことはじめ』(東京大学出版会, 2019)](http://www.utp.or.jp/book/b437932.html) p.119 (偏微分について)\n",
"- [北原和夫, 杉山忠男『講談社基礎物理学シリーズ 8 統計力学』(講談社サイエンティフィク, 2010)](https://www.kspub.co.jp/book/detail/1572089.html) p.187 (粒子の拡散方程式としての導出, 1次元)\n",
"- [金子晃『基礎数学12 偏微分方程式入門』(東京大学出版会, 1998)](http://www.utp.or.jp/book/b302220.html) p.17 (粒子の拡散方程式としての導出, 1次元)\n",
"- [伊藤清三『拡散方程式 紀伊國屋数学叢書〈17〉』(紀伊國屋書店, 2016)](https://www.kinokuniya.co.jp/f/dsg-08-EK-0298393) pp.1-3 (粒子の拡散方程式としての導出, 3次元)\n",
"- [スタンリー・ファーロウ 著, 伊理正夫, 伊理由美 訳『偏微分方程式 科学者・技術者のための使い方と解き方』(朝倉書店 1983, 新版1996)](http://www.asakura.co.jp/books/isbn/4-254-11071-5/) 第4課 (熱方程式としての導出, 1次元)\n",
"- [渋谷仙吉, 内田伏一『物理数学コース 偏微分方程式』(裳華房, 2000)](https://www.shokabo.co.jp/mybooks/ISBN978-4-7853-1524-5.htm) p.65 (熱方程式としての導出, 1次元)\n",
"- [北原和夫, 杉山忠男『講談社基礎物理学シリーズ 8 統計力学』(講談社サイエンティフィク, 2010)](https://www.kspub.co.jp/book/detail/1572089.html) p.194-196 (拡散電流の方程式としての導出, 1次元)\n",
"- [太田隆夫『非平衡系の物理学』(裳華房, 2000)](https://www.shokabo.co.jp/mybooks/ISBN978-4-7853-2092-8.htm) p.67 (ランダムウォークモデルの連続極限としての導出, 1次元)\n",
"- [堀淳一『ランジュバン方程式』(岩波書店, 2015)](https://www.iwanami.co.jp/book/b266718.html) p.4 (ランダムウォークモデルの連続極限としての導出, 1次元)\n",
"- [堀淳一『ランジュバン方程式』(岩波書店, 2015)](https://www.iwanami.co.jp/book/b266718.html) §4.2, 4.3 (Fokker-Planck方程式としての導出, 1,3次元)\n",
"- [北原和夫, 杉山忠男『講談社基礎物理学シリーズ 8 統計力学』(講談社サイエンティフィク, 2010)](https://www.kspub.co.jp/book/detail/1572089.html) p.116(Fokker-Planck方程式としての導出, 1次元)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.6.2",
"language": "julia",
"name": "julia-1.6"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment