import%20marimo%0A%0A__generated_with%20%3D%20%220.24.0%22%0Aapp%20%3D%20marimo.App()%0A%0Awith%20app.setup%3A%0A%20%20%20%20from%20pathlib%20import%20Path%0A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20%E6%94%BE%E7%89%A9%E5%9E%8B%E5%81%8F%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E5%BC%8F%0A%0A%20%20%20%20%E6%99%82%E9%96%93%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%201%20%E9%9A%8E%E3%80%81%E7%A9%BA%E9%96%93%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%202%20%E9%9A%8E%E4%BB%A5%E4%B8%8A%E3%81%AE%E5%BE%AE%E5%88%86%E3%82%92%E5%90%AB%E3%82%80%E7%99%BA%E5%B1%95%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%82%92%E3%80%81%0A%20%20%20%20%E6%9C%89%E9%99%90%E5%B7%AE%E5%88%86%E3%81%A7%E7%A9%BA%E9%96%93%E3%82%92%E9%9B%A2%E6%95%A3%E5%8C%96%E3%81%97%20%60scipy.integrate.solve_ivp%60%20%E3%81%A7%E6%99%82%E9%96%93%E7%A9%8D%E5%88%86%E3%81%97%E3%81%BE%E3%81%99%0A%20%20%20%20%EF%BC%88%60legacy%2Fsimulation%2FParabolicPDE.ipynb%60%20%E3%82%92%20marimo%20%E5%90%91%E3%81%91%E3%81%AB%E6%95%B4%E7%90%86%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A7%E3%81%99%EF%BC%89%E3%80%82%0A%0A%20%20%20%20%E6%89%B1%E3%81%86%203%20%E3%81%A4%E3%81%AE%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AF%E3%80%81%E7%B7%9A%E5%BD%A2%E3%81%AE%E6%8B%A1%E6%95%A3%E3%81%8B%E3%82%89%E9%9D%9E%E7%B7%9A%E5%BD%A2%E3%83%BB%E5%88%86%E6%95%A3%E6%80%A7%E3%81%B8%E6%AE%B5%E9%9A%8E%E7%9A%84%E3%81%AB%E9%9B%A3%E3%81%97%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%7C%20%E7%AF%80%20%7C%20%E6%96%B9%E7%A8%8B%E5%BC%8F%20%7C%20%E7%A9%BA%E9%96%93%E5%88%BB%E3%81%BF%20%7C%20%E6%99%82%E9%96%93%E7%AF%84%E5%9B%B2%20%7C%20%E8%A6%8B%E3%81%A9%E3%81%93%E3%82%8D%20%7C%0A%20%20%20%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%0A%20%20%20%20%7C%20%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%20%7C%20%24u_t%3DDu_%7Bxx%7D%24%20%7C%20%24h%3D0.01%24%EF%BC%88400%20%E7%82%B9%EF%BC%89%20%7C%20%24t%5Cin%5B0%2C0.1%5D%24%20%7C%20%E8%A7%A3%E6%9E%90%E8%A7%A3%EF%BC%88%E7%86%B1%E6%A0%B8%EF%BC%89%E3%81%A8%E3%81%AE%E4%B8%80%E8%87%B4%20%7C%0A%20%20%20%20%7C%20%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%20%7C%20%24u_t%3D-uu_x%2BDu_%7Bxx%7D%24%20%7C%20%24h%3D0.005%24%EF%BC%88200%20%E7%82%B9%EF%BC%89%20%7C%20%24t%5Cin%5B0%2C2%5D%24%20%7C%20%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%AE%E5%BD%A2%E6%88%90%E3%81%A8%E7%B2%98%E6%80%A7%E6%B8%9B%E8%A1%B0%20%7C%0A%20%20%20%20%7C%20KdV%20%E6%96%B9%E7%A8%8B%E5%BC%8F%20%7C%20%24u_t%3D-6uu_x-u_%7Bxxx%7D%24%20%7C%20%24h%5Csimeq0.195%24%EF%BC%88512%20%E7%82%B9%EF%BC%89%20%7C%20%24t%5Cin%5B0%2C10%5D%24%20%7C%20%E5%88%86%E6%95%A3%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%A8%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%E5%88%97%20%7C%0A%0A%20%20%20%20%E3%81%A9%E3%81%AE%E7%AF%80%E3%81%A7%E3%82%82%E3%80%81%E7%8F%BE%E8%B1%A1%E3%81%8C%E4%B8%80%E5%B7%A1%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7%EF%BC%88%E6%8B%A1%E6%95%A3%E3%81%AA%E3%82%89%E5%88%86%E5%B8%83%E3%81%AE%E5%B9%85%E3%81%8C%205%20%E5%80%8D%E3%80%81%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E3%81%AA%E3%82%89%0A%20%20%20%20%E6%8C%AF%E5%B9%85%E3%81%8C%201%2F6%E3%80%81KdV%20%E3%81%AA%E3%82%89%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%E5%88%97%E3%81%8C%E5%87%BA%E3%81%9D%E3%82%8D%E3%81%86%E3%81%BE%E3%81%A7%EF%BC%89%E7%A9%8D%E5%88%86%E3%81%97%E3%81%A6%E3%81%8B%E3%82%89%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%0A%20%20%20%20%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%81%93%E3%81%AE%20notebook%20%E3%81%AE%E5%85%B1%E9%80%9A%E9%83%A8%E5%93%81%0A%0A%20%20%20%20%E6%AC%A1%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%AF%E3%80%81%E4%BB%A5%E9%99%8D%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E5%85%B1%E6%9C%89%E3%81%99%E3%82%8B%E5%87%BA%E5%8A%9B%E5%85%88%E3%81%A8%E3%83%98%E3%83%AB%E3%83%91%E3%83%BC%E3%82%92%E7%94%A8%E6%84%8F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20-%20%60artifacts_dir%60%3A%20GIF%20%E3%81%A8%20%60.npz%60%20%E3%81%AE%E4%BF%9D%E5%AD%98%E5%85%88%0A%20%20%20%20%20%20%60notebooks%2Fsimulation%2F_generated%2FParabolicPDE%2F%60%E3%80%82Git%20%E3%81%AE%E8%BF%BD%E8%B7%A1%E5%AF%BE%E8%B1%A1%E5%A4%96%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%0A%20%20%20%20%20%20%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%9F%E3%81%B3%E3%81%AB%E5%86%8D%E7%94%9F%E6%88%90%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20-%20%60gif_image(path%2C%20alt)%60%3A%20GIF%20%E3%82%92%20base64%20%E3%81%AE%20data%20URI%20%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%97%E3%81%A6%20%60mo.image%60%20%E3%81%A7%0A%20%20%20%20%20%20%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%81%BE%E3%81%99%E3%80%82%E9%9D%99%E7%9A%84%20HTML%20%E3%81%B8%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%82%82%E5%A4%96%E9%83%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%8F%82%E7%85%A7%E3%81%9B%E3%81%9A%E3%81%AB%E5%86%8D%E7%94%9F%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20-%20%60save_gif(fig%2C%20update%2C%20frames%2C%20path%2C%20interval)%60%3A%20%60FuncAnimation%60%20%E3%82%92%20GIF%20%E3%81%A8%E3%81%97%E3%81%A6%0A%20%20%20%20%20%20%E4%BF%9D%E5%AD%98%E3%81%97%E3%80%81%E7%94%9F%E6%88%90%E3%81%95%E3%82%8C%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%EF%BC%88KiB%EF%BC%89%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%20%20%60interval%60%20%E3%81%AF%201%20%E3%82%B3%E3%83%9E%E3%81%AE%E8%A1%A8%E7%A4%BA%E6%99%82%E9%96%93%EF%BC%88%E3%83%9F%E3%83%AA%E7%A7%92%EF%BC%89%E3%81%A7%E3%81%99%E3%80%82GIF%20%E3%81%AF%E8%A1%A8%E7%A4%BA%E6%99%82%E9%96%93%E3%82%92%201%2F100%20%E7%A7%92%E5%8D%98%E4%BD%8D%E3%81%A7%0A%20%20%20%20%20%20%E3%81%97%E3%81%8B%E4%BF%9D%E6%8C%81%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81%E8%A6%81%E6%B1%82%E3%81%97%E3%81%9F%E5%80%A4%E3%81%8C%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE%E4%BD%BF%E3%82%8F%E3%82%8C%E3%82%8B%E3%81%A8%E3%81%AF%E9%99%90%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%0A%20%20%20%20%20%20%E4%BF%9D%E5%AD%98%E5%BE%8C%E3%81%AB%20GIF%20%E3%82%92%E8%AA%AD%E3%81%BF%E7%9B%B4%E3%81%97%E3%81%A6%E5%AE%9F%E9%9A%9B%E3%81%AE%E9%96%93%E9%9A%94%E3%81%A8%E5%86%8D%E7%94%9F%E6%99%82%E9%96%93%E3%82%92%E6%B8%AC%E3%82%8A%E3%80%81%E5%A0%B1%E5%91%8A%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20base64%0A%0A%20%20%20%20import%20matplotlib.animation%20as%20animation%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20from%20PIL%20import%20Image%0A%0A%20%20%20%20artifacts_dir%20%3D%20Path(__file__).resolve().parent%20%2F%20%22_generated%22%20%2F%20%22ParabolicPDE%22%0A%20%20%20%20artifacts_dir.mkdir(parents%3DTrue%2C%20exist_ok%3DTrue)%0A%0A%20%20%20%20def%20gif_image(path%3A%20Path%2C%20alt%3A%20str)%3A%0A%20%20%20%20%20%20%20%20encoded%20%3D%20base64.b64encode(path.read_bytes()).decode()%0A%20%20%20%20%20%20%20%20return%20mo.image(f%22data%3Aimage%2Fgif%3Bbase64%2C%7Bencoded%7D%22%2C%20alt%3Dalt)%0A%0A%20%20%20%20def%20save_gif(fig%2C%20update%2C%20frames%3A%20int%2C%20path%3A%20Path%2C%20interval%3A%20int)%20-%3E%20str%3A%0A%20%20%20%20%20%20%20%20anim%20%3D%20animation.FuncAnimation(fig%2C%20update%2C%20frames%3Dframes%2C%20interval%3Dinterval)%0A%20%20%20%20%20%20%20%20anim.save(path%2C%20writer%3D%22pillow%22)%0A%20%20%20%20%20%20%20%20plt.close(fig)%0A%20%20%20%20%20%20%20%20%23%20GIF%20%E3%81%AF%E9%96%93%E9%9A%94%E3%82%92%201%2F100%20%E7%A7%92%E5%8D%98%E4%BD%8D%E3%81%A7%E3%81%97%E3%81%8B%E4%BF%9D%E6%8C%81%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%80%81%E4%BF%9D%E5%AD%98%E5%BE%8C%E3%81%AB%E5%AE%9F%E6%B8%AC%E3%81%97%E3%81%A6%E5%A0%B1%E5%91%8A%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%20with%20Image.open(path)%20as%20gif%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20durations%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20index%20in%20range(gif.n_frames)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gif.seek(index)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20durations.append(gif.info.get(%22duration%22%2C%200))%0A%20%20%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Bpath.name%7D%3A%20%7Bframes%7D%20frames%2C%20%7Bdurations%5B0%5D%7D%20ms%2Fframe%2C%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Bsum(durations)%20%2F%201000%3A.1f%7D%20s%2C%20%7Bpath.stat().st_size%20%2F%201024%3A.0f%7D%20KiB%22%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20return%20artifacts_dir%2C%20gif_image%2C%20plt%2C%20save_gif%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%94%BE%E7%89%A9%E5%9E%8B%3A%20%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AF%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7B%E2%88%82u%7D%7B%E2%88%82t%7D%3DD%5Cnabla%5E2u%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A7%E3%81%99%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%201%20%E6%AC%A1%E5%85%83%E3%81%A7%E3%80%81%E9%95%B7%E3%81%95%E3%81%A8%E6%99%82%E9%96%93%E3%82%92%E9%81%A9%E5%88%87%E3%81%AB%E8%A6%8F%E6%A0%BC%E5%8C%96%E3%81%97%E3%81%A6%20%24D%3D1%24%20%E3%81%A8%E3%81%97%E3%81%A6%E8%A7%A3%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E5%88%9D%E6%9C%9F%E6%9D%A1%E4%BB%B6%E3%82%92%E3%83%87%E3%83%AB%E3%82%BF%E9%96%A2%E6%95%B0%20%24u(x%2C0)%3D%CE%B4(x)%24%20%E3%81%AB%E5%8F%96%E3%82%8B%E3%81%A8%E3%80%81%E8%A7%A3%E3%81%AF%E8%A7%A3%E6%9E%90%E7%9A%84%E3%81%AB%E6%B1%82%E3%81%BE%E3%82%8A%0A%20%20%20%20%24%24%0A%20%20%20%20u(x%2Ct)%3D%5Cfrac%7B1%7D%7B%5Csqrt%7B4%5Cpi%20Dt%7D%7D%5Cexp%5Cleft(-%5Cfrac%7Bx%5E2%7D%7B4Dt%7D%5Cright)%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A8%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%EF%BC%88%E7%86%B1%E6%A0%B8%E3%80%81%E3%81%82%E3%82%8B%E3%81%84%E3%81%AF%E3%82%B0%E3%83%AA%E3%83%BC%E3%83%B3%E9%96%A2%E6%95%B0%EF%BC%89%E3%80%82%E6%95%B0%E5%80%A4%E8%A7%A3%E3%82%92%E3%81%93%E3%81%AE%E5%8E%B3%E5%AF%86%E8%A7%A3%E3%81%A8%E9%87%8D%E3%81%AD%E3%81%A6%E6%8F%8F%E3%81%8F%E3%81%93%E3%81%A8%E3%81%A7%E3%80%81%0A%20%20%20%20%E9%9B%A2%E6%95%A3%E5%8C%96%E3%81%A8%E6%99%82%E9%96%93%E7%A9%8D%E5%88%86%E3%81%8C%E3%81%A9%E3%82%8C%E3%81%A0%E3%81%91%E6%AD%A3%E7%A2%BA%E3%81%8B%E3%82%92%E3%81%9D%E3%81%AE%E5%A0%B4%E3%81%A7%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E8%A8%88%E7%AE%97%E9%A0%98%E5%9F%9F%E3%81%AF%20%24x%5Cin%5B-2%2C2%5D%24%E3%80%81%E7%A9%BA%E9%96%93%E5%88%BB%E3%81%BF%E3%81%AF%20%24h%3D0.01%24%EF%BC%88%E6%A0%BC%E5%AD%90%E7%82%B9%20400%20%E5%80%8B%EF%BC%89%E3%81%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%24t%3D0.1%24%20%E3%81%A7%E3%81%AE%E5%88%86%E5%B8%83%E3%81%AE%E5%B9%85%E3%81%AF%20%24%5Csqrt%7B2Dt%7D%5Csimeq0.45%24%20%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E5%A2%83%E7%95%8C%20%24x%3D%5Cpm2%24%20%E3%81%AF%0A%20%20%20%20%E5%8D%81%E5%88%86%E3%81%AB%E9%81%A0%E3%81%8F%E3%80%81%E5%A2%83%E7%95%8C%E6%9D%A1%E4%BB%B6%E3%81%AE%E5%BD%B1%E9%9F%BF%E3%82%92%E5%8F%97%E3%81%91%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20from%20scipy%20import%20sparse%0A%0A%20%20%20%20dx_diff%20%3D%200.01%0A%20%20%20%20x_diff%20%3D%20np.arange(-2.0%2C%202.0%2C%20dx_diff)%0A%20%20%20%20n_diff%20%3D%20len(x_diff)%0A%0A%20%20%20%20t_max_diff%20%3D%200.1%0A%20%20%20%20frame_dt_diff%20%3D%200.001%0A%20%20%20%20%23%20%E3%83%87%E3%83%AB%E3%82%BF%E9%96%A2%E6%95%B0%E3%81%AE%E9%AB%98%E3%81%95%201%2Fh%20%E3%81%AF%E8%BB%B8%E3%81%AB%E5%8F%8E%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81%E5%B0%91%E3%81%97%E7%99%BA%E5%B1%95%E3%81%97%E3%81%9F%E6%99%82%E5%88%BB%E3%81%8B%E3%82%89%E6%8F%8F%E3%81%8D%E5%A7%8B%E3%82%81%E3%82%8B%E3%80%82%0A%20%20%20%20t_diff%20%3D%20np.arange(0.004%2C%20t_max_diff%20%2B%200.5%20*%20frame_dt_diff%2C%20frame_dt_diff)%0A%0A%20%20%20%20f%22%E6%A0%BC%E5%AD%90%E7%82%B9%20%7Bn_diff%7D%20%E5%80%8B%2C%20%E3%82%B3%E3%83%9E%E6%95%B0%20%7Blen(t_diff)%7D%2C%20%E9%99%BD%E8%A7%A3%E6%B3%95%E3%81%AE%E5%AE%89%E5%AE%9A%E6%9D%A1%E4%BB%B6%20k%20%3C%3D%20h%5E2%2F(2D)%20%3D%20%7Bdx_diff**2%20%2F%202%7D%22%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20dx_diff%2C%0A%20%20%20%20%20%20%20%20frame_dt_diff%2C%0A%20%20%20%20%20%20%20%20n_diff%2C%0A%20%20%20%20%20%20%20%20np%2C%0A%20%20%20%20%20%20%20%20sparse%2C%0A%20%20%20%20%20%20%20%20t_diff%2C%0A%20%20%20%20%20%20%20%20t_max_diff%2C%0A%20%20%20%20%20%20%20%20x_diff%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E4%BF%82%E6%95%B0%E8%A1%8C%E5%88%97%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%202%20%E9%9A%8E%E5%BE%AE%E5%88%86%E3%82%92%E4%B8%AD%E5%BF%83%E5%B7%AE%E5%88%86%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7B%E2%88%82%5E2u%7D%7B%E2%88%82x%5E2%7D(x_i)%5Csimeq%5Cfrac%7Bu_%7Bi%2B1%7D-2u_i%2Bu_%7Bi-1%7D%7D%7Bh%5E2%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A7%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%81%BE%E3%81%99%E3%80%82%E5%A2%83%E7%95%8C%E3%81%AF%E3%80%81%E5%8D%81%E5%88%86%E9%81%A0%E6%96%B9%E3%81%A7%E3%81%AF%20%24u%24%20%E3%81%8C%20%240%24%20%E3%81%AB%E6%B8%9B%E8%A1%B0%E3%81%99%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E6%83%B3%E5%AE%9A%E3%81%AE%E3%82%82%E3%81%A8%E3%80%81%0A%20%20%20%20%E3%83%87%E3%82%A3%E3%83%AA%E3%82%AF%E3%83%AC%E6%9D%A1%E4%BB%B6%0A%20%20%20%20%24%24%0A%20%20%20%20u(x_0)%3Du(x_N)%3D0%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%82%92%E8%AA%B2%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%24u%24%20%E3%82%92%E9%81%A9%E5%88%87%E3%81%AB%E5%B9%B3%E8%A1%8C%E7%A7%BB%E5%8B%95%E3%81%97%E3%81%A6%E5%AE%9A%E7%BE%A9%E3%81%97%E7%9B%B4%E3%81%9B%E3%81%B0%E3%80%81%E5%A2%83%E7%95%8C%E5%80%A4%E3%81%AF%E5%B8%B8%E3%81%AB%E3%81%93%E3%81%AE%E5%BD%A2%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E6%AC%A1%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%AE%20%60derivative_matrices%60%20%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E5%A2%83%E7%95%8C%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8B%201%20%E9%9A%8E%E5%BE%AE%E5%88%86%E8%A1%8C%E5%88%97%0A%20%20%20%20%24(S_%7B%2B%7D-S_%7B-%7D)%2F2h%24%20%E3%81%A8%202%20%E9%9A%8E%E5%BE%AE%E5%88%86%E8%A1%8C%E5%88%97%20%24(S_%7B%2B%7D-2I%2BS_%7B-%7D)%2Fh%5E2%24%20%E3%82%92%E7%B5%84%E3%81%A7%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%0A%20%20%20%20%EF%BC%881%20%E9%9A%8E%E5%BE%AE%E5%88%86%E3%81%AF%E5%BE%8C%E3%81%AE%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A7%E4%BD%BF%E3%81%84%E3%81%BE%E3%81%99%EF%BC%89%E3%80%82%E4%B8%A1%E7%AB%AF%E3%81%AE%E8%A1%8C%E3%81%A7%E3%81%AF%E9%A0%98%E5%9F%9F%E5%A4%96%E3%82%92%E6%8C%87%E3%81%99%0A%20%20%20%20%E3%82%B7%E3%83%95%E3%83%88%E6%88%90%E5%88%86%E3%82%92%E8%90%BD%E3%81%A8%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E3%81%9D%E3%82%8C%E3%81%8C%E3%83%87%E3%82%A3%E3%83%AA%E3%82%AF%E3%83%AC%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E6%A7%8B%E9%80%A0%E3%81%8C%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8C%E3%82%8B%E3%82%88%E3%81%86%E3%80%81%E3%81%BE%E3%81%9A%20%24n%3D6%24%E3%80%81%24h%3D1%24%20%E3%81%AE%E5%B0%8F%E3%81%95%E3%81%AA%E4%BE%8B%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20sparse)%3A%0A%20%20%20%20def%20derivative_matrices(n%3A%20int%2C%20h%3A%20float)%20-%3E%20tuple%5Bsparse.csr_matrix%2C%20sparse.csr_matrix%5D%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E4%B8%A1%E7%AB%AF%E3%82%92%E3%83%87%E3%82%A3%E3%83%AA%E3%82%AF%E3%83%AC%E6%9D%A1%E4%BB%B6%EF%BC%88u%3D0%EF%BC%89%E3%81%A8%E3%81%99%E3%82%8B%201%20%E9%9A%8E%E3%83%BB2%20%E9%9A%8E%E3%81%AE%E4%B8%AD%E5%BF%83%E5%B7%AE%E5%88%86%E8%A1%8C%E5%88%97%E3%82%92%E8%BF%94%E3%81%99%E3%80%82%22%22%22%0A%20%20%20%20%20%20%20%20shift_back%20%3D%20sparse.lil_matrix(sparse.eye(n%2C%20k%3D-1))%0A%20%20%20%20%20%20%20%20shift_back%5B0%2C%20%3A%5D%20%3D%200%0A%20%20%20%20%20%20%20%20shift_back%20%3D%20sparse.csr_matrix(shift_back)%0A%20%20%20%20%20%20%20%20shift_forward%20%3D%20sparse.lil_matrix(sparse.eye(n%2C%20k%3D1))%0A%20%20%20%20%20%20%20%20shift_forward%5B-1%2C%20%3A%5D%20%3D%200%0A%20%20%20%20%20%20%20%20shift_forward%20%3D%20sparse.csr_matrix(shift_forward)%0A%20%20%20%20%20%20%20%20identity%20%3D%20sparse.identity(n)%0A%20%20%20%20%20%20%20%20first%20%3D%20(shift_forward%20-%20shift_back)%20%2F%20(2%20*%20h)%0A%20%20%20%20%20%20%20%20second%20%3D%20(shift_forward%20-%202%20*%20identity%20%2B%20shift_back)%20%2F%20h**2%0A%20%20%20%20%20%20%20%20return%20first.tocsr()%2C%20second.tocsr()%0A%0A%20%20%20%20np.set_printoptions(edgeitems%3D3%2C%20precision%3D3%2C%20suppress%3DTrue)%0A%20%20%20%20derivative_matrices(6%2C%201.0)%5B1%5D.toarray()%0A%20%20%20%20return%20(derivative_matrices%2C)%0A%0A%0A%40app.cell%0Adef%20_(derivative_matrices%2C%20dx_diff%2C%20n_diff)%3A%0A%20%20%20%20_%2C%20laplacian_diff%20%3D%20derivative_matrices(n_diff%2C%20dx_diff)%0A%20%20%20%20f%22%7Blaplacian_diff.shape%7D%2C%20nnz%3D%7Blaplacian_diff.nnz%7D%2C%20%E5%AF%BE%E8%A7%92%E6%88%90%E5%88%86%20%3D%20%7B-2%20%2F%20dx_diff**2%3A.0f%7D%22%0A%20%20%20%20return%20(laplacian_diff%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E5%88%9D%E6%9C%9F%E6%9D%A1%E4%BB%B6%E3%81%A8%E6%99%82%E9%96%93%E5%88%BB%E3%81%BF%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E3%83%87%E3%83%AB%E3%82%BF%E9%96%A2%E6%95%B0%E3%82%92%E6%A0%BC%E5%AD%90%E4%B8%8A%E3%81%A7%E8%A1%A8%E7%8F%BE%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E4%B8%AD%E5%A4%AE%E3%81%AE%201%20%E7%82%B9%E3%81%A0%E3%81%91%E3%81%AB%20%241%2Fh%24%20%E3%82%92%E7%BD%AE%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E3%81%93%E3%81%86%E3%81%99%E3%82%8B%E3%81%A8%20%24%5Csum_iu_ih%3D1%24%20%E3%81%A8%E3%81%AA%E3%82%8A%E3%80%81%E5%85%A8%E4%BD%93%E3%81%AE%E7%A9%8D%E5%88%86%E3%81%8C%20%241%24%20%E3%81%AB%E8%A6%8F%E6%A0%BC%E5%8C%96%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E4%BB%8A%E5%9B%9E%E3%81%AF%20%24h%3D0.01%24%20%E3%81%AA%E3%81%AE%E3%81%A7%E9%AB%98%E3%81%95%E3%81%AF%20%24100%24%20%E3%81%A7%E3%81%99%E3%80%82%0A%0A%20%20%20%20%5B%E6%95%B0%E5%80%A4%E8%A7%A3%E3%81%AE%E4%B8%8D%E5%AE%89%E5%AE%9A%E6%80%A7%E3%82%88%E3%82%8A%E3%80%81%E6%99%82%E9%96%93%E6%96%B9%E5%90%91%E3%81%AE%E5%88%BB%E3%81%BF%E5%B9%85%20%24k%24%20%E3%81%AF%E7%A9%BA%E9%96%93%E6%96%B9%E5%90%91%E3%81%AE%E5%88%BB%E3%81%BF%E5%B9%85%20%24h%24%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%0A%20%20%20%20%E5%8D%81%E5%88%86%E3%81%AB%E5%B0%8F%E3%81%95%E3%81%8F%E5%8F%96%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%5D(http%3A%2F%2Fwww.nibb.ac.jp%2Fmiyakohp%2Fasari%2Fhtdocs%2F%3Fpage_id%3D60)%E3%80%82%0A%20%20%20%20%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AB%E3%81%AF%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7BDk%7D%7Bh%5E2%7D%5Cleq%5Cfrac%7B1%7D%7B2%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A7%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E5%B7%AE%E5%88%86%E5%8C%96%E3%81%97%E3%81%9F%E4%BF%82%E6%95%B0%E8%A1%8C%E5%88%97%E3%81%AE%E5%9B%BA%E6%9C%89%E5%80%A4%E3%82%92%E9%99%BD%E8%A7%A3%E6%B3%95%E3%81%AE%E5%AE%89%E5%AE%9A%E9%A0%98%E5%9F%9F%E3%81%B8%E5%8F%8E%E3%82%81%E3%82%8B%E6%9D%A1%E4%BB%B6%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%24h%3D0.01%24%E3%80%81%24D%3D1%24%20%E3%81%AA%E3%82%89%20%24k%5Cleq5%5Ctimes10%5E%7B-5%7D%24%20%E3%81%A8%E3%81%AA%E3%82%8A%E3%80%81%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%9E%E9%96%93%E9%9A%94%0A%20%20%20%20%24%CE%94t_%7B%5Ctext%7Bframe%7D%7D%3D10%5E%7B-3%7D%24%20%E3%82%88%E3%82%8A%E3%81%9A%E3%81%A3%E3%81%A8%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E9%81%A9%E5%BF%9C%E5%88%BB%E3%81%BF%E3%81%AE%20%60RK45%60%20%E3%81%AF%0A%20%20%20%20%E3%81%93%E3%81%AE%E5%88%B6%E7%B4%84%E3%82%92%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E6%BA%80%E3%81%9F%E3%81%99%E3%82%88%E3%81%86%E3%81%AB%E5%86%85%E9%83%A8%E3%81%AE%E5%88%BB%E3%81%BF%E5%B9%85%E3%82%92%E9%81%B8%E3%81%B6%E3%81%9F%E3%82%81%E3%80%81%0A%20%20%20%20%E3%82%B3%E3%83%9E%E9%96%93%E9%9A%94%E3%81%A8%E3%81%AF%E7%8B%AC%E7%AB%8B%E3%81%AB%E5%AE%89%E5%AE%9A%E6%80%A7%E3%81%8C%E4%BF%9D%E3%81%9F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(dx_diff%2C%20n_diff%2C%20np%2C%20plt%2C%20x_diff)%3A%0A%20%20%20%20u0_diff%20%3D%20np.zeros(n_diff)%0A%20%20%20%20u0_diff%5Bn_diff%20%2F%2F%202%5D%20%3D%201%20%2F%20dx_diff%0A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.4%2C%202.6)%2C%20dpi%3D100)%0A%20%20%20%20_ax.plot(x_diff%2C%20u0_diff)%0A%20%20%20%20_ax.set_xlim(-0.5%2C%200.5)%0A%20%20%20%20_ax.set_xlabel(%22%24x%24%22)%0A%20%20%20%20_ax.set_ylabel(%22%24u(x%2C0)%24%22)%0A%20%20%20%20_ax.set_title(f%22discretized%20delta%20function%20(height%201%2Fh%20%3D%20%7B1%20%2F%20dx_diff%3A.0f%7D)%22)%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%20(u0_diff%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E6%99%82%E9%96%93%E7%A9%8D%E5%88%86%0A%0A%20%20%20%20%60t_eval%60%20%E3%81%AB%E3%82%B3%E3%83%9E%E3%81%AE%E6%99%82%E5%88%BB%E3%82%92%E6%B8%A1%E3%81%97%E3%80%81%E5%BF%85%E8%A6%81%E3%81%AA%E6%99%82%E5%88%BB%E3%81%AE%E5%80%A4%E3%81%A0%E3%81%91%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%60sol.success%60%20%E3%81%AE%E7%A2%BA%E8%AA%8D%E3%81%AF%E5%BF%85%E9%A0%88%E3%81%A7%E3%81%99%E3%80%82%E5%88%BB%E3%81%BF%E5%B9%85%E3%81%8C%E4%B8%8B%E9%99%90%E3%81%AB%E9%81%94%E3%81%97%E3%81%A6%E7%A9%8D%E5%88%86%E3%81%8C%E9%80%94%E4%B8%AD%E3%81%A7%0A%20%20%20%20%E6%89%93%E3%81%A1%E5%88%87%E3%82%89%E3%82%8C%E3%81%A6%E3%82%82%20%60solve_ivp%60%20%E3%81%AF%E4%BE%8B%E5%A4%96%E3%82%92%E6%8A%95%E3%81%92%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81%E7%A2%BA%E8%AA%8D%E3%82%92%E7%9C%81%E3%81%8F%E3%81%A8%0A%20%20%20%20%E7%99%BA%E6%95%A3%E3%81%97%E3%81%9F%E7%B5%90%E6%9E%9C%E3%82%92%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE%E5%8F%AF%E8%A6%96%E5%8C%96%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(frame_dt_diff%2C%20laplacian_diff%2C%20t_diff%2C%20t_max_diff%2C%20u0_diff)%3A%0A%20%20%20%20from%20scipy.integrate%20import%20solve_ivp%0A%0A%20%20%20%20def%20_rhs(_t%2C%20u)%3A%0A%20%20%20%20%20%20%20%20return%20laplacian_diff%20%40%20u%0A%0A%20%20%20%20_sol%20%3D%20solve_ivp(%0A%20%20%20%20%20%20%20%20_rhs%2C%0A%20%20%20%20%20%20%20%20t_span%3D(0%2C%20t_max_diff)%2C%0A%20%20%20%20%20%20%20%20y0%3Du0_diff%2C%0A%20%20%20%20%20%20%20%20method%3D%22RK45%22%2C%0A%20%20%20%20%20%20%20%20t_eval%3Dt_diff%2C%0A%20%20%20%20%20%20%20%20max_step%3Dframe_dt_diff%2C%0A%20%20%20%20%20%20%20%20rtol%3D1e-8%2C%0A%20%20%20%20%20%20%20%20atol%3D1e-10%2C%0A%20%20%20%20)%0A%20%20%20%20if%20not%20_sol.success%3A%0A%20%20%20%20%20%20%20%20raise%20RuntimeError(_sol.message)%0A%20%20%20%20u_diff%20%3D%20_sol.y.T%0A%0A%20%20%20%20f%22success%3D%7B_sol.success%7D%2C%20%E5%8F%B3%E8%BE%BA%E8%A9%95%E4%BE%A1%20%7B_sol.nfev%7D%20%E5%9B%9E%2C%20%E3%83%94%E3%83%BC%E3%82%AF%20%7Bu_diff%5B0%5D.max()%3A.3f%7D%20-%3E%20%7Bu_diff%5B-1%5D.max()%3A.3f%7D%22%0A%20%20%20%20return%20solve_ivp%2C%20u_diff%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E5%8F%AF%E8%A6%96%E5%8C%96%0A%0A%20%20%20%20%E5%90%84%E3%82%B3%E3%83%9E%E3%81%A7%E6%95%B0%E5%80%A4%E8%A7%A3%EF%BC%88%E5%AE%9F%E7%B7%9A%EF%BC%89%E3%81%A8%E7%86%B1%E6%A0%B8%E3%81%AE%E5%8E%B3%E5%AF%86%E8%A7%A3%EF%BC%88%E7%A0%B4%E7%B7%9A%EF%BC%89%E3%82%92%E9%87%8D%E3%81%AD%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E3%83%87%E3%83%AB%E3%82%BF%E9%96%A2%E6%95%B0%E3%81%AE%E9%AB%98%E3%81%95%20%241%2Fh%3D100%24%20%E3%81%AF%E7%B8%A6%E8%BB%B8%E3%81%AB%E5%8F%8E%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%80%81%24t%3D0.004%24%0A%20%20%20%20%EF%BC%88%E5%8E%B3%E5%AF%86%E8%A7%A3%E3%81%AE%E3%83%94%E3%83%BC%E3%82%AF%E3%81%8C%20%241%2F%5Csqrt%7B4%5Cpi%20t%7D%5Csimeq4.46%24%EF%BC%89%E3%81%8B%E3%82%89%E6%8F%8F%E3%81%8D%E5%A7%8B%E3%82%81%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%2097%20%E3%82%B3%E3%83%9E%E3%82%92%201%20%E3%82%B3%E3%83%9E%2080%20ms%20%E3%81%A7%E5%86%8D%E7%94%9F%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E5%86%8D%E7%94%9F%E6%99%82%E9%96%93%E3%81%AF%E7%B4%84%207.8%20%E7%A7%92%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(artifacts_dir%2C%20dx_diff%2C%20np%2C%20plt%2C%20save_gif%2C%20t_diff%2C%20u_diff%2C%20x_diff)%3A%0A%20%20%20%20def%20_exact(t)%3A%0A%20%20%20%20%20%20%20%20return%20np.exp(-(x_diff**2)%20%2F%20(4%20*%20t))%20%2F%20np.sqrt(4%20*%20np.pi%20*%20t)%0A%0A%20%20%20%20_l2_error%20%3D%20np.sqrt(dx_diff)%20*%20np.linalg.norm(u_diff%5B-1%5D%20-%20_exact(t_diff%5B-1%5D))%0A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.4%2C%203.6)%2C%20dpi%3D100)%0A%20%20%20%20_ax.set_xlim(-1.5%2C%201.5)%0A%20%20%20%20_ax.set_ylim(0%2C%205)%0A%20%20%20%20_ax.set_xlabel(%22%24x%24%22)%0A%20%20%20%20_ax.set_ylabel(%22%24u%24%22)%0A%20%20%20%20_numeric%2C%20%3D%20_ax.plot(%5B%5D%2C%20%5B%5D%2C%20lw%3D1.8%2C%20label%3D%22finite%20difference%22)%0A%20%20%20%20_exact_line%2C%20%3D%20_ax.plot(%5B%5D%2C%20%5B%5D%2C%20lw%3D1.2%2C%20ls%3D%22--%22%2C%20color%3D%22crimson%22%2C%20label%3D%22heat%20kernel%22)%0A%20%20%20%20_ax.legend(loc%3D%22upper%20right%22)%0A%20%20%20%20_title%20%3D%20_ax.set_title(%22diffusion%2C%20t%20%3D%200.000%22)%0A%20%20%20%20_fig.tight_layout()%0A%0A%20%20%20%20def%20_update(frame)%3A%0A%20%20%20%20%20%20%20%20_numeric.set_data(x_diff%2C%20u_diff%5Bframe%5D)%0A%20%20%20%20%20%20%20%20_exact_line.set_data(x_diff%2C%20_exact(t_diff%5Bframe%5D))%0A%20%20%20%20%20%20%20%20_title.set_text(f%22diffusion%2C%20t%20%3D%20%7Bt_diff%5Bframe%5D%3A.3f%7D%22)%0A%20%20%20%20%20%20%20%20return%20(_numeric%2C%20_exact_line%2C%20_title)%0A%0A%20%20%20%20diffusion_1d_gif%20%3D%20artifacts_dir%20%2F%20%22diffusion_1d.gif%22%0A%20%20%20%20(%0A%20%20%20%20%20%20%20%20save_gif(_fig%2C%20_update%2C%20len(t_diff)%2C%20diffusion_1d_gif%2C%20interval%3D80)%2C%0A%20%20%20%20%20%20%20%20f%22%E6%9C%80%E7%B5%82%E6%99%82%E5%88%BB%E3%81%AE%20L2%20%E8%AA%A4%E5%B7%AE%20%3D%20%7B_l2_error%3A.2e%7D%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(diffusion_1d_gif%2C)%0A%0A%0A%40app.cell%0Adef%20_(diffusion_1d_gif%2C%20gif_image)%3A%0A%20%20%20%20gif_image(diffusion_1d_gif%2C%20alt%3D%221%E6%AC%A1%E5%85%83%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AE%E6%99%82%E9%96%93%E7%99%BA%E5%B1%95%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E6%95%B0%E5%80%A4%E8%A7%A3%E3%81%A8%E5%8E%B3%E5%AF%86%E8%A7%A3%E3%81%AF%E7%9B%AE%E8%A6%96%E3%81%A7%E3%81%AF%E5%8C%BA%E5%88%A5%E3%81%A7%E3%81%8D%E3%81%9A%E3%80%81%E6%9C%80%E7%B5%82%E6%99%82%E5%88%BB%E3%81%A7%E3%81%AE%20%24L%5E2%24%20%E8%AA%A4%E5%B7%AE%E3%82%82%20%2410%5E%7B-5%7D%24%20%E7%A8%8B%E5%BA%A6%E3%81%AB%0A%20%20%20%20%E5%8F%8E%E3%81%BE%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E5%88%86%E5%B8%83%E3%81%AE%E5%B9%85%E3%81%AF%20%24%5Csqrt%7B2Dt%7D%24%20%E3%81%A7%E5%BA%83%E3%81%8C%E3%82%8A%E3%80%81%E3%83%94%E3%83%BC%E3%82%AF%E3%81%AF%20%241%2F%5Csqrt%7B4%5Cpi%20Dt%7D%24%20%E3%81%A7%0A%20%20%20%20%E4%B8%8B%E3%81%8C%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%24t%24%20%E3%81%8C%204%20%E5%80%8D%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%83%94%E3%83%BC%E3%82%AF%E3%81%AF%E5%8D%8A%E5%88%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%8C%E5%8F%8C%E6%9B%B2%E5%9E%8B%E3%81%A8%E3%81%AE%E6%B1%BA%E5%AE%9A%E7%9A%84%E3%81%AA%E9%81%95%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%E6%B3%A2%E5%8B%95%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A7%E3%81%AF%E6%B3%A2%E5%BD%A2%E3%81%8C%E5%BD%A2%E3%82%92%E4%BF%9D%E3%81%A3%E3%81%A6%E4%BC%9D%E3%82%8F%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%0A%20%20%20%20%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A7%E3%81%AF%E9%AB%98%E5%91%A8%E6%B3%A2%E6%88%90%E5%88%86%E3%81%BB%E3%81%A9%E9%80%9F%E3%81%8F%E6%B8%9B%E8%A1%B0%E3%81%97%EF%BC%88%E6%B3%A2%E6%95%B0%20%24k%24%20%E3%81%AE%E6%88%90%E5%88%86%E3%81%AF%20%24e%5E%7B-Dk%5E2t%7D%24%EF%BC%89%E3%80%81%0A%20%20%20%20%E3%81%A9%E3%82%93%E3%81%AA%E5%88%9D%E6%9C%9F%E5%88%86%E5%B8%83%E3%82%82%E6%9C%80%E7%B5%82%E7%9A%84%E3%81%AB%E6%BB%91%E3%82%89%E3%81%8B%E3%81%AA%E3%82%AC%E3%82%A6%E3%82%B9%E5%88%86%E5%B8%83%E3%81%B8%E8%BF%91%E3%81%A5%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E9%9D%9E%E7%B7%9A%E5%BD%A2%E6%80%A7%E3%81%AE%E3%81%82%E3%82%8B%E6%94%BE%E7%89%A9%E5%9E%8B%3A%20%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7B%E2%88%82u(x%2Ct)%7D%7B%E2%88%82t%7D%3D-u(x%2Ct)%5Cfrac%7B%E2%88%82u(x%2Ct)%7D%7B%E2%88%82x%7D%2BD%5Cfrac%7B%E2%88%82%5E2u(x%2Ct)%7D%7B%E2%88%82x%5E2%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%AF%E3%80%81%E7%A7%BB%E6%B5%81%E9%A0%85%20%24-uu_x%24%20%E3%81%A8%E6%8B%A1%E6%95%A3%E9%A0%85%20%24Du_%7Bxx%7D%24%20%E3%81%AE%E7%AB%B6%E5%90%88%E3%82%92%E6%9C%80%E5%B0%8F%E6%A7%8B%E6%88%90%E3%81%A7%E8%A1%A8%E3%81%97%E3%81%9F%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%E7%A7%BB%E6%B5%81%E9%A0%85%E3%81%AF%E3%80%8C%E5%80%A4%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%84%E3%81%A8%E3%81%93%E3%82%8D%E3%81%BB%E3%81%A9%E9%80%9F%E3%81%8F%E5%8B%95%E3%81%8F%E3%80%8D%E3%81%9F%E3%82%81%E6%B3%A2%E5%BD%A2%E3%82%92%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%9F%E3%81%9B%E3%80%81%0A%20%20%20%20%E6%8B%A1%E6%95%A3%E9%A0%85%E3%81%AF%E3%81%9D%E3%82%8C%E3%82%92%E9%88%8D%E3%82%89%E3%81%9B%E3%81%BE%E3%81%99%E3%80%82%E4%B8%A1%E8%80%85%E3%81%8C%E9%87%A3%E3%82%8A%E5%90%88%E3%81%A3%E3%81%9F%E5%AE%9A%E5%B8%B8%E6%A7%8B%E9%80%A0%E3%81%8C%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%A7%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E6%AC%A1%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%81%A7%E8%A7%A3%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20-%20%E6%8B%A1%E6%95%A3%E4%BF%82%E6%95%B0%20%24D%3D0.01%24%0A%20%20%20%20-%20%E7%A9%BA%E9%96%93%E9%A0%98%E5%9F%9F%20%24x%5Cin%5B0%2C1%5D%24%E3%80%81%E7%A9%BA%E9%96%93%E5%88%BB%E3%81%BF%20%24h%3D0.005%24%EF%BC%88%E6%A0%BC%E5%AD%90%E7%82%B9%20200%20%E5%80%8B%EF%BC%89%0A%20%20%20%20-%20%E6%99%82%E9%96%93%E7%AF%84%E5%9B%B2%20%24t%5Cin%5B0%2C2%5D%24%E3%80%811%20%E3%82%B3%E3%83%9E%20%24%CE%94t_%7B%5Ctext%7Bframe%7D%7D%3D0.01%24%EF%BC%88201%20%E3%82%B3%E3%83%9E%EF%BC%89%0A%20%20%20%20-%20%E5%A2%83%E7%95%8C%E6%9D%A1%E4%BB%B6%20%24u(0%2Ct)%3Du(1%2Ct)%3D0%24%0A%20%20%20%20-%20%E5%88%9D%E6%9C%9F%E6%9D%A1%E4%BB%B6%20%24u(x%2C0)%3D%5Csin(2%5Cpi%20x)%24%0A%0A%20%20%20%20%E7%A9%BA%E9%96%93%E5%88%BB%E3%81%BF%E3%82%92%20%24h%3D0.02%24%20%E3%81%8B%E3%82%89%20%24h%3D0.005%24%20%E3%81%B8%E7%B4%B0%E3%81%8B%E3%81%8F%E3%81%97%E3%81%9F%E3%81%AE%E3%81%AF%E3%80%81%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%AE%E5%8E%9A%E3%81%BF%E3%81%8C%0A%20%20%20%20%24%5Csim%20D%2F%5Cmax%7Cu%7C%3D0.01%24%20%E7%A8%8B%E5%BA%A6%E3%81%97%E3%81%8B%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%A7%E3%81%99%E3%80%82%24h%3D0.02%24%20%E3%81%A7%E3%81%AF%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%8C%0A%20%20%20%20%E6%A0%BC%E5%AD%90%201%20%E5%80%8B%E5%88%86%E3%82%88%E3%82%8A%E8%96%84%E3%81%8F%E3%81%AA%E3%82%8A%E3%80%81%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%A3%E3%81%9F%E9%83%A8%E5%88%86%E3%81%AB%E9%9D%9E%E7%89%A9%E7%90%86%E7%9A%84%E3%81%AA%E6%8C%AF%E5%8B%95%E3%81%8C%E5%87%BA%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%24h%3D0.005%24%20%E3%81%AA%E3%82%89%E9%81%B7%E7%A7%BB%E5%B1%A4%E3%81%AB%202%E3%80%9C4%20%E7%82%B9%E3%81%8C%E5%85%A5%E3%82%8A%E3%80%81%E6%BB%91%E3%82%89%E3%81%8B%E3%81%AB%E8%A7%A3%E5%83%8F%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20diffusion_const%20%3D%200.01%0A%20%20%20%20dx_burgers%20%3D%200.005%0A%20%20%20%20x_burgers%20%3D%20np.arange(0%2C%201%2C%20dx_burgers)%0A%20%20%20%20n_burgers%20%3D%20len(x_burgers)%0A%0A%20%20%20%20t_max_burgers%20%3D%202.0%0A%20%20%20%20frame_dt_burgers%20%3D%200.01%0A%20%20%20%20t_burgers%20%3D%20np.arange(0%2C%20t_max_burgers%20%2B%200.5%20*%20frame_dt_burgers%2C%20frame_dt_burgers)%0A%0A%20%20%20%20u0_burgers%20%3D%20np.sin(2%20*%20np.pi%20*%20x_burgers)%0A%0A%20%20%20%20f%22%E6%A0%BC%E5%AD%90%E7%82%B9%20%7Bn_burgers%7D%20%E5%80%8B%2C%20%E3%82%B3%E3%83%9E%E6%95%B0%20%7Blen(t_burgers)%7D%2C%20%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%AE%E5%8E%9A%E3%81%BF%20~%20D%2Fmax%7Cu%7C%20%3D%20%7Bdiffusion_const%7D%22%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20diffusion_const%2C%0A%20%20%20%20%20%20%20%20dx_burgers%2C%0A%20%20%20%20%20%20%20%20frame_dt_burgers%2C%0A%20%20%20%20%20%20%20%20n_burgers%2C%0A%20%20%20%20%20%20%20%20t_burgers%2C%0A%20%20%20%20%20%20%20%20t_max_burgers%2C%0A%20%20%20%20%20%20%20%20u0_burgers%2C%0A%20%20%20%20%20%20%20%20x_burgers%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E5%8F%B3%E8%BE%BA%E3%81%AF%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A8%E5%90%8C%E3%81%98%E5%B7%AE%E5%88%86%E8%A1%8C%E5%88%97%E3%81%8B%E3%82%89%E7%B5%84%E3%81%BF%E7%AB%8B%E3%81%A6%E3%81%BE%E3%81%99%E3%80%82%E7%95%B0%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E7%A7%BB%E6%B5%81%E9%A0%85%E3%81%8C%0A%20%20%20%20%60-u%20*%20(first%20%40%20u)%60%20%E3%81%A8%E3%81%84%E3%81%86%20%24u%24%20%E3%81%AE%E4%BA%8C%E6%AC%A1%E5%BD%A2%E5%BC%8F%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E7%82%B9%E3%81%A0%E3%81%91%E3%81%A7%E3%80%81%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%8C%E9%9D%9E%E7%B7%9A%E5%BD%A2%E6%80%A7%E3%81%AE%E5%87%BA%E3%81%A9%E3%81%93%E3%82%8D%E3%81%A7%E3%81%99%E3%80%82%E8%A1%8C%E5%88%97%E3%81%A8%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%81%AE%E7%A9%8D%E3%81%8C%E6%AF%8E%E5%9B%9E%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%0A%20%20%20%20%E5%8F%B3%E8%BE%BA%E3%81%AE%E8%A9%95%E4%BE%A1%E5%9B%9E%E6%95%B0%E3%81%AF%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%82%88%E3%82%8A%E5%A2%97%E3%81%88%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E5%87%BA%E5%8A%9B%E3%81%AF%20%24t%3D0%24%20%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%202%20%E3%81%A4%E3%81%AE%E9%A0%85%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%95%E3%81%A7%E3%81%99%E3%80%82%E7%A7%BB%E6%B5%81%E9%A0%85%E3%81%8C%20%24%5Cpi%5Csimeq3.14%24%E3%80%81%0A%20%20%20%20%E6%8B%A1%E6%95%A3%E9%A0%85%E3%81%8C%20%244%5Cpi%5E2D%5Csimeq0.39%24%20%E3%81%A7%E3%80%81%E5%88%9D%E6%9C%9F%E7%8A%B6%E6%85%8B%E3%81%A7%E3%81%AF%E7%A7%BB%E6%B5%81%E9%A0%85%E3%81%8C%201%20%E6%A1%81%E5%A4%A7%E3%81%8D%E3%81%8F%E3%80%81%0A%20%20%20%20%E6%B3%A2%E5%BD%A2%E3%82%92%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%9F%E3%81%9B%E3%82%8B%E5%83%8D%E3%81%8D%E3%81%8C%E5%84%AA%E5%8B%A2%E3%81%A0%E3%81%A8%E5%88%86%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%A3%E3%81%A6%20%24u_%7Bxx%7D%24%20%E3%81%8C%0A%20%20%20%20%E5%A4%A7%E3%81%8D%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%A8%E6%8B%A1%E6%95%A3%E9%A0%85%E3%81%8C%E8%BF%BD%E3%81%84%E3%81%A4%E3%81%8D%E3%80%81%E3%81%9D%E3%81%93%E3%81%A7%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%AE%E5%8E%9A%E3%81%BF%E3%81%8C%E6%B1%BA%E3%81%BE%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20derivative_matrices%2C%0A%20%20%20%20diffusion_const%2C%0A%20%20%20%20dx_burgers%2C%0A%20%20%20%20n_burgers%2C%0A%20%20%20%20np%2C%0A%20%20%20%20u0_burgers%2C%0A)%3A%0A%20%20%20%20_first%2C%20_second%20%3D%20derivative_matrices(n_burgers%2C%20dx_burgers)%0A%0A%20%20%20%20def%20burgers_rhs(_t%2C%20u)%3A%0A%20%20%20%20%20%20%20%20return%20-u%20*%20(_first%20%40%20u)%20%2B%20diffusion_const%20*%20(_second%20%40%20u)%0A%0A%20%20%20%20%23%20%E4%B8%A1%E7%AB%AF%E3%81%AE%E8%A1%8C%E3%81%AF%E7%89%87%E5%81%B4%E3%81%AE%E3%82%B7%E3%83%95%E3%83%88%E6%88%90%E5%88%86%E3%82%92%E8%90%BD%E3%81%A8%E3%81%97%E3%81%A6%E3%81%82%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E5%A4%A7%E3%81%8D%E3%81%95%E3%81%AE%E6%AF%94%E8%BC%83%E3%81%AF%E5%86%85%E7%82%B9%E3%81%A7%E8%A1%8C%E3%81%86%E3%80%82%0A%20%20%20%20_advection%20%3D%20(-u0_burgers%20*%20(_first%20%40%20u0_burgers))%5B1%3A-1%5D%0A%20%20%20%20_diffusion%20%3D%20(diffusion_const%20*%20(_second%20%40%20u0_burgers))%5B1%3A-1%5D%0A%20%20%20%20(%0A%20%20%20%20%20%20%20%20f%22t%3D0%20%E3%81%AE%E5%86%85%E7%82%B9%E3%81%A7%E3%81%AE%E7%A7%BB%E6%B5%81%E9%A0%85%E3%81%AE%E6%9C%80%E5%A4%A7%E5%80%A4%20%7Bnp.abs(_advection).max()%3A.2f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22%E6%8B%A1%E6%95%A3%E9%A0%85%E3%81%AE%E6%9C%80%E5%A4%A7%E5%80%A4%20%7Bnp.abs(_diffusion).max()%3A.2f%7D%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(burgers_rhs%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20burgers_rhs%2C%0A%20%20%20%20frame_dt_burgers%2C%0A%20%20%20%20solve_ivp%2C%0A%20%20%20%20t_burgers%2C%0A%20%20%20%20t_max_burgers%2C%0A%20%20%20%20u0_burgers%2C%0A)%3A%0A%20%20%20%20_sol%20%3D%20solve_ivp(%0A%20%20%20%20%20%20%20%20burgers_rhs%2C%0A%20%20%20%20%20%20%20%20t_span%3D(0%2C%20t_max_burgers)%2C%0A%20%20%20%20%20%20%20%20y0%3Du0_burgers%2C%0A%20%20%20%20%20%20%20%20method%3D%22RK45%22%2C%0A%20%20%20%20%20%20%20%20t_eval%3Dt_burgers%2C%0A%20%20%20%20%20%20%20%20max_step%3Dframe_dt_burgers%2C%0A%20%20%20%20%20%20%20%20rtol%3D1e-8%2C%0A%20%20%20%20%20%20%20%20atol%3D1e-10%2C%0A%20%20%20%20)%0A%20%20%20%20if%20not%20_sol.success%3A%0A%20%20%20%20%20%20%20%20raise%20RuntimeError(_sol.message)%0A%20%20%20%20u_burgers%20%3D%20_sol.y.T%0A%0A%20%20%20%20f%22success%3D%7B_sol.success%7D%2C%20%E5%8F%B3%E8%BE%BA%E8%A9%95%E4%BE%A1%20%7B_sol.nfev%7D%20%E5%9B%9E%2C%20%E6%8C%AF%E5%B9%85%20%7Babs(u_burgers%5B0%5D).max()%3A.3f%7D%20-%3E%20%7Babs(u_burgers%5B-1%5D).max()%3A.3f%7D%22%0A%20%20%20%20return%20(u_burgers%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E6%99%82%E7%A9%BA%E9%96%93%E3%83%80%E3%82%A4%E3%82%A2%E3%82%B0%E3%83%A9%E3%83%A0%0A%0A%20%20%20%20%E6%A8%AA%E8%BB%B8%20%24x%24%E3%83%BB%E7%B8%A6%E8%BB%B8%20%24t%24%20%E3%81%A7%20%24u(x%2Ct)%24%20%E3%82%92%E4%B8%80%E6%9E%9A%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%24x%5Csimeq0.5%24%20%E3%81%AB%E5%90%91%E3%81%8B%E3%81%A3%E3%81%A6%0A%20%20%20%20%E7%AD%89%E5%80%A4%E7%B7%9A%E3%81%8C%E9%9B%86%E3%81%BE%E3%82%8A%E3%80%81%E3%81%9D%E3%81%93%E3%81%8B%E3%82%89%E4%B8%8A%E3%81%B8%E7%B4%B0%E3%81%84%E7%95%8C%E9%9D%A2%E3%81%8C%E3%81%BE%E3%81%A3%E3%81%99%E3%81%90%E4%BC%B8%E3%81%B3%E3%82%8B%E6%A7%98%E5%AD%90%E3%81%8C%E8%A6%8B%E3%81%88%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E3%81%93%E3%81%AE%E7%95%8C%E9%9D%A2%E3%81%8C%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plt%2C%20t_burgers%2C%20u_burgers%2C%20x_burgers)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(5.6%2C%204.0)%2C%20dpi%3D100)%0A%20%20%20%20_im%20%3D%20_ax.imshow(%0A%20%20%20%20%20%20%20%20u_burgers%2C%0A%20%20%20%20%20%20%20%20origin%3D%22lower%22%2C%0A%20%20%20%20%20%20%20%20aspect%3D%22auto%22%2C%0A%20%20%20%20%20%20%20%20cmap%3D%22RdBu_r%22%2C%0A%20%20%20%20%20%20%20%20vmin%3D-1%2C%0A%20%20%20%20%20%20%20%20vmax%3D1%2C%0A%20%20%20%20%20%20%20%20extent%3D%5Bx_burgers%5B0%5D%2C%20x_burgers%5B-1%5D%2C%20t_burgers%5B0%5D%2C%20t_burgers%5B-1%5D%5D%2C%0A%20%20%20%20)%0A%20%20%20%20_ax.set_xlabel(%22%24x%24%22)%0A%20%20%20%20_ax.set_ylabel(%22%24t%24%22)%0A%20%20%20%20_ax.set_title(%22space-time%20diagram%20of%20%24u(x%2Ct)%24%22)%0A%20%20%20%20_fig.colorbar(_im%2C%20ax%3D_ax)%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%0A%0A%20%20%20%20201%20%E3%82%B3%E3%83%9E%E3%82%92%201%20%E3%82%B3%E3%83%9E%2050%20ms%20%E3%81%A7%E5%86%8D%E7%94%9F%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E5%86%8D%E7%94%9F%E6%99%82%E9%96%93%E3%81%AF%E7%B4%84%2010%20%E7%A7%92%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(artifacts_dir%2C%20plt%2C%20save_gif%2C%20t_burgers%2C%20u_burgers%2C%20x_burgers)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.4%2C%203.6)%2C%20dpi%3D100)%0A%20%20%20%20_ax.set_xlim(0%2C%201)%0A%20%20%20%20_ax.set_ylim(-1.05%2C%201.05)%0A%20%20%20%20_ax.set_xlabel(%22%24x%24%22)%0A%20%20%20%20_ax.set_ylabel(%22%24u%24%22)%0A%20%20%20%20_ax.axhline(0%2C%20lw%3D0.5%2C%20color%3D%220.7%22)%0A%20%20%20%20_line%2C%20%3D%20_ax.plot(%5B%5D%2C%20%5B%5D%2C%20lw%3D1.6)%0A%20%20%20%20_title%20%3D%20_ax.set_title(%22Burgers%2C%20t%20%3D%200.000%22)%0A%20%20%20%20_fig.tight_layout()%0A%0A%20%20%20%20def%20_update(frame)%3A%0A%20%20%20%20%20%20%20%20_line.set_data(x_burgers%2C%20u_burgers%5Bframe%5D)%0A%20%20%20%20%20%20%20%20_title.set_text(f%22Burgers%2C%20t%20%3D%20%7Bt_burgers%5Bframe%5D%3A.3f%7D%22)%0A%20%20%20%20%20%20%20%20return%20(_line%2C%20_title)%0A%0A%20%20%20%20burgers_1d_gif%20%3D%20artifacts_dir%20%2F%20%22burgers_1d.gif%22%0A%20%20%20%20save_gif(_fig%2C%20_update%2C%20len(t_burgers)%2C%20burgers_1d_gif%2C%20interval%3D50)%0A%20%20%20%20return%20(burgers_1d_gif%2C)%0A%0A%0A%40app.cell%0Adef%20_(burgers_1d_gif%2C%20gif_image)%3A%0A%20%20%20%20gif_image(burgers_1d_gif%2C%20alt%3D%22%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AE%E6%99%82%E9%96%93%E7%99%BA%E5%B1%95%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E6%AC%A1%E3%81%AE%203%20%E3%81%A4%E3%81%AE%E5%B1%80%E9%9D%A2%E3%81%AB%E5%88%86%E3%81%8B%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%201.%20%24t%5Clesssim0.2%24%3A%20%E6%AD%A3%E5%BC%A6%E6%B3%A2%E3%81%AE%E4%B8%8B%E3%82%8A%E5%9D%82%E3%81%8C%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%81%8F%E3%80%82%24u%24%20%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%84%E9%83%A8%E5%88%86%E3%81%8C%0A%20%20%20%20%20%20%20%E9%80%9F%E3%81%8F%E5%8F%B3%E3%81%B8%E5%8B%95%E3%81%8F%E3%81%9F%E3%82%81%E3%81%A7%E3%80%81%E7%B2%98%E6%80%A7%E3%81%8C%E7%84%A1%E3%81%91%E3%82%8C%E3%81%B0%20%24t%3D1%2F(2%5Cpi)%5Csimeq0.16%24%20%E3%81%A7%0A%20%20%20%20%20%20%20%E5%8B%BE%E9%85%8D%E3%81%8C%E7%84%A1%E9%99%90%E5%A4%A7%E3%81%AB%E3%81%AA%E3%82%8B%EF%BC%88%E6%B3%A2%E3%81%AE%E7%AA%81%E3%81%A3%E7%AB%8B%E3%81%A1%EF%BC%89%E3%80%82%0A%20%20%20%202.%20%24t%5Csimeq0.2%24%E3%80%9C%240.5%24%3A%20%E5%8B%BE%E9%85%8D%E3%81%8C%20%241%2FD%24%20%E7%A8%8B%E5%BA%A6%E3%81%A7%E9%A0%AD%E6%89%93%E3%81%A1%E3%81%AB%E3%81%AA%E3%82%8A%E3%80%81%E5%8E%9A%E3%81%BF%20%24%5Csim%20D%24%20%E3%81%AE%0A%20%20%20%20%20%20%20%E8%A1%9D%E6%92%83%E6%B3%A2%E3%81%8C%20%24x%5Csimeq0.5%24%20%E3%81%AB%E7%AB%8B%E3%81%A4%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E7%A7%BB%E6%B5%81%E3%81%A8%E6%8B%A1%E6%95%A3%E3%81%8C%E9%87%A3%E3%82%8A%E5%90%88%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%20%20%20%203.%20%24t%5Cgtrsim0.5%24%3A%20%E8%A1%9D%E6%92%83%E6%B3%A2%E3%82%92%E9%80%9A%E3%81%98%E3%81%A6%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E3%81%8C%E6%95%A3%E9%80%B8%E3%81%97%E3%80%81%E4%B8%89%E8%A7%92%E6%B3%A2%E7%8A%B6%E3%81%AE%E6%B3%A2%E5%BD%A2%E3%81%8C%0A%20%20%20%20%20%20%20%E5%85%A8%E4%BD%93%E3%81%A8%E3%81%97%E3%81%A6%E6%B8%9B%E8%A1%B0%E3%81%99%E3%82%8B%E3%80%82%24t%3D2%24%20%E3%81%A7%E3%81%AF%E6%8C%AF%E5%B9%85%E3%81%8C%E5%88%9D%E6%9C%9F%E3%81%AE%201%2F6%20%E7%A8%8B%E5%BA%A6%E3%81%BE%E3%81%A7%E8%90%BD%E3%81%A1%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E6%8C%AF%E5%B9%85%E3%81%8C%E5%8D%98%E8%AA%BF%E3%81%AB%E6%B8%9B%E3%82%8B%E7%82%B9%E3%81%AF%E6%8B%A1%E6%95%A3%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A8%E5%90%8C%E3%81%98%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E6%B8%9B%E8%A1%B0%E3%81%AE%E4%B8%BB%E5%BD%B9%E3%81%8C%0A%20%20%20%20%E3%80%8C%E3%81%AA%E3%81%A0%E3%82%89%E3%81%8B%E3%81%AB%E3%81%AA%E3%82%89%E3%81%99%E6%8B%A1%E6%95%A3%E3%80%8D%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%80%8C%E9%9D%9E%E7%B7%9A%E5%BD%A2%E3%81%A7%E4%BD%9C%E3%82%89%E3%82%8C%E3%81%9F%E6%80%A5%E5%B3%BB%E3%81%AA%E7%95%8C%E9%9D%A2%E3%81%A7%E3%81%AE%E6%95%A3%E9%80%B8%E3%80%8D%E3%81%AB%0A%20%20%20%20%E5%A4%89%E3%82%8F%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8C%E9%9D%9E%E7%B7%9A%E5%BD%A2%E6%80%A7%E3%81%AE%E5%8A%B9%E6%9E%9C%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E9%9D%9E%E7%B7%9A%E5%BD%A2%E3%81%A8%203%20%E9%9A%8E%E5%BE%AE%E5%88%86%E3%82%92%E5%90%AB%E3%82%80%E6%96%B9%E7%A8%8B%E5%BC%8F%3A%20KdV%20%E6%96%B9%E7%A8%8B%E5%BC%8F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%5Bpython%20%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%88%E7%AE%97%E7%89%A9%E7%90%86%5D(http%3A%2F%2Fwww.physics.okayama-u.ac.jp%2F~otsuki%2Flecture%2FCompPhys2%2Fpde%2Fkdv.html)%0A%20%20%20%20%E3%81%8B%E3%82%89%E7%A7%BB%E6%A4%8D%E3%81%97%E3%81%9F%E8%A8%AD%E5%AE%9A%E3%81%A7%E3%80%81KdV%20%E6%96%B9%E7%A8%8B%E5%BC%8F%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7B%E2%88%82u(x%2Ct)%7D%7B%E2%88%82t%7D%2B6u(x%2Ct)%5Cfrac%7B%E2%88%82u(x%2Ct)%7D%7B%E2%88%82x%7D%2B%5Cfrac%7B%E2%88%82%5E3u(x%2Ct)%7D%7B%E2%88%82x%5E3%7D%3D0%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%82%92%E5%88%9D%E6%9C%9F%E5%80%A4%E5%95%8F%E9%A1%8C%E3%81%A8%E3%81%97%E3%81%A6%E8%A7%A3%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%E7%A9%BA%E9%96%93%E6%96%B9%E5%90%91%E3%81%AF%E5%91%A8%E6%9C%9F%E5%A2%83%E7%95%8C%E6%9D%A1%E4%BB%B6%E3%81%A7%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AE%E6%8B%A1%E6%95%A3%E9%A0%85%20%24Du_%7Bxx%7D%24%20%E3%81%8C%E3%80%81%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%E5%88%86%E6%95%A3%E9%A0%85%20%24-u_%7Bxxx%7D%24%20%E3%81%AB%0A%20%20%20%20%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%82%8F%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E6%8B%A1%E6%95%A3%E9%A0%85%E3%81%8C%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E3%82%92%E6%95%A3%E9%80%B8%E3%81%95%E3%81%9B%E3%81%9F%E3%81%AE%E3%81%AB%E5%AF%BE%E3%81%97%E3%80%81%E5%88%86%E6%95%A3%E9%A0%85%E3%81%AF%0A%20%20%20%20%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%9F%E3%81%BE%E3%81%BE%E6%B3%A2%E6%95%B0%E3%81%94%E3%81%A8%E3%81%AB%E4%BD%8D%E7%9B%B8%E9%80%9F%E5%BA%A6%E3%82%92%E5%A4%89%E3%81%88%E3%81%BE%E3%81%99%E3%80%82%E3%81%9D%E3%81%AE%E7%B5%90%E6%9E%9C%E3%80%81%0A%20%20%20%20%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%A3%E3%81%9F%E6%B3%A2%E9%9D%A2%E3%81%AF%E3%80%8C%E9%88%8D%E3%82%8B%E3%80%8D%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F**%E6%8C%AF%E5%8B%95%E3%81%99%E3%82%8B%E5%88%97%E3%81%AB%E5%88%86%E8%A7%A3**%E3%81%95%E3%82%8C%E3%80%81%0A%20%20%20%20%E6%9C%80%E7%B5%82%E7%9A%84%E3%81%AB%E6%8C%AF%E5%B9%85%E3%81%A8%E9%80%9F%E5%BA%A6%E3%81%8C%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%9F%E5%AD%A4%E7%AB%8B%E6%B3%A2%EF%BC%88%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%EF%BC%89%E3%81%AE%E5%88%97%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E6%AC%A1%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%81%A7%E8%A7%A3%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20-%20%E7%A9%BA%E9%96%93%E9%A0%98%E5%9F%9F%20%24x%5Cin%5B0%2C100)%24%E3%80%81%E6%A0%BC%E5%AD%90%E7%82%B9%20%24n_x%3D512%24%EF%BC%88%24h%5Csimeq0.195%24%EF%BC%89%0A%20%20%20%20-%20%E6%99%82%E9%96%93%E7%AF%84%E5%9B%B2%20%24t%5Cin%5B0%2C10%5D%24%E3%80%81%E3%82%B3%E3%83%9E%E6%95%B0%20161%0A%20%20%20%20-%20%E5%88%9D%E6%9C%9F%E6%9D%A1%E4%BB%B6%20%24u(x%2C0)%3D%5Csin(2%5Cpi%20x%2F100)%24%0A%0A%20%20%20%20%E3%82%82%E3%81%A8%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AF%20%24n_x%3D200%24%E3%80%81%24t%5Cleq4%24%20%E3%81%A7%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E3%81%93%E3%81%AE%E6%A0%BC%E5%AD%90%E3%81%A7%E3%81%AF%E5%88%86%E6%95%A3%E9%A0%85%E3%81%8C%E8%A7%A3%E5%83%8F%E3%81%A7%E3%81%8D%E3%81%9A%E3%80%81%0A%20%20%20%20%24t%5Csimeq3.17%24%20%E3%81%A7%20%60solve_ivp%60%20%E3%81%8C%0A%20%20%20%20%60Required%20step%20size%20is%20less%20than%20spacing%20between%20numbers.%60%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%A6%0A%20%20%20%20%E7%A9%8D%E5%88%86%E3%81%8C%E7%A0%B4%E7%B6%BB%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%60sol.success%60%20%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%9F%E3%82%81%E3%80%81%0A%20%20%20%20%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%BE%8C%E5%8D%8A%E3%81%AB%E3%81%AF%E7%99%BA%E6%95%A3%E3%81%97%E3%81%9F%E5%80%A4%E3%81%8C%E6%8F%8F%E3%81%8B%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%0A%20%20%20%20%24n_x%3D512%24%20%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E6%9C%80%E5%BE%8C%E3%81%BE%E3%81%A7%E5%AE%89%E5%AE%9A%E3%81%AB%E7%A9%8D%E5%88%86%E3%81%A7%E3%81%8D%E3%80%81%24n_x%3D1024%24%20%E3%81%A7%E8%A8%88%E7%AE%97%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%A8%0A%20%20%20%20%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%E3%81%AE%E6%9C%AC%E6%95%B0%E3%82%82%E4%BD%8D%E7%BD%AE%E3%82%82%E4%B8%80%E8%87%B4%E3%81%97%E3%81%BE%E3%81%99%EF%BC%88%E5%B0%96%E9%A0%AD%E3%81%AE%E9%AB%98%E3%81%95%E3%81%A0%E3%81%91%E3%81%AF%E6%A0%BC%E5%AD%90%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%97%E3%80%81%0A%20%20%20%20%24n_x%3D512%24%20%E3%81%A7%202.97%E3%80%81%24n_x%3D1024%24%20%E3%81%A7%202.83%20%E3%81%A8%E6%95%B0%20%25%20%E5%A4%89%E3%82%8F%E3%82%8A%E3%81%BE%E3%81%99%EF%BC%89%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E7%A9%BA%E9%96%93%E5%B7%AE%E5%88%86%E3%81%AE%E4%BF%82%E6%95%B0%E8%A1%8C%E5%88%97%0A%0A%20%20%20%20%E5%91%A8%E6%9C%9F%E5%A2%83%E7%95%8C%E6%9D%A1%E4%BB%B6%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%60np.roll%60%20%E3%81%A7%E5%8D%98%E4%BD%8D%E8%A1%8C%E5%88%97%E3%81%AE%E5%88%97%E3%82%92%E5%B7%A1%E5%9B%9E%E3%81%95%E3%81%9B%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%0A%20%20%20%20%E9%9A%A3%E6%8E%A5%E7%82%B9%E3%82%92%E6%8C%87%E3%81%99%E8%A1%8C%E5%88%97%E3%81%8C%E4%BD%9C%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%E5%B7%A6%E7%AB%AF%E3%81%AE%201%20%E3%81%A4%E6%89%8B%E5%89%8D%E3%81%8C%E5%8F%B3%E7%AB%AF%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%203%20%E9%9A%8E%E5%BE%AE%E5%88%86%E3%81%AB%E3%81%AF%205%20%E7%82%B9%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%AB%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cfrac%7B%E2%88%82%5E3f%7D%7B%E2%88%82x%5E3%7D(x_i)%5Csimeq%5Cfrac%7Bf_%7Bi%2B2%7D-2f_%7Bi%2B1%7D%2B2f_%7Bi-1%7D-f_%7Bi-2%7D%7D%7B2h%5E3%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%82%92%E4%BD%BF%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%241%2Fh%5E3%24%20%E3%81%A8%E3%81%84%E3%81%86%E5%9B%A0%E5%AD%90%E3%81%AE%E3%81%9F%E3%82%81%E3%80%81%24h%24%20%E3%82%92%E5%8D%8A%E5%88%86%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E4%BF%82%E6%95%B0%E3%81%AF%208%20%E5%80%8D%E3%81%AB%E3%81%AA%E3%82%8A%E3%80%81%0A%20%20%20%20%E9%99%BD%E8%A7%A3%E6%B3%95%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E6%99%82%E9%96%93%E5%88%BB%E3%81%BF%E3%82%82%E6%80%A5%E6%BF%80%E3%81%AB%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E3%81%93%E3%82%8C%E3%81%8C%20KdV%20%E3%81%AE%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97%E3%82%92%E9%87%8D%E3%81%8F%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E7%90%86%E7%94%B1%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20sparse)%3A%0A%20%20%20%20def%20make_differential_ops(nx%3A%20int%2C%20dx%3A%20float)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E5%91%A8%E6%9C%9F%E5%A2%83%E7%95%8C%E6%9D%A1%E4%BB%B6%E3%81%AE%201%20%E9%9A%8E%E3%83%BB2%20%E9%9A%8E%E3%83%BB3%20%E9%9A%8E%E4%B8%AD%E5%BF%83%E5%B7%AE%E5%88%86%E8%A1%8C%E5%88%97%E3%82%92%E8%BF%94%E3%81%99%E3%80%82%22%22%22%0A%20%20%20%20%20%20%20%20f0%20%3D%20np.identity(nx%2C%20dtype%3Dint)%20%20%23%20f_%7Bi%7D%0A%20%20%20%20%20%20%20%20f1%20%3D%20np.roll(f0%2C%201%2C%20axis%3D1)%20%20%23%20f_%7Bi%2B1%7D%0A%20%20%20%20%20%20%20%20f2%20%3D%20np.roll(f0%2C%202%2C%20axis%3D1)%20%20%23%20f_%7Bi%2B2%7D%0A%20%20%20%20%20%20%20%20f_1%20%3D%20f1.transpose()%20%20%23%20f_%7Bi-1%7D%0A%20%20%20%20%20%20%20%20f_2%20%3D%20f2.transpose()%20%20%23%20f_%7Bi-2%7D%0A%0A%20%20%20%20%20%20%20%20%23%20(f_%7Bi%2B1%7D%20-%20f_%7Bi-1%7D)%20%2F%20(2%20dx)%0A%20%20%20%20%20%20%20%20deriv1%20%3D%20sparse.csr_matrix(f1%20-%20f_1)%20%2F%20(2.0%20*%20dx)%0A%0A%20%20%20%20%20%20%20%20%23%20(f_%7Bi%2B1%7D%20-%202f_%7Bi%7D%20%2B%20f_%7Bi-1%7D)%20%2F%20(dx%5E2)%0A%20%20%20%20%20%20%20%20deriv2%20%3D%20sparse.csr_matrix(f1%20-%202.0%20*%20f0%20%2B%20f_1)%20%2F%20dx**2%0A%0A%20%20%20%20%20%20%20%20%23%20(f_%7Bi%2B2%7D%20-%202f_%7Bi%2B1%7D%20%2B%202f_%7Bi-1%7D%20-%20f_%7Bi-2%7D)%20%2F%20(2%20dx%5E3)%0A%20%20%20%20%20%20%20%20deriv3%20%3D%20sparse.csr_matrix(f2%20-%202.0%20*%20f1%20%2B%202.0%20*%20f_1%20-%20f_2)%20%2F%20(2.0%20*%20dx**3)%0A%0A%20%20%20%20%20%20%20%20return%20deriv1%2C%20deriv2%2C%20deriv3%0A%0A%20%20%20%20return%20(make_differential_ops%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E5%8F%B3%E8%BE%BA%20%24-6uu_x-u_%7Bxxx%7D%24%20%E3%82%92%E9%96%A2%E6%95%B0%E3%81%A8%E3%81%97%E3%81%A6%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%60solve_ivp%60%20%E3%81%AE%20%60args%60%20%E3%82%92%E9%80%9A%E3%81%98%E3%81%A6%0A%20%20%20%20%E5%B7%AE%E5%88%86%E8%A1%8C%E5%88%97%E3%82%92%E6%B8%A1%E3%81%99%E5%BD%A2%E3%81%AB%E3%81%97%E3%81%A6%E3%81%82%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E6%A0%BC%E5%AD%90%E6%95%B0%E3%82%92%E5%A4%89%E3%81%88%E3%81%A6%E5%8F%8E%E6%9D%9F%E3%82%92%E7%A2%BA%E3%81%8B%E3%82%81%E3%82%8B%E3%81%A8%E3%81%8D%E3%82%82%0A%20%20%20%20%E3%81%93%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%AF%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.function%0Adef%20f_kdv(t%2C%20u%2C%20df1%2C%20df3)%3A%0A%20%20%20%20u_x%20%3D%20df1.dot(u)%0A%20%20%20%20u_xxx%20%3D%20df3.dot(u)%0A%20%20%20%20return%20-6.0%20*%20u%20*%20u_x%20-%20u_xxx%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E6%99%82%E9%96%93%E7%A9%8D%E5%88%86%0A%0A%20%20%20%20%E5%88%BB%E3%81%BF%E5%B9%85%E3%81%AE%E4%B8%8A%E9%99%90%E3%82%92%20%60max_step%60%20%E3%81%A7%E7%B8%9B%E3%82%89%E3%81%9A%E3%80%81%60RK45%60%20%E3%81%AE%E9%81%A9%E5%BF%9C%E5%88%B6%E5%BE%A1%E3%81%AB%E4%BB%BB%E3%81%9B%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%205%20%E7%82%B9%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%AB%E3%81%AE%203%20%E9%9A%8E%E5%BE%AE%E5%88%86%E8%A1%8C%E5%88%97%E3%81%AE%E5%9B%BA%E6%9C%89%E5%80%A4%E3%81%AF%E7%B4%94%E8%99%9A%E6%95%B0%E3%81%A7%E3%80%81%E7%B5%B6%E5%AF%BE%E5%80%A4%E3%81%AF%E6%9C%80%E5%A4%A7%E3%81%A7%0A%20%20%20%20%242.6%2Fh%5E3%5Csimeq3.5%5Ctimes10%5E2%24%20%E3%81%AB%E9%81%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%82%BD%E3%83%AB%E3%83%90%E3%83%BC%E3%81%AF%E3%81%93%E3%82%8C%E3%81%AB%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A6%0A%20%20%20%20%E5%88%BB%E3%81%BF%E3%82%92%20%2410%5E%7B-3%7D%24%20%E7%A8%8B%E5%BA%A6%E3%81%BE%E3%81%A7%E8%A9%B0%E3%82%81%E3%80%81%24t%5Cin%5B0%2C10%5D%24%20%E3%81%AE%E7%A9%8D%E5%88%86%E3%81%AB%E7%B4%84%203100%20%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%82%92%E8%A6%81%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E7%B5%90%E6%9E%9C%E3%81%AF%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%20%60.npz%60%20%E3%81%AB%E3%82%82%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%BE%E3%81%99%0A%20%20%20%20%EF%BC%88%60.npz%60%20%E3%81%AF%20Git%20%E3%81%AE%E8%BF%BD%E8%B7%A1%E5%AF%BE%E8%B1%A1%E5%A4%96%E3%81%A7%E3%81%99%EF%BC%89%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(artifacts_dir%2C%20make_differential_ops%2C%20np%2C%20solve_ivp)%3A%0A%20%20%20%20nx_kdv%20%3D%20512%0A%20%20%20%20length_kdv%20%3D%20100.0%0A%20%20%20%20x_kdv_grid%20%3D%20np.linspace(0%2C%20length_kdv%2C%20nx_kdv%2C%20endpoint%3DFalse)%0A%20%20%20%20dx_kdv%20%3D%20x_kdv_grid%5B1%5D%20-%20x_kdv_grid%5B0%5D%0A%20%20%20%20u0_kdv%20%3D%20np.sin(x_kdv_grid%20*%20(2.0%20*%20np.pi%20%2F%20length_kdv))%0A%0A%20%20%20%20op_df1%2C%20_%2C%20op_df3%20%3D%20make_differential_ops(nx_kdv%2C%20dx_kdv)%0A%0A%20%20%20%20t_max_kdv%20%3D%2010.0%0A%20%20%20%20t_kdv_grid%20%3D%20np.linspace(0%2C%20t_max_kdv%2C%20161)%0A%20%20%20%20_sol%20%3D%20solve_ivp(%0A%20%20%20%20%20%20%20%20f_kdv%2C%0A%20%20%20%20%20%20%20%20(0%2C%20t_max_kdv)%2C%0A%20%20%20%20%20%20%20%20u0_kdv%2C%0A%20%20%20%20%20%20%20%20args%3D(op_df1%2C%20op_df3)%2C%0A%20%20%20%20%20%20%20%20method%3D%22RK45%22%2C%0A%20%20%20%20%20%20%20%20t_eval%3Dt_kdv_grid%2C%0A%20%20%20%20%20%20%20%20rtol%3D1e-8%2C%0A%20%20%20%20%20%20%20%20atol%3D1e-10%2C%0A%20%20%20%20)%0A%20%20%20%20if%20not%20_sol.success%3A%0A%20%20%20%20%20%20%20%20raise%20RuntimeError(_sol.message)%0A%20%20%20%20u_tx_kdv_raw%20%3D%20_sol.y.T%0A%0A%20%20%20%20kdv_dataset_path%20%3D%20artifacts_dir%20%2F%20%22kdv_solve_ivp.npz%22%0A%20%20%20%20np.savez(kdv_dataset_path%2C%20x%3Dx_kdv_grid%2C%20t%3Dt_kdv_grid%2C%20u_tx%3Du_tx_kdv_raw)%0A%0A%20%20%20%20(%0A%20%20%20%20%20%20%20%20f%22success%3D%7B_sol.success%7D%2C%20%E5%8F%B3%E8%BE%BA%E8%A9%95%E4%BE%A1%20%7B_sol.nfev%7D%20%E5%9B%9E%2C%20dx%3D%7Bdx_kdv%3A.3f%7D%22%2C%0A%20%20%20%20%20%20%20%20f%22u%20%E3%81%AE%E7%AF%84%E5%9B%B2%20%5B%7Bu_tx_kdv_raw.min()%3A.2f%7D%2C%20%7Bu_tx_kdv_raw.max()%3A.2f%7D%5D%22%2C%0A%20%20%20%20%20%20%20%20f%22%E4%BF%9D%E5%AD%98%E5%85%88%20%7Bkdv_dataset_path.name%7D%20(%7Bkdv_dataset_path.stat().st_size%20%2F%201024%3A.0f%7D%20KiB)%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(kdv_dataset_path%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%0A%0A%20%20%20%20%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%9F%20%60.npz%60%20%E3%82%92%E8%AA%AD%E3%81%BF%E7%9B%B4%E3%81%97%E3%81%A6%E3%81%8B%E3%82%89%E6%8F%8F%E7%94%BB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%86%E3%81%97%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%A8%E3%80%81%0A%20%20%20%20%E7%A9%8D%E5%88%86%E3%82%92%E3%82%84%E3%82%8A%E7%9B%B4%E3%81%95%E3%81%9A%E3%81%AB%E5%9B%B3%E3%81%A0%E3%81%91%E3%82%92%E4%BD%9C%E3%82%8A%E7%9B%B4%E3%81%9B%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20161%20%E3%82%B3%E3%83%9E%E3%82%92%201%20%E3%82%B3%E3%83%9E%2050%20ms%20%E3%81%A7%E5%86%8D%E7%94%9F%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E5%86%8D%E7%94%9F%E6%99%82%E9%96%93%E3%81%AF%E7%B4%84%208.1%20%E7%A7%92%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(artifacts_dir%2C%20kdv_dataset_path%2C%20np%2C%20plt%2C%20save_gif)%3A%0A%20%20%20%20with%20np.load(kdv_dataset_path)%20as%20_npz%3A%0A%20%20%20%20%20%20%20%20x_kdv%20%3D%20_npz%5B%22x%22%5D%0A%20%20%20%20%20%20%20%20t_kdv%20%3D%20_npz%5B%22t%22%5D%0A%20%20%20%20%20%20%20%20u_tx_kdv%20%3D%20_npz%5B%22u_tx%22%5D%0A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.4%2C%203.6)%2C%20dpi%3D100)%0A%20%20%20%20_ax.set_xlim(0%2C%20100)%0A%20%20%20%20_ax.set_ylim(-1.5%2C%203.2)%0A%20%20%20%20_ax.set_xlabel(%22%24x%24%22)%0A%20%20%20%20_ax.set_ylabel(%22%24u(x)%24%22)%0A%20%20%20%20_ax.axhline(0%2C%20lw%3D0.5%2C%20color%3D%220.7%22)%0A%20%20%20%20_line%2C%20%3D%20_ax.plot(%5B%5D%2C%20%5B%5D%2C%20lw%3D1.2%2C%20color%3D%22tab%3Ablue%22)%0A%20%20%20%20_title%20%3D%20_ax.set_title(%22KdV%2C%20t%20%3D%200.00%22)%0A%20%20%20%20_fig.tight_layout()%0A%0A%20%20%20%20def%20_update(frame)%3A%0A%20%20%20%20%20%20%20%20_line.set_data(x_kdv%2C%20u_tx_kdv%5Bframe%5D)%0A%20%20%20%20%20%20%20%20_title.set_text(f%22KdV%2C%20t%20%3D%20%7Bt_kdv%5Bframe%5D%3A.2f%7D%22)%0A%20%20%20%20%20%20%20%20return%20(_line%2C%20_title)%0A%0A%20%20%20%20kdv_gif%20%3D%20artifacts_dir%20%2F%20%22kdv_solve_ivp.gif%22%0A%20%20%20%20save_gif(_fig%2C%20_update%2C%20len(t_kdv)%2C%20kdv_gif%2C%20interval%3D50)%0A%20%20%20%20return%20(kdv_gif%2C)%0A%0A%0A%40app.cell%0Adef%20_(gif_image%2C%20kdv_gif)%3A%0A%20%20%20%20gif_image(kdv_gif%2C%20alt%3D%22KdV%20%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%AE%E6%99%82%E9%96%93%E7%99%BA%E5%B1%95%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E6%AC%A1%E3%81%AE%203%20%E3%81%A4%E3%81%AE%E5%B1%80%E9%9D%A2%E3%81%AB%E5%88%86%E3%81%8B%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%201.%20%24t%5Clesssim2.5%24%3A%20%E7%A7%BB%E6%B5%81%E9%A0%85%20%24-6uu_x%24%20%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E6%AD%A3%E5%BC%A6%E6%B3%A2%E3%81%AE%E4%B8%8B%E3%82%8A%E5%9D%82%E3%81%8C%0A%20%20%20%20%20%20%20%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A8%E5%90%8C%E3%81%98%E3%82%88%E3%81%86%E3%81%AB%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%A4%E3%80%82%0A%20%20%20%202.%20%24t%5Csimeq2.5%24%E3%80%9C%244%24%3A%20%E5%8B%BE%E9%85%8D%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%A8%E5%88%86%E6%95%A3%E9%A0%85%20%24-u_%7Bxxx%7D%24%20%E3%81%8C%E5%8A%B9%E3%81%8D%E5%A7%8B%E3%82%81%E3%80%81%0A%20%20%20%20%20%20%20%E5%88%87%E3%82%8A%E7%AB%8B%E3%81%A3%E3%81%9F%E9%9D%A2%E3%81%AE%E5%BE%8C%E3%82%8D%E3%81%AB%E6%8C%AF%E5%8B%95%E5%88%97%E3%81%8C%E7%94%9F%E3%81%BE%E3%82%8C%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%8C%E5%88%86%E6%95%A3%E8%A1%9D%E6%92%83%E6%B3%A2%EF%BC%88%E6%B3%A2%E6%89%93%E3%81%A4%E6%AE%B5%E6%B3%A2%EF%BC%89%E3%81%A7%E3%80%81%0A%20%20%20%20%20%20%20%E3%83%90%E3%83%BC%E3%82%AC%E3%83%BC%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%81%A7%E8%A6%8B%E3%81%9F%E3%80%8C%E9%88%8D%E3%81%A3%E3%81%9F%201%20%E6%9E%9A%E3%81%AE%E7%95%8C%E9%9D%A2%E3%80%8D%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84%E3%81%8C%E6%9C%80%E3%82%82%E3%81%AF%E3%81%A3%E3%81%8D%E3%82%8A%E3%81%99%E3%82%8B%E5%A0%B4%E9%9D%A2%E3%80%82%0A%20%20%20%203.%20%24t%5Cgtrsim5%24%3A%20%E6%8C%AF%E5%8B%95%E5%88%97%E3%81%8C%E5%80%8B%E5%88%A5%E3%81%AE%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%E3%81%AB%E5%88%86%E9%9B%A2%E3%81%99%E3%82%8B%E3%80%82%E6%8C%AF%E5%B9%85%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%84%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%E3%81%BB%E3%81%A9%0A%20%20%20%20%20%20%20%E9%80%9F%E3%81%8F%E9%80%B2%E3%82%80%E3%81%9F%E3%82%81%E3%80%81%E5%88%97%E3%81%AF%E5%B7%A6%E3%81%BB%E3%81%A9%E8%83%8C%E3%81%8C%E4%BD%8E%E3%81%8F%E5%8F%B3%E3%81%BB%E3%81%A9%E8%83%8C%E3%81%8C%E9%AB%98%E3%81%84%E9%9A%8E%E6%AE%B5%E7%8A%B6%E3%81%AB%E6%95%B4%E5%88%97%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%20%24u%3D(c%2F2)%5C%2C%5Cmathrm%7Bsech%7D%5E2(%5Csqrt%7Bc%7D(x-ct)%2F2)%24%20%E3%81%AF%E6%8C%AF%E5%B9%85%E3%81%A8%E9%80%9F%E5%BA%A6%E3%81%8C%0A%20%20%20%20%20%20%20%E6%AF%94%E4%BE%8B%E3%81%99%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%20KdV%20%E7%89%B9%E6%9C%89%E3%81%AE%E9%96%A2%E4%BF%82%E3%82%92%E5%8F%8D%E6%98%A0%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%0A%20%20%20%203%20%E3%81%A4%E3%81%AE%E7%AF%80%E3%82%92%E9%80%9A%E3%81%97%E3%81%A6%E3%80%81%E5%90%8C%E3%81%98%E7%A7%BB%E6%B5%81%E9%A0%85%20%24uu_x%24%20%E3%81%8C%0A%20%20%20%20%E3%80%8C%E6%8B%A1%E6%95%A3%E9%A0%85%E3%81%A8%E7%B5%84%E3%82%81%E3%81%B0%E8%A1%9D%E6%92%83%E6%B3%A2%E3%80%8D%E3%80%8C%E5%88%86%E6%95%A3%E9%A0%85%E3%81%A8%E7%B5%84%E3%82%81%E3%81%B0%E3%82%BD%E3%83%AA%E3%83%88%E3%83%B3%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%0A%20%20%20%20%E3%81%BE%E3%81%A3%E3%81%9F%E3%81%8F%E9%81%95%E3%81%86%E6%BC%B8%E8%BF%91%E5%BD%A2%E3%81%B8%E8%90%BD%E3%81%A1%E7%9D%80%E3%81%8F%E3%81%93%E3%81%A8%E3%81%8C%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
f43d0c83cfa9163cd21cd6e6020b55a4