import%20marimo%0A%0A__generated_with%20%3D%20%220.9.27%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20%C2%A71%20%E4%B8%A4%E7%82%B9%E8%BE%B9%E5%80%BC%E9%97%AE%E9%A2%98%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20from%20numpy%20import%20cos%2C%20linalg%2C%20sin%0A%0A%20%20%20%20np.set_printoptions(precision%3D3%2C%20suppress%3DTrue)%0A%20%20%20%20return%20cos%2C%20linalg%2C%20np%2C%20sin%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20from%20matplotlib%20import%20pyplot%20as%20plt%0A%20%20%20%20return%20(plt%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%E9%97%AE%E9%A2%98%EF%BC%9A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Cmathcal%7BL%7D%20y%20%3D%20y''%20%2B%20y%20%3D%20-x%2C%5Cquad%20x%20%5Cin%20(0%2C1).%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20y(0)%20%3D%20y(1)%20%3D%200.%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20x_min%20%3D%200%0A%20%20%20%20x_max%20%3D%201%0A%20%20%20%20return%20x_max%2C%20x_min%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20%E8%A7%A3%E6%9E%90%E8%A7%A3%0A%0A%20%20%20%20%20%20%20%20%240%20%3D%20y''%20%2B%20y%20%2B%20x%20%3D%20(y%2Bx)''%20%2B%20(y%2Bx)%24%EF%BC%8C%E8%A7%A3%E6%98%AF%E4%B8%89%E8%A7%92%E5%87%BD%E6%95%B0%E3%80%82%E5%B8%A6%E5%85%A5%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%EF%BC%8C%E5%BE%97%20%24y%2Bx%20%3D%20%5Csin%20x%20%2F%20%5Csin%201%24%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(sin)%3A%0A%20%20%20%20def%20ref(x)%3A%0A%20%20%20%20%20%20%20%20return%20sin(x)%20%2F%20sin(1)%20-%20x%0A%20%20%20%20return%20(ref%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20%E8%8B%A5%E5%B9%B2%E5%B7%A5%E5%85%B7%E5%87%BD%E6%95%B0%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20from%20util%20import%20multi_diag%2C%20typst%0A%0A%20%20%20%20multi_diag(%5B1%2C%202%2C%203%5D%2C%20size%3D5)%0A%20%20%20%20return%20multi_diag%2C%20typst%0A%0A%0A%40app.cell%0Adef%20__(mo%2C%20typst)%3A%0A%20%20%20%20mo.md(r%22%24%5Cfrac12%20y%20%3D%20%5Cmathcal%7BL%7D%20y%24%22)%2C%20typst(r%22%241%2F2%20y%20%3D%20cal(L)%20y%24%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%201%20%E5%B7%AE%E5%88%86%E6%B3%95%EF%BC%88%60fin%60%3A%20finite%20difference%EF%BC%89%0A%0A%20%20%20%20%20%20%20%20%E9%97%B4%E8%B7%9D%20%24%5Cmathrm%7Bd%7Dx%20%3D%20h%20%3D%20%5Cfrac%7B1%7D%7B10%7D%24%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20x_max%2C%20x_min)%3A%0A%20%20%20%20dx_fin%20%3D%201%20%2F%2010%0A%20%20%20%20x_fin%20%3D%20np.arange(x_min%2C%20x_max%20%2B%20dx_fin%2C%20dx_fin)%0A%20%20%20%20x_fin%0A%20%20%20%20return%20dx_fin%2C%20x_fin%0A%0A%0A%40app.cell%0Adef%20__(dx_fin%2C%20multi_diag%2C%20np%2C%20x_fin)%3A%0A%20%20%20%20%23%20dv%3A%20derivative%2C%20l%3A%20%E2%84%92%0A%0A%20%20%20%20%23%20%E4%B8%AD%E9%97%B4%E9%83%A8%E5%88%86%E7%94%A8%E5%B7%AE%E5%95%86%0A%20%20%20%20%23%20y''%20%E2%89%88%20(y(%2B1)%20-%202%20y%20%2B%20y(-1))%20%2F%20dx%C2%B2%0A%20%20%20%20_dv_y_2%20%3D%20multi_diag(%5B1%2C%20-2%2C%201%5D%2C%20x_fin.size)%20%2F%20dx_fin**2%0A%0A%20%20%20%20%23%20%E2%84%92y%20%3D%20y''%20%2B%20y%0A%20%20%20%20l_by_y_fin%20%3D%20_dv_y_2%20%2B%20np.eye(x_fin.size)%0A%0A%20%20%20%20%23%20%E4%B8%A4%E7%AB%AF%E7%9B%B4%E6%8E%A5%E7%94%A8%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%0A%20%20%20%20l_by_y_fin%5B%5B0%2C%20-1%5D%2C%20%3A%5D%20%3D%200%0A%20%20%20%20l_by_y_fin%5B0%2C%200%5D%20%3D%201%0A%20%20%20%20l_by_y_fin%5B-1%2C%20-1%5D%20%3D%201%0A%0A%20%20%20%20l_by_y_fin%0A%20%20%20%20return%20(l_by_y_fin%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%E6%8B%BF%E5%B7%B2%E7%9F%A5%20%24%5Cmathcal%7BL%7Dy%24%20%E7%9A%84%20%24y%24%20%E6%B5%8B%E8%AF%95%E4%B8%80%E4%B8%8B%E3%80%82%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(l_by_y_fin%2C%20x_fin)%3A%0A%20%20%20%20l_by_y_fin%20%40%20x_fin**2%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(dx_fin%2C%20np%2C%20x_fin)%3A%0A%20%20%20%20np.diff(np.diff(x_fin**2))%20%2F%20dx_fin**2%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%E5%B9%B6%E6%97%A0%E9%97%AE%E9%A2%98%E2%80%A6%E2%80%A6%EF%BC%88%E6%9C%80%E5%90%8E%E5%8F%91%E7%8E%B0%E6%98%AF%E4%B8%8B%E9%9D%A2%E7%9A%84%60_target%60%E6%9C%89%E8%AF%AF%E3%80%82%EF%BC%89%0A%0A%20%20%20%20%20%20%20%20%E6%95%B4%E4%BD%93%E8%AF%95%E8%AF%95%E5%90%A7%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(l_by_y_fin%2C%20linalg%2C%20x_fin)%3A%0A%20%20%20%20_target%20%3D%20-x_fin%0A%20%20%20%20_target%5B%5B0%2C%20-1%5D%5D%20%3D%200%0A%20%20%20%20y_fin%20%3D%20linalg.solve(l_by_y_fin%2C%20_target)%0A%20%20%20%20y_fin%0A%20%20%20%20return%20(y_fin%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(plt%2C%20x_fin%2C%20y_fin)%3A%0A%20%20%20%20plt.plot(x_fin%2C%20y_fin%2C%20marker%3D%22%2B%22)%0A%20%20%20%20plt.xlabel(%22%24x%24%22)%0A%20%20%20%20plt.ylabel(%22%24y%24%22)%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.gcf()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%202%20%E9%85%8D%E7%BD%AE%E6%B3%95%EF%BC%88%60spl%60%3A%20B-spline%EF%BC%89%0A%0A%20%20%20%20%20%20%20%20%E9%87%87%E7%94%A8%E4%B8%89%E6%AC%A1B%E6%A0%B7%E6%9D%A1%EF%BC%8C%E9%85%8D%E7%BD%AE%20%2411%24%20%E7%82%B9%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20x_max%2C%20x_min)%3A%0A%20%20%20%20n_spl%20%3D%2011%0A%20%20%20%20x_spl%20%3D%20np.linspace(x_min%2C%20x_max%2C%20n_spl)%0A%20%20%20%20dx_spl%20%3D%20np.diff(x_spl).mean()%0A%20%20%20%20x_spl%0A%20%20%20%20return%20dx_spl%2C%20n_spl%2C%20x_spl%0A%0A%0A%40app.cell%0Adef%20__(dx_spl%2C%20multi_diag%2C%20x_spl)%3A%0A%20%20%20%20%23%20y%20%E2%86%90%20%E7%BB%84%E5%90%88%E7%B3%BB%E6%95%B0%0A%20%20%20%20_y%20%3D%20multi_diag(%5B1%20%2F%206%2C%202%20%2F%203%2C%201%20%2F%206%5D%2C%20x_spl.size)%0A%20%20%20%20%23%20y''%20%E2%86%90%20%E7%BB%84%E5%90%88%E7%B3%BB%E6%95%B0%0A%20%20%20%20_dv_y_2%20%3D%20multi_diag(%5B1%2C%20-2%2C%201%5D%2C%20x_spl.size)%20%2F%20dx_spl**2%0A%0A%20%20%20%20%23%20%E2%84%92y%20%3D%20y''%20%2B%20y%20%E2%86%90%20%E7%BB%84%E5%90%88%E7%B3%BB%E6%95%B0%20coefficients%0A%20%20%20%20l_by_c_spl%20%3D%20_dv_y_2%20%2B%20_y%0A%0A%20%20%20%20%23%20%E4%B8%A4%E7%AB%AF%E7%9B%B4%E6%8E%A5%E7%94%A8%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%0A%20%20%20%20l_by_c_spl%5B%5B0%2C%20-1%5D%2C%20%3A%5D%20%3D%200%0A%20%20%20%20l_by_c_spl%5B0%2C%20%3A2%5D%20%3D%20%5B2%20%2F%203%2C%201%20%2F%206%5D%0A%20%20%20%20l_by_c_spl%5B-1%2C%20-2%3A%5D%20%3D%20%5B1%20%2F%206%2C%202%20%2F%203%5D%0A%0A%20%20%20%20l_by_c_spl%0A%20%20%20%20return%20(l_by_c_spl%2C)%0A%0A%0A%40app.cell%0Adef%20__(l_by_c_spl%2C%20linalg%2C%20x_fin)%3A%0A%20%20%20%20_target%20%3D%20-x_fin%0A%20%20%20%20_target%5B%5B0%2C%20-1%5D%5D%20%3D%200%0A%20%20%20%20c_spl%20%3D%20linalg.solve(l_by_c_spl%2C%20_target)%0A%20%20%20%20c_spl%0A%20%20%20%20return%20(c_spl%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22SciPy%E7%9A%84B-%E6%A0%B7%E6%9D%A1%E5%B7%A6%E5%AF%B9%E9%BD%90%EF%BC%8C%E8%80%8C%E6%88%91%E4%BB%AC%E4%B8%AD%E5%BF%83%E5%AF%B9%E7%A7%B0%EF%BC%8C%E6%95%85%E9%9C%80%E5%B9%B3%E7%A7%BB%E5%B9%B6%E5%9C%A8%E5%8C%BA%E9%97%B4%E5%A4%96%E4%B8%A4%E4%BE%A7%E8%A1%A5%E7%BB%93%E7%82%B9%E3%80%82%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np%2C%20plt)%3A%0A%20%20%20%20from%20scipy.interpolate%20import%20BSpline%0A%0A%20%20%20%20_spl%20%3D%20BSpline.basis_element(np.arange(5))%0A%20%20%20%20assert%20_spl.k%20%3D%3D%203%0A%0A%20%20%20%20for%20_l%2C%20_f%20in%20%5B%0A%20%20%20%20%20%20%20%20(%22y%22%2C%20_spl)%2C%0A%20%20%20%20%20%20%20%20(%22y'%22%2C%20_spl.derivative())%2C%0A%20%20%20%20%20%20%20%20(%22y''%22%2C%20_spl.derivative(2))%2C%0A%20%20%20%20%5D%3A%0A%20%20%20%20%20%20%20%20print(f%22%7B_l%3A4%7D%20%3D%22%2C%20_f(np.arange(5)))%0A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%204%2C%20123)%0A%20%20%20%20_fig%2C%20_axs%20%3D%20plt.subplots(nrows%3D3%2C%20sharex%3DTrue)%0A%0A%20%20%20%20_axs%5B0%5D.plot(_x%2C%20_spl(_x))%0A%20%20%20%20_axs%5B0%5D.set_yticks(np.arange(6)%20%2F%206)%0A%20%20%20%20_axs%5B0%5D.set_ylabel(%22%24y%24%22)%0A%0A%20%20%20%20_axs%5B1%5D.plot(_x%2C%20_spl.derivative()(_x))%0A%20%20%20%20_axs%5B1%5D.set_ylabel(%22%24y'%24%22)%0A%0A%20%20%20%20_axs%5B2%5D.plot(_x%2C%20_spl.derivative(2)(_x))%0A%20%20%20%20_axs%5B2%5D.set_ylabel(%22%24y''%24%22)%0A%0A%20%20%20%20_axs%5B0%5D.set_title(%22SciPy%E7%9A%84B-%E6%A0%B7%E6%9D%A1%22)%0A%20%20%20%20_axs%5B-1%5D.set_xlabel(%22%24x%24%22)%0A%20%20%20%20for%20_ax%20in%20_axs%3A%0A%20%20%20%20%20%20%20%20_ax.set_xticks(np.arange(5))%0A%20%20%20%20%20%20%20%20_ax.grid()%0A%0A%20%20%20%20_fig%0A%20%20%20%20return%20(BSpline%2C)%0A%0A%0A%40app.cell%0Adef%20__(BSpline%2C%20c_spl%2C%20dx_spl%2C%20np%2C%20x_max%2C%20x_min%2C%20x_spl)%3A%0A%20%20%20%20spl%20%3D%20BSpline(%0A%20%20%20%20%20%20%20%20np.concat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E4%B8%A4%E4%BE%A7%E5%90%84%E8%A1%A5%E4%B8%A4%E4%B8%AA%E7%BB%93%E7%82%B9%EF%BC%8C%E5%86%8D%E5%A4%96%E5%8A%A0%E4%B8%80%E4%B8%AA%E7%A9%BA%E5%9F%BA%EF%BC%88%E5%8A%A8%E6%9C%BA%E8%A7%81%E4%B8%8B%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x_min%20%2B%20np.arange(-3%2C%200)%20*%20dx_spl%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x_spl%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x_max%20%2B%20np.arange(1%2C%204)%20*%20dx_spl%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E4%B8%A4%E4%BE%A7%E5%90%84%E8%A1%A5%E4%B8%80%E4%B8%AA%E7%A9%BA%E5%9F%BA%EF%BC%8C%E8%AE%A9SciPy%E6%8A%8A%E6%95%B4%E4%B8%AA%E5%8C%BA%E9%97%B4%E9%83%BD%E7%9C%8B%E4%BD%9C%E5%86%85%E6%8F%92%0A%20%20%20%20%20%20%20%20np.concat(%5B%5B0%5D%2C%20c_spl%2C%20%5B0%5D%5D)%2C%0A%20%20%20%20%20%20%20%20k%3D3%2C%0A%20%20%20%20%20%20%20%20%23%20%E8%AE%A9%E5%A4%96%E6%8F%92%E9%83%A8%E5%88%86%E6%98%AF%20NaN%EF%BC%8C%E6%96%B9%E4%BE%BF%E8%B0%83%E8%AF%95%EF%BC%9B%E5%85%B6%E5%AE%9E%E4%B8%8D%E5%BD%B1%E5%93%8D%E5%86%85%E6%8F%92%E9%83%A8%E5%88%86%0A%20%20%20%20%20%20%20%20extrapolate%3DFalse%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(spl%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np%2C%20plt%2C%20spl)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%20%20%20%20_fig%2C%20_axs%20%3D%20plt.subplots(nrows%3D2%2C%20sharex%3DTrue)%0A%20%20%20%20_axs%5B0%5D.plot(_x%2C%20spl(_x))%0A%20%20%20%20_axs%5B0%5D.set_ylabel(%22%24y%24%22)%0A%20%20%20%20_axs%5B1%5D.plot(_x%2C%20spl.derivative(2)(_x))%0A%20%20%20%20_axs%5B1%5D.set_ylabel(%22%24y''%24%22)%0A%0A%20%20%20%20_axs%5B-1%5D.set_xlabel(%22%24x%24%22)%0A%20%20%20%20for%20_ax%20in%20_axs%3A%0A%20%20%20%20%20%20%20%20_ax.grid()%0A%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%E8%BE%B9%E7%95%8C%E5%A4%84%E5%AF%BC%E6%95%B0%E5%B4%A9%E4%BA%86%EF%BC%8C%E8%BF%99%E5%BE%88%E6%AD%A3%E5%B8%B8%EF%BC%8C%E5%9B%A0%E4%B8%BA%E6%96%B9%E7%A8%8B%E6%A0%B9%E6%9C%AC%E6%B2%A1%E8%A7%84%E5%AE%9A%E8%BE%B9%E7%95%8C%E7%9A%84%E5%AF%BC%E6%95%B0%E3%80%82%0A%0A%20%20%20%20%20%20%20%20%E9%AA%8C%E8%AF%81%E4%B8%80%E4%B8%8B%E5%85%B7%E4%BD%93%E6%95%B0%E5%AD%97%EF%BC%9A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(spl%2C%20x_spl)%3A%0A%20%20%20%20spl(x_spl)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(c_spl%2C%20l_by_c_spl)%3A%0A%20%20%20%20l_by_c_spl%20%40%20c_spl%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%203%20%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%EF%BC%88%60ls%60%3A%20least%20squares%EF%BC%89%0A%0A%20%20%20%20%20%20%20%20%E9%87%87%E6%A0%B7%E5%B9%82%E5%87%BD%E6%95%B0%20%241%2Cx%2C%5Cldots%2C%20x%5E%7B10%7D%24%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%24%5Cleft%3C%5Csquare%2C%20%5Ctriangle%20%5Cright%3E%20%5Ccoloneqq%20%5Cint_0%5E1%20%5Csquare%20%5Ctriangle%20%5Cmathrm%7Bd%7D%20x.%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Cleft%3Cx%5En%2C%20x%5Em%20%5Cright%3E%20%3D%20%5Cint_0%5E1%20x%5En%20x%5Em%20%5Cmathrm%7Bd%7D%20x%20%3D%20%5Cfrac%7B1%7D%7Bm%2Bn%2B1%7D.%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Cmathcal%7BL%7D%20x%5En%20%3D%20%5Cbegin%7Bcases%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20n(n-1)%20x%5E%7Bn-2%7D%20%2B%20x%5En%20%26%20n%20%5Cgeq%202%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%200%20%26%20n%20%5Cin%20%5C%7B0%2C1%5C%7D%20%5C%5C%0A%20%20%20%20%20%20%20%20%5Cend%7Bcases%7D.%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Cleft%3C%5Cmathcal%7BL%7D%20x%5En%2C%20x%5Em%20%5Cright%3E%20%3D%20%5Cbegin%7Bcases%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5Cfrac%7Bn(n-1)%7D%7Bm%2Bn-1%7D%20%2B%20%5Cfrac%7B1%7D%7Bm%2Bn%2B1%7D%20%26%20n%20%5Cgeq%202%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5Cfrac%7B1%7D%7Bm%2Bn%2B1%7D%20%26%20n%20%5Cin%20%5C%7B0%2C1%5C%7D%20%5C%5C%0A%20%20%20%20%20%20%20%20%5Cend%7Bcases%7D.%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%EF%BC%8C%241%2Cx%24%20%E8%BF%99%E4%BF%A9%E5%9F%BA%E5%BE%88%E8%AE%A8%E5%8E%8C%E3%80%82%E6%88%91%E4%BB%AC%E6%8F%90%E5%89%8D%E5%A4%84%E7%90%86%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%EF%BC%8C%E5%8C%96%E6%88%90%E9%BD%90%E6%AC%A1%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%EF%BC%8C%E9%A1%BA%E5%B8%A6%E6%89%94%E6%8E%89%E5%AE%83%E4%BB%AC%E3%80%82%0A%0A%20%20%20%20%20%20%20%20-%20%E7%94%B1%20%24y(0)%20%3D%200%24%EF%BC%8C%241%24%20%E7%9A%84%E7%BB%84%E5%90%88%E7%B3%BB%E6%95%B0%E4%B8%BA%E9%9B%B6%EF%BC%8C%E7%9B%B4%E6%8E%A5%E5%BF%BD%E7%95%A5%E3%80%82%0A%20%20%20%20%20%20%20%20-%20%E7%94%B1%20%24y(1)%20%3D%201%24%EF%BC%8C%E6%89%80%E6%9C%89%E5%9F%BA%E7%9A%84%E7%B3%BB%E6%95%B0%E4%B9%8B%E5%92%8C%E4%B8%BA%20%241%24%E3%80%82%0A%0A%20%20%20%20%20%20%20%20%E6%88%91%E4%BB%AC%E5%8F%AF%E6%8A%8A%E5%9F%BA%E6%8D%A2%E4%B8%BA%20%24x%5E2%20-%20x%2C%20%5Cldots%20%2C%20x%5E%7B10%7D%20-%20x%24%EF%BC%8C%E4%B8%8D%E8%BF%87%E8%BF%99%E5%92%8C%20Lagrange%20%E4%B9%98%E6%95%B0%E6%B3%95%E6%B2%A1%E6%9C%89%E6%9C%AC%E8%B4%A8%E5%8C%BA%E5%88%AB%EF%BC%8C%E6%89%80%E4%BB%A5%E8%BF%98%E6%98%AF%E9%80%89%E6%88%90%20%24x%2C%20%5Cldots%2C%20x%5E%7B10%7D%24%20%E5%90%A7%EF%BC%8C%E8%BF%99%E4%B9%9F%E8%B6%B3%E5%A4%9F%E6%8E%92%E9%99%A4%20%24%5Cfrac10%2C%200%5E0%24%20%E7%AD%89%E9%97%AE%E9%A2%98%E4%BA%86%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20n_ls%20%3D%2010%0A%20%20%20%20ns_ls%20%3D%20np.arange(n_ls)%20%2B%201%0A%20%20%20%20ns_ls%0A%20%20%20%20return%20n_ls%2C%20ns_ls%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20ns_ls)%3A%0A%20%20%20%20_m%20%3D%20ns_ls%5Bnp.newaxis%2C%20%3A%5D%0A%20%20%20%20_n%20%3D%20ns_ls%5B%3A%2C%20np.newaxis%5D%0A%0A%20%20%20%20l_by_c_ls%20%3D%20_n%20*%20(_n%20-%201)%20%2F%20(_m%20%2B%20_n%20-%201)%20%2B%201%20%2F%20(_m%20%2B%20_n%20%2B%201)%0A%20%20%20%20l_by_c_ls%0A%20%20%20%20return%20(l_by_c_ls%2C)%0A%0A%0A%40app.cell%0Adef%20__(l_by_c_ls%2C%20linalg%2C%20n_ls%2C%20np%2C%20ns_ls)%3A%0A%20%20%20%20%23%20%E8%A1%A5%E4%B8%8A%CE%BB%0A%20%20%20%20_c_and_%CE%BB%20%3D%20linalg.solve(%0A%20%20%20%20%20%20%20%20np.block(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Bl_by_c_ls%2C%20-np.ones((n_ls%2C%201))%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Bnp.ones(n_ls)%2C%200%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20np.append(-1%20%2F%20(2%20%2B%20ns_ls)%2C%200)%2C%0A%20%20%20%20)%0A%20%20%20%20c_ls%20%3D%20_c_and_%CE%BB%5B%3A-1%5D%0A%20%20%20%20c_ls%2C%20_c_and_%CE%BB%5B-1%5D%0A%20%20%20%20return%20(c_ls%2C)%0A%0A%0A%40app.cell%0Adef%20__(c_ls%2C%20np%2C%20ns_ls)%3A%0A%20%20%20%20def%20ls(x%3A%20np.ndarray)%20-%3E%20np.ndarray%3A%0A%20%20%20%20%20%20%20%20%22%22%22Calculate%20y%20by%20least%20squares%22%22%22%0A%20%20%20%20%20%20%20%20assert%20x.ndim%20%3D%3D%201%0A%20%20%20%20%20%20%20%20return%20c_ls%20%40%20x%20**%20ns_ls%5B%3A%2C%20np.newaxis%5D%0A%20%20%20%20return%20(ls%2C)%0A%0A%0A%40app.cell%0Adef%20__(c_ls%2C%20np%2C%20ns_ls)%3A%0A%20%20%20%20_n%20%3D%20ns_ls%5B%3A%2C%20np.newaxis%5D%0A%0A%0A%20%20%20%20def%20ls_dv_2(x%3A%20np.ndarray)%20-%3E%20np.ndarray%3A%0A%20%20%20%20%20%20%20%20%22%22%22Calculate%20y''%20by%20least%20squares%22%22%22%0A%20%20%20%20%20%20%20%20assert%20x.ndim%20%3D%3D%201%0A%0A%20%20%20%20%20%20%20%20%23%200%20*%20(0%20**%20-1)%20%3D%200%20*%20inf%20%E2%86%92%200%0A%20%20%20%20%20%20%20%20with%20np.errstate(divide%3D%22ignore%22%2C%20invalid%3D%22ignore%22)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_dv_y_2%20%3D%20c_ls%20%40%20(_n%20*%20(_n%20-%201)%20*%20x%20**%20(_n%20-%202))%0A%20%20%20%20%20%20%20%20return%20np.nan_to_num(_dv_y_2%2C%200)%0A%20%20%20%20return%20(ls_dv_2%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(ls%2C%20ls_dv_2%2C%20np%2C%20plt)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%0A%20%20%20%20_fig%2C%20_axs%20%3D%20plt.subplots(nrows%3D3%2C%20sharex%3DTrue)%0A%0A%20%20%20%20_axs%5B0%5D.plot(_x%2C%20ls(_x))%0A%20%20%20%20_axs%5B0%5D.set_ylabel(%22%24y%24%22)%0A%20%20%20%20_axs%5B1%5D.plot(_x%2C%20ls_dv_2(_x))%0A%20%20%20%20_axs%5B1%5D.set_ylabel(%22%24y''%24%22)%0A%20%20%20%20_axs%5B2%5D.plot(_x%2C%20ls_dv_2(_x)%20%2B%20ls(_x)%20%2B%20_x)%0A%20%20%20%20_axs%5B2%5D.set_ylabel(%22%24y''%20%2B%20y%20%2B%20x%24%22)%0A%0A%20%20%20%20_axs%5B-1%5D.set_xlabel(%22%24x%24%22)%0A%20%20%20%20for%20_ax%20in%20_axs%3A%0A%20%20%20%20%20%20%20%20_ax.grid()%0A%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%204%20%E8%AF%AF%E5%B7%AE%E6%9B%B2%E7%BA%BF%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20%24%5Chat%20y%20-%20y%24%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(ls%2C%20np%2C%20plt%2C%20ref%2C%20spl%2C%20x_fin%2C%20y_fin)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%0A%20%20%20%20plt.plot(_x%2C%20ref(_x)%2C%20label%3D%22%E7%9C%9F%E8%A7%A3%22%2C%20linewidth%3D5%2C%20alpha%3D0.5)%0A%20%20%20%20plt.plot(x_fin%2C%20y_fin%2C%20label%3D%22%E5%B7%AE%E5%88%86%E6%B3%95%22%2C%20marker%3D%22%2B%22)%0A%20%20%20%20plt.plot(_x%2C%20spl(_x)%2C%20label%3D%22%E9%85%8D%E7%BD%AE%E6%B3%95%22)%0A%20%20%20%20plt.plot(_x%2C%20ls(_x)%2C%20label%3D%22%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%22)%0A%0A%20%20%20%20plt.xlabel(%22%24x%24%22)%0A%20%20%20%20plt.ylabel(%22%24y%24%22)%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.legend()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(ls%2C%20mo%2C%20np%2C%20plt%2C%20ref%2C%20spl%2C%20x_fin%2C%20y_fin)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%0A%20%20%20%20plt.plot(x_fin%2C%20y_fin%20-%20ref(x_fin)%2C%20label%3D%22%E5%B7%AE%E5%88%86%E6%B3%95%22%2C%20marker%3D%22%2B%22)%0A%20%20%20%20plt.plot(_x%2C%20spl(_x)%20-%20ref(_x)%2C%20label%3D%22%E9%85%8D%E7%BD%AE%E6%B3%95%22)%0A%20%20%20%20plt.plot(_x%2C%20ls(_x)%20-%20ref(_x)%2C%20label%3D%22%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%22)%0A%0A%20%20%20%20%23%20%E9%87%8F%E7%BA%A7%E5%B7%AE%E5%A4%AA%E5%A4%9A%E4%BA%86%EF%BC%8C%E7%BC%A9%E6%94%BE%E4%B9%9F%E6%95%91%E4%B8%8D%E8%BF%87%E6%9D%A5%E2%80%A6%E2%80%A6%0A%20%20%20%20%23%20plt.yscale(%22asinh%22)%0A%0A%20%20%20%20plt.xlabel(%22%24x%24%22)%0A%20%20%20%20plt.ylabel(r%22%24%5Chat%20y%20-%20y%24%22)%0A%20%20%20%20plt.title(%22%E8%AF%AF%E5%B7%AE%22)%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.legend()%0A%0A%20%20%20%20mo.md(f%22%22%22%0A%20%20%20%20%7C%20%E6%96%B9%E6%B3%95%20%7C%20%E8%AF%AF%E5%B7%AE%E7%BB%9D%E5%AF%B9%E5%80%BC%E5%B9%B3%E5%9D%87%20%7C%0A%20%20%20%20%7C%3A-%3A%7C%3A--%7C%0A%20%20%20%20%7C%E5%B7%AE%E5%88%86%E6%B3%95%EF%BC%88fin%EF%BC%89%7C%7Babs(y_fin%20-%20ref(x_fin)).mean()%3A.3%7D%7C%0A%20%20%20%20%7C%E9%85%8D%E7%BD%AE%E6%B3%95%EF%BC%88spl%EF%BC%89%7C%7Babs(spl(_x)%20-%20ref(_x)).mean()%3A.3%7D%7C%0A%20%20%20%20%7C%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%EF%BC%88ls%EF%BC%89%7C%7Babs(ls(_x)%20-%20ref(_x)).mean()%3A.3%7D%7C%0A%0A%20%20%20%20%7Bmo.as_html(plt.gcf())%7D%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.accordion(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E8%AF%AF%E5%B7%AE%E2%80%9C%E5%B9%B3%E5%9D%87%E2%80%9D%E6%96%B9%E6%B3%95%22%3A%20r%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%E5%B7%AE%E5%88%86%E6%B3%95%E6%B2%A1%E6%9C%89%E7%BB%99%E5%87%BA%E8%BF%9E%E7%BB%AD%E5%87%BD%E6%95%B0%EF%BC%8C%E5%B9%B3%E5%9D%87%E8%AF%AF%E5%B7%AE%E5%8F%AA%E7%94%A8%E5%88%97%E6%96%B9%E7%A8%8B%E7%9A%84%E9%82%A3%E4%BA%9B%E9%87%87%E6%A0%B7%E7%82%B9%E8%AE%A1%E7%AE%97%EF%BC%9B%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20%E5%85%B6%E5%AE%83%E6%96%B9%E6%B3%95%E7%BB%99%E5%87%BA%E4%BA%86%E8%BF%9E%E7%BB%AD%E5%87%BD%E6%95%B0%EF%BC%8C%E5%B9%B3%E5%9D%87%E8%AF%AF%E5%B7%AE%E6%98%AF%E6%8C%89%E9%87%8D%E6%96%B0%E9%87%87%E6%A0%B7%E7%9A%84%E6%9B%B4%E5%AF%86%E7%9A%84%E7%82%B9%E8%AE%A1%E7%AE%97%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(ls%2C%20np%2C%20plt%2C%20ref%2C%20spl%2C%20x_fin%2C%20y_fin)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%20%20%20%20_c%20%3D%20plt.rcParams%5B%22axes.prop_cycle%22%5D()%0A%0A%20%20%20%20_fig%2C%20_axs%20%3D%20plt.subplots(nrows%3D3%2C%20sharex%3DTrue)%0A%0A%20%20%20%20_axs%5B0%5D.plot(x_fin%2C%20y_fin%20-%20ref(x_fin)%2C%20marker%3D%22%2B%22%2C%20c%3Dnext(_c)%5B%22color%22%5D)%0A%20%20%20%20_axs%5B0%5D.set_ylabel(%22%E5%B7%AE%E5%88%86%E6%B3%95%22)%0A%0A%20%20%20%20_axs%5B1%5D.plot(_x%2C%20spl(_x)%20-%20ref(_x)%2C%20c%3Dnext(_c)%5B%22color%22%5D)%0A%20%20%20%20_axs%5B1%5D.set_ylabel(%22%E9%85%8D%E7%BD%AE%E6%B3%95%22)%0A%0A%20%20%20%20_axs%5B2%5D.plot(_x%2C%20ls(_x)%20-%20ref(_x)%2C%20c%3Dnext(_c)%5B%22color%22%5D)%0A%20%20%20%20_axs%5B2%5D.set_ylabel(%22%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%22)%0A%0A%20%20%20%20_axs%5B-1%5D.set_xlabel(%22%24x%24%22)%0A%0A%20%20%20%20for%20_ax%20in%20_axs%3A%0A%20%20%20%20%20%20%20%20_ax.grid()%0A%0A%20%20%20%20_fig.suptitle(r%22%E8%AF%AF%E5%B7%AE%20%24%5Chat%20y%20-%20y%24%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%20%24%5Cmathcal%7BL%7D%20%5Chat%20y%20-%20%5Cmathcal%7BL%7D%20y%24%0A%0A%20%20%20%20%20%20%20%20%E5%B7%AE%E5%88%86%E6%B3%95%E6%B2%A1%E6%9C%89%E6%9E%84%E9%80%A0%E5%87%BA%E8%BF%9E%E7%BB%AD%E5%87%BD%E6%95%B0%EF%BC%8C%E6%89%80%E4%BB%A5%E5%BF%BD%E7%95%A5%E3%80%82%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(ls%2C%20ls_dv_2%2C%20np%2C%20plt%2C%20spl)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%0A%20%20%20%20plt.plot(_x%2C%20-_x%2C%20label%3D%22%E7%9C%9F%E8%A7%A3%22%2C%20linewidth%3D5%2C%20alpha%3D0.5)%0A%20%20%20%20plt.plot(_x%2C%20spl.derivative(2)(_x)%20%2B%20spl(_x)%2C%20label%3D%22%E9%85%8D%E7%BD%AE%E6%B3%95%22)%0A%20%20%20%20plt.plot(_x%2C%20ls_dv_2(_x)%20%2B%20ls(_x)%2C%20label%3D%22%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%22)%0A%0A%20%20%20%20plt.xlabel(%22%24x%24%22)%0A%20%20%20%20plt.ylabel(r%22%24%5Cmathcal%7BL%7D%20y%24%22)%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.legend()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(ls%2C%20ls_dv_2%2C%20mo%2C%20np%2C%20plt%2C%20spl)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%20%20%20%20_c%20%3D%20plt.rcParams%5B%22axes.prop_cycle%22%5D()%0A%0A%20%20%20%20_fig%2C%20_axs%20%3D%20plt.subplots(nrows%3D2%2C%20sharex%3DTrue)%0A%0A%20%20%20%20_error_spl%20%3D%20spl.derivative(2)(_x)%20%2B%20spl(_x)%20%2B%20_x%0A%20%20%20%20_axs%5B0%5D.plot(_x%2C%20_error_spl%2C%20c%3Dnext(_c)%5B%22color%22%5D)%0A%20%20%20%20_axs%5B0%5D.set_ylabel(%22%E9%85%8D%E7%BD%AE%E6%B3%95%22)%0A%0A%20%20%20%20_error_ls%20%3D%20ls_dv_2(_x)%20%2B%20ls(_x)%20%2B%20_x%0A%20%20%20%20_axs%5B1%5D.plot(_x%2C%20_error_ls%2C%20c%3Dnext(_c)%5B%22color%22%5D)%0A%20%20%20%20_axs%5B1%5D.set_ylabel(%22%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%22)%0A%0A%20%20%20%20_axs%5B-1%5D.set_xlabel(%22%24x%24%22)%0A%0A%20%20%20%20for%20_ax%20in%20_axs%3A%0A%20%20%20%20%20%20%20%20_ax.grid()%0A%0A%20%20%20%20_fig.suptitle(r%22%E8%AF%AF%E5%B7%AE%20%24%5Cmathcal%7BL%7D%20%5Chat%20y%20-%20%5Cmathcal%7BL%7D%20y%24%22)%0A%0A%0A%20%20%20%20mo.md(f%22%22%22%0A%20%20%20%20%7C%E6%96%B9%E6%B3%95%7C%E8%AF%AF%E5%B7%AE%E7%BB%9D%E5%AF%B9%E5%80%BC%E5%B9%B3%E5%9D%87%7C%0A%20%20%20%20%7C%3A-%3A%7C%3A--%7C%0A%20%20%20%20%7C%E5%B7%AE%E5%88%86%E6%B3%95%EF%BC%88fin%EF%BC%89%7CN%2FA%7C%0A%20%20%20%20%7C%E9%85%8D%E7%BD%AE%E6%B3%95%EF%BC%88spl%EF%BC%89%7C%7Babs(_error_spl).mean()%3A.3%7D%7C%0A%20%20%20%20%7C%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%EF%BC%88ls%EF%BC%89%7C%7Babs(_error_ls).mean()%3A.3%7D%7C%0A%0A%20%20%20%20%7Bmo.as_html(_fig)%7D%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%205%20%E6%89%93%E9%9D%B6%E6%B3%95%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(typst)%3A%0A%20%20%20%20typst(r%22%22%22%0A%20%20%20%20%23import%20%22%40preview%2Fphysica%3A0.9.3%22%3A%20eval%2C%20dv%0A%0A%20%20%20%20%E8%AE%BE%20%24z%3A%3Dy'%24%EF%BC%8C%E5%88%99%0A%0A%20%20%20%20%24%20dv(%2Cx)%20mat(y%3Bz)%20%3D%20mat(z%3B%20-y)%20%2B%20mat(0%3B%20-x).%20%24%0A%20%20%20%20%24eval(y)_0%20%3D%200%24%2C%20%24eval(y)_1%20%3D%200%24.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20%E8%AF%95%E4%B8%80%E8%AF%95%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(cos%2C%20np%2C%20plt%2C%20ref%2C%20sin)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%0A%20%20%20%20plt.plot(ref(_x)%2C%20cos(_x)%20%2F%20sin(1)%20-%201)%0A%20%20%20%20plt.scatter(%5B0%5D%2C%20%5B1%20%2F%20sin(1)%20-%201%5D)%0A%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.xlabel(%22%24y%24%22)%0A%20%20%20%20plt.ylabel(r%22%24z%20%3D%20y'%24%22)%0A%20%20%20%20plt.title(%22%E7%9C%9F%E8%A7%A3%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20the_x%20%3D%20mo.ui.slider(0%2C%201%2C%200.1)%0A%20%20%20%20the_x%0A%20%20%20%20return%20(the_x%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np%2C%20plt%2C%20the_x)%3A%0A%20%20%20%20_y%20%3D%20np.linspace(-1%2C%201%2C%2023)%0A%20%20%20%20_z%20%3D%20np.linspace(-1%2C%201%2C%20_y.size)%0A%0A%20%20%20%20_ys%2C%20_zs%20%3D%20np.meshgrid(_y%2C%20_z)%0A%0A%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%20%20%20%20ax.quiver(_y%2C%20_z%2C%20_zs%2C%20-_ys%20-%20the_x.value)%0A%20%20%20%20ax.set_xlabel(%22%24y%24%22)%0A%20%20%20%20ax.set_ylabel(%22%24z%20%3D%20y'%24%22)%0A%20%20%20%20ax.set_title(rf%22%24x%20%3D%20%7Bthe_x.value%7D%24%20%E6%97%B6%E7%9A%84%E5%9C%BA%22)%0A%20%20%20%20fig%0A%20%20%20%20return%20ax%2C%20fig%0A%0A%0A%40app.cell%0Adef%20__(mo%2C%20sin)%3A%0A%20%20%20%20the_y_0%20%3D%20mo.ui.slider(-0.5%2C%200.5%2C%200.1%2C%20value%3D0)%0A%20%20%20%20the_z_0%20%3D%20mo.ui.slider(-0.5%2C%200.5%2C%200.1%2C%20value%3D1%20%2F%20sin(1)%20-%201)%0A%20%20%20%20mo.md(f%22%24y_0%24%3A%20%7Bthe_y_0%7D%5Cn%5Cn%24z_0%24%3A%20%7Bthe_z_0%7D%22)%0A%20%20%20%20return%20the_y_0%2C%20the_z_0%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(cos%2C%20np%2C%20plt%2C%20sin%2C%20the_y_0%2C%20the_z_0)%3A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%0A%20%20%20%20plt.plot(%0A%20%20%20%20%20%20%20%20sin(_x)%20*%20(1%20%2B%20the_z_0.value)%20%2B%20cos(_x)%20*%20the_y_0.value%20-%20_x%2C%0A%20%20%20%20%20%20%20%20cos(_x)%20*%20(1%20%2B%20the_z_0.value)%20-%20sin(_x)%20*%20the_y_0.value%20-%201%2C%0A%20%20%20%20)%0A%20%20%20%20plt.scatter(%5Bthe_y_0.value%5D%2C%20%5Bthe_z_0.value%5D)%0A%0A%20%20%20%20plt.xlim(-1%2C%201)%0A%20%20%20%20plt.ylim(-1%2C%201)%0A%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.xlabel(%22%24y%24%22)%0A%20%20%20%20plt.ylabel(r%22%24z%20%3D%20y'%24%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20the_x_max%20%3D%20mo.ui.slider(0.1%2C%201%2C%200.1%2C%20value%3D0.8)%0A%20%20%20%20the_x_max%0A%20%20%20%20return%20(the_x_max%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(cos%2C%20np%2C%20plt%2C%20sin%2C%20the_x_max)%3A%0A%20%20%20%20_x%20%3D%20np.arange(0%2C%20the_x_max.value%2C%200.04)%5B%3A%2C%20np.newaxis%5D%0A%0A%20%20%20%20_y_0%2C%20_z_0%20%3D%20np.meshgrid(%0A%20%20%20%20%20%20%20%20np.linspace(-0.5%2C%200.5%2C%2014)%2C%0A%20%20%20%20%20%20%20%20np.linspace(-0.5%2C%200.5%2C%2014)%2C%0A%20%20%20%20)%0A%20%20%20%20_y_0%20%3D%20_y_0.reshape(1%2C%20-1)%0A%20%20%20%20_z_0%20%3D%20_z_0.reshape(1%2C%20-1)%0A%0A%20%20%20%20plt.plot(%0A%20%20%20%20%20%20%20%20sin(_x)%20*%20(1%20%2B%20_z_0)%20%2B%20cos(_x)%20*%20_y_0%20-%20_x%2C%0A%20%20%20%20%20%20%20%20cos(_x)%20*%20(1%20%2B%20_z_0)%20-%20sin(_x)%20*%20_y_0%20-%201%2C%0A%20%20%20%20%20%20%20%20alpha%3D0.6%2C%0A%20%20%20%20)%0A%0A%20%20%20%20plt.xlim(-1%2C%201)%0A%20%20%20%20plt.ylim(-1%2C%201)%0A%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.xlabel(%22%24y%24%22)%0A%20%20%20%20plt.ylabel(r%22%24z%20%3D%20y'%24%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20%E6%AD%A3%E5%BC%8F%E8%AF%95%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20sin%2C%20x_max%2C%20x_min)%3A%0A%20%20%20%20from%20collections%20import%20deque%0A%0A%20%20%20%20from%20scipy.integrate%20import%20ode%0A%0A%0A%20%20%20%20def%20f_shoot(x%3A%20float%2C%20y_z%3A%20np.ndarray)%20-%3E%20list%5Bfloat%5D%3A%0A%20%20%20%20%20%20%20%20%22%22%22(y%2Cz)%20%E2%86%92%20(y'%2Cz')%22%22%22%0A%20%20%20%20%20%20%20%20return%20%5By_z%5B1%5D%2C%20-y_z%5B0%5D%20-%20x%5D%0A%0A%0A%20%20%20%20_r%20%3D%20ode(f_shoot).set_integrator(%22vode%22)%0A%0A%0A%20%20%20%20%40np.vectorize%0A%20%20%20%20def%20shoot(z_0%3A%20float%2C%20*%2C%20y_0%3D0.0%2C%20dx%3D0.02)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20%22%22%22z%E2%82%80%20%E2%86%A6%20y%E2%82%81%22%22%22%0A%20%20%20%20%20%20%20%20_r.set_initial_value(%5By_0%2C%20z_0%5D%2C%20x_min)%0A%0A%20%20%20%20%20%20%20%20while%20_r.successful()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20y_z%20%3D%20_r.integrate(_r.t%20%2B%20dx)%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20_r.t%20%3E%3D%20x_max%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20y_z%5B0%5D%0A%0A%0A%20%20%20%20shoot(1%20%2F%20sin(1)%20-%201)%0A%20%20%20%20return%20deque%2C%20f_shoot%2C%20ode%2C%20shoot%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20plt%2C%20shoot)%3A%0A%20%20%20%20_z_0%20%3D%20np.linspace(-0.5%2C%200.5%2C%2014)%0A%20%20%20%20_y_1%20%3D%20shoot(_z_0)%0A%0A%20%20%20%20plt.plot(_z_0%2C%20_y_1%2C%20marker%3D%22%2B%22)%0A%20%20%20%20plt.xlabel(r%22%24z_0%24%22)%0A%20%20%20%20plt.ylabel(r%22%24y_1%24%22)%0A%20%20%20%20plt.hlines(0%2C%20*plt.xlim()%2C%20%22red%22)%0A%20%20%20%20plt.grid()%0A%20%20%20%20plt.gcf()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%E5%9B%9E%E5%A4%B4%E4%B8%80%E7%9C%8B%EF%BC%8C%E8%BF%98%E7%9C%9F%E6%98%AF%E4%B8%80%E6%AC%A1%E5%87%BD%E6%95%B0%E5%91%A2%E2%80%A6%E2%80%A6%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(shoot)%3A%0A%20%20%20%20from%20scipy.optimize%20import%20fsolve%0A%0A%20%20%20%20z_0_shoot%20%3D%20fsolve(shoot%2C%200)%0A%20%20%20%20assert%20z_0_shoot.size%20%3D%3D%201%0A%20%20%20%20z_0_shoot%20%3D%20z_0_shoot%5B0%5D%0A%0A%20%20%20%20z_0_shoot%2C%20shoot(z_0_shoot)%0A%20%20%20%20return%20fsolve%2C%20z_0_shoot%0A%0A%0A%40app.cell%0Adef%20__(mo%2C%20sin%2C%20z_0_shoot)%3A%0A%20%20%20%20mo.md(f%22%24z_0%24%20%E7%9B%B8%E5%AF%B9%E8%AF%AF%E5%B7%AE%EF%BC%9A%7Bz_0_shoot%20%2F%20(1%20%2F%20sin(1)%20-%201)%20-%201%3A.3%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%E7%94%A8%E4%B8%8E%E5%85%B6%E5%AE%83%E6%96%B9%E6%B3%95%E8%AE%A1%E7%AE%97%E8%AF%AF%E5%B7%AE%E6%97%B6%E7%9B%B8%E5%90%8C%E7%9A%84%E6%AD%A5%E9%95%BF%E8%AE%A1%E7%AE%97%20%24y%24%EF%BC%8C%E7%AE%97%E4%B8%80%E4%B8%8B%20%24y%24%20%E7%9A%84%E8%AF%AF%E5%B7%AE%E3%80%82%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(deque%2C%20f_shoot%2C%20mo%2C%20np%2C%20ode%2C%20plt%2C%20ref%2C%20x_min%2C%20z_0_shoot)%3A%0A%20%20%20%20_r%20%3D%20ode(f_shoot).set_integrator(%22vode%22)%0A%20%20%20%20_r.set_initial_value(%5B0.0%2C%20z_0_shoot%5D%2C%20x_min)%0A%0A%20%20%20%20_x%20%3D%20np.linspace(0%2C%201%2C%20123)%0A%20%20%20%20_y%20%3D%20deque()%0A%20%20%20%20for%20_xx%20in%20_x%3A%0A%20%20%20%20%20%20%20%20if%20_xx%20%3D%3D%200.0%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_y.append(0.0)%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20assert%20_r.successful()%0A%20%20%20%20%20%20%20%20%20%20%20%20_y.append(_r.integrate(_xx)%5B0%5D)%0A%20%20%20%20_y%20%3D%20np.array(list(_y))%0A%0A%20%20%20%20plt.plot(_x%2C%20_y%20-%20ref(_x))%0A%20%20%20%20plt.xlabel(%22%24x%24%22)%0A%20%20%20%20plt.ylabel(r%22%24%5Chat%20y%20-%20y%24%22)%0A%20%20%20%20plt.title(%22%E8%AF%AF%E5%B7%AE%22)%0A%20%20%20%20plt.grid()%0A%0A%20%20%20%20mo.md(rf%22%22%22%0A%20%20%20%20%E8%AF%AF%E5%B7%AE%E7%BB%9D%E5%AF%B9%E5%80%BC%E5%B9%B3%E5%9D%87%EF%BC%9A%7Babs(_y%20-%20ref(_x)).mean()%3A.3%7D%0A%20%20%20%20%7Bmo.as_html(plt.gcf())%7D%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%E5%9C%A8%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%E5%92%8C%E5%B7%AE%E5%88%86%E6%B3%95%E4%B9%8B%E9%97%B4%EF%BC%8C%E4%B8%8D%E8%BF%87%E5%AF%B9%E6%89%93%E9%9D%B6%E6%B3%95%E5%AF%B9%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E6%BB%A1%E8%B6%B3%E5%BE%97%E6%9B%B4%E5%A5%BD%E3%80%82%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
95cba83c0b1ecb94b2d2ebeacbe025a18defa02a3933c5fa0728784ee05b60c5