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%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%95%B0%E5%80%A4%E7%A9%8D%E5%88%86%E6%B3%95%0A%20%20%20%20legacy%2Fsimulation%2FIntegration.ipynb%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%80%81%E5%86%86%E5%91%A8%E7%8E%87%E3%81%AE%E7%A9%8D%E5%88%86%E8%A1%A8%E7%8F%BE%E3%82%92%E9%A1%8C%E6%9D%90%E3%81%AB%E5%90%84%E6%89%8B%E6%B3%95%E3%81%AE%E7%B2%BE%E5%BA%A6%E3%82%92%E6%AF%94%E8%BC%83%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(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%E7%A9%8D%E5%88%86%E6%B3%95%E3%81%AE%E7%B2%BE%E5%BA%A6%E3%82%92%E5%86%86%E5%91%A8%E7%8E%87%E3%81%AE%E8%A8%88%E7%AE%97%0A%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20I%5Cequiv%5Cint_a%5Eb%20dx%20f(x)%0A%20%20%20%20%20%20%20%20%3D%5Cint_%7B0%7D%5E1dx%5Cfrac%7B4%7D%7B1%2Bx%5E2%7D%3D%5Cpi%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A7%E6%AF%94%E8%BC%83%E3%81%99%E3%82%8B%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%E5%8F%B0%E5%BD%A2%E5%85%AC%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%E5%8F%B0%E5%BD%A2%E5%85%AC%E5%BC%8F%E3%81%AF%E7%A9%8D%E5%88%86%E3%82%92%E5%8D%98%E7%B4%94%E3%81%AA%E5%B7%AE%E5%88%86%E3%81%A7%E8%A1%A8%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A7%0A%20%20%20%20%24%24%0A%20%20%20%20I%5Csimeq%5Cfrac%7B%5CDelta%20x%7D%7B2%7D%5Cleft(f(x_0)%2B2%5Csum_%7Bk%3D1%7D%5E%7Bn-1%7Df(x_k)%2Bf(x_n)%5Cright)%2C%5Cquad%0A%20%20%20%20%5CDelta%20x%5Cequiv%5Cfrac%7Bx_n%20-%20x_0%7D%7Bn%7D%2C%5Cquad%20x_k%5Cequiv%20x_0%20%2B%20k%5CDelta%20x%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A7%E3%81%82%E3%82%8B%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%0A%20%20%20%20%23%3A%20%E8%A2%AB%E7%A9%8D%E5%88%86%E9%96%A2%E6%95%B0%0A%20%20%20%20def%20integrand(x%3A%20float)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20return%204%20%2F%20(1%20%2B%20x**2)%0A%0A%20%20%20%20return%20integrand%2C%20np%0A%0A%0A%40app.cell%0Adef%20_(integrand)%3A%0A%20%20%20%20from%20typing%20import%20Callable%0A%0A%20%20%20%20def%20trapezoid(integrand%3A%20Callable%5B%5Bfloat%5D%2C%20float%5D%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x_0%3A%20float%2C%20x_n%3A%20float%2C%20num%3A%20int)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20%23%20%E5%88%86%E5%89%B2%E5%B9%85%0A%20%20%20%20%20%20%20%20dx%3A%20float%20%3D%201.%2Fnum%0A%20%20%20%20%20%20%20%20%23%20%E5%8F%B0%E5%BD%A2%E5%85%AC%E5%BC%8F%0A%20%20%20%20%20%20%20%20sum%3A%20float%20%3D%20dx%20%2F%202%20*%20(integrand(x_0)%20%2B%20integrand(x_n))%0A%20%20%20%20%20%20%20%20for%20k%20in%20range(1%2C%20num)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20x_k%20%3D%20x_0%20%2B%20k%20*%20dx%0A%20%20%20%20%20%20%20%20%20%20%20%20sum%20%2B%3D%20dx%20*%20integrand(x_k)%0A%20%20%20%20%20%20%20%20return%20sum%0A%0A%20%20%20%20print(f%22pi%20%3D%20%7Btrapezoid(integrand%2C%200%2C%201%2C%20100)%3A.10f%7D%22)%0A%20%20%20%20return%20Callable%2C%20trapezoid%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%82%B7%E3%83%B3%E3%83%97%E3%82%BD%E3%83%B3%E5%85%AC%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%82%B7%E3%83%B3%E3%83%97%E3%82%BD%E3%83%B3%E5%85%AC%E5%BC%8F%E3%81%AF%202%20%E6%AC%A1%E3%81%AE%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E3%83%BB%E3%82%B3%E3%83%BC%E3%83%84%E5%85%AC%E5%BC%8F%EF%BC%882%20%E6%AC%A1%E3%81%AE%E3%83%A9%E3%82%B0%E3%83%A9%E3%83%B3%E3%82%B8%E3%83%A5%E8%A3%9C%E9%96%93%E3%81%AB%E3%82%88%E3%82%8B%E7%A9%8D%E5%88%86%EF%BC%89%E3%81%A7%0A%20%20%20%20%24%24%0A%20%20%20%20I%5Csimeq%5Cfrac%7B%5CDelta%20x%7D%7B3%7D%5Cleft(f(x_0)%2B4%5Csum_%7Bk%3D1%2C3%2C%5Ccdots%7D%5E%7B2n-1%7Df(x_k)%2B2%5Csum_%7Bk%3D2%2C4%2C%5Ccdots%7D%5E%7B2n-2%7Df(x_k)%2Bf(x_%7B2n%7D)%5Cright)%2C%5Cquad%0A%20%20%20%20%5CDelta%20x%5Cequiv%5Cfrac%7Bx_%7B2n%7D-x_0%7D%7B2n%7D%2C%5Cquad%0A%20%20%20%20x_k%5Cequiv%20x_0%20%2B%20k%5CDelta%20x%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A8%E3%81%AA%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(Callable%2C%20integrand%2C%20np)%3A%0A%20%20%20%20def%20simpson(integrand%3A%20Callable%5B%5Bfloat%5D%2C%20float%5D%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x_0%3A%20float%2C%20x_2n%3A%20float%2C%20num%3A%20int)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20dx%20%3D%20(x_2n%20-%20x_0)%20%2F%20(2%20*%20num)%0A%20%20%20%20%20%20%20%20sum%20%3D%20dx%20%2F%203%20*%20(integrand(x_0)%20%2B%20integrand(x_2n))%0A%0A%20%20%20%20%20%20%20%20%23%3A%20%E5%A5%87%E6%95%B0%E3%81%AE%E5%A0%B4%E5%90%88%0A%20%20%20%20%20%20%20%20for%20k%20in%20np.arange(1%2C%202*num%2C%202)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20x_k%20%3D%20x_0%20%2B%20k%20*%20dx%0A%20%20%20%20%20%20%20%20%20%20%20%20sum%20%2B%3D%20dx%20*%204%2F3%20*%20integrand(x_k)%0A%20%20%20%20%20%20%20%20%23%3A%20%E5%81%B6%E6%95%B0%E3%81%AE%E5%A0%B4%E5%90%88%0A%20%20%20%20%20%20%20%20for%20k%20in%20np.arange(2%2C%202*num%2C%202)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20x_k%20%3D%20x_0%20%2B%20k%20*%20dx%0A%20%20%20%20%20%20%20%20%20%20%20%20sum%20%2B%3D%20dx%20*%202%2F3%20*%20integrand(x_k)%0A%20%20%20%20%20%20%20%20return%20sum%0A%0A%20%20%20%20print(f%22pi%20%3D%20%7Bsimpson(integrand%2C%200%2C%201%2C%2050)%3A.15f%7D%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%83%AD%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B0%E6%B3%95%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%AD%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B0%E6%B3%95%E3%81%AF%E5%8F%8E%E6%9D%9F%E5%80%A4%E3%81%8C%E7%9C%9F%E3%81%AE%E7%A9%8D%E5%88%86%E5%80%A4%E3%81%A7%E3%81%82%E3%82%8B%E3%82%88%E3%81%86%E3%81%AA%E5%8F%8E%E6%9D%9F%E5%88%97%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E3%80%81%E8%A3%9C%E5%A4%96%E3%82%92%E8%A1%8C%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E7%A9%8D%E5%88%86%E5%80%A4%E3%82%92%E6%B1%82%E3%82%81%E3%82%8B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%93%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E5%8F%8E%E6%9D%9F%E5%88%97%E3%82%92%E5%8F%B0%E5%BD%A2%E5%85%AC%E5%BC%8F%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cbegin%7Baligned%7D%0A%20%20%20%20%26T_0%5En%5Cequiv%5Cfrac%7B%5CDelta%20x%7D%7B2%7D%5Cleft(f(x_0)%2B2%5Csum_%7Bk%3D1%7D%5E%7B2%5En-1%7Df(x_k)%2Bf(x_%7B2%5En%7D)%5Cright)%5Coverset%7Bn%5Crightarrow%5Cinfty%7D%7B%5Crightarrow%7DI%2C%5C%5C%0A%20%20%20%20%26%5CDelta%20x%5Cequiv%5Cfrac%7Bx_%7B2%5En%7D-x_0%7D%7B2%5En%7D%2C%5Cquad%20x_k%5Cequiv%20k%5CDelta%20x%0A%20%20%20%20%5Cend%7Baligned%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E4%BD%9C%E3%82%8B%E3%80%82%0A%20%20%20%20%E4%B8%8A%E3%81%AE%E6%B7%BB%E5%AD%97%E3%81%AF%E5%88%86%E5%89%B2%E6%95%B0%E3%81%AE%E6%B7%BB%E5%AD%97%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E4%B8%8B%E3%81%AE%E6%B7%BB%E5%AD%97%E3%81%AF%E8%A3%9C%E5%A4%96%E5%9B%9E%E6%95%B0%E3%81%AE%E6%B7%BB%E5%AD%97%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%83%AD%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B0%E6%B3%95%E3%81%AF%E5%90%84%20%24T%5En_0%24%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%0A%20%20%20%20%24%24%0A%20%20%20%20T%5E%7Bn%2B1%7D_m%20%5Cequiv%5Cfrac%7B4%5Em%20T%5E%7Bn%2B1%7D_%7Bm-1%7D%20-%20T%5En_%7Bm-1%7D%7D%7B4%5Em-1%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E8%A8%88%E7%AE%97%E3%81%AF%0A%20%20%20%20%24%24%0A%20%20%20%20T_0%5E0%5Coverset%7B%5Ctext%7B%E5%88%86%E5%89%B2%7D%7D%7B%5Crightarrow%7D%0A%20%20%20%20T_1%5E0%5Coverset%7B%5Ctext%7B%E8%A3%9C%E5%A4%96%7D%7D%7B%5Crightarrow%7D%0A%20%20%20%20T_1%5E1%5Coverset%7B%5Ctext%7B%E5%88%86%E5%89%B2%7D%7D%7B%5Crightarrow%7D%0A%20%20%20%20T_2%5E0%5Coverset%7B%5Ctext%7B%E8%A3%9C%E5%A4%96%7D%7D%7B%5Crightarrow%7D%0A%20%20%20%20T_2%5E1%5Coverset%7B%5Ctext%7B%E8%A3%9C%E5%A4%96%7D%7D%7B%5Crightarrow%7D%0A%20%20%20%20T_2%5E2%5Coverset%7B%5Ctext%7B%E5%88%86%E5%89%B2%7D%7D%7B%5Crightarrow%7D%0A%20%20%20%20%5Ccdots%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%AE%E9%A0%86%E3%81%AB%E8%A1%8C%E3%81%84%E6%9B%B4%E6%96%B0%E5%B9%85%E3%81%8C%E4%B8%80%E5%AE%9A%E4%BB%A5%E4%B8%8B%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%BE%E3%81%A7%E8%A1%8C%E3%81%86%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(Callable%2C%20integrand%2C%20trapezoid)%3A%0A%20%20%20%20def%20romberg(integrand%3A%20Callable%5B%5Bfloat%5D%2C%20float%5D%2C%20num%3A%20int)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20epsilon%3A%20float%20%3D%201e-10%0A%20%20%20%20%20%20%20%20%23%3A%20%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AF%E4%B8%8B%E6%B7%BB%E5%AD%97%0A%20%20%20%20%20%20%20%20T_list%3A%20list%20%3D%20%5Btrapezoid(integrand%2C%200%2C%201%2C%201)%5D%0A%20%20%20%20%20%20%20%20for%20up_index%20in%20range(1%2C%20num%2B1)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%3A%20T_0%20%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E6%9B%B4%E6%96%B0%0A%20%20%20%20%20%20%20%20%20%20%20%20T_0%3A%20float%20%3D%20trapezoid(integrand%2C%200%2C%201%2C%202%20**%20up_index)%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E7%B5%82%E4%BA%86%E5%88%A4%E5%AE%9A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20abs(T_0%20-%20T_list%5B-1%5D)%20%3C%20epsilon%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20T_0%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%3A%202%5Eup_index%20%E5%88%86%E5%89%B2%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%20Romberg%20%E8%A3%9C%E5%A4%96%0A%20%20%20%20%20%20%20%20%20%20%20%20T_tmp_list%3A%20list%20%3D%20%5BT_0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20low_index%20in%20range(1%2C%20up_index%2B1)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20T_tmp_list.append(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(4.%20**%20low_index%20*%20T_tmp_list%5Blow_index-1%5D%20-%20T_list%5Blow_index-1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%20(4.%20**%20low_index%20-%201.)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%3A%20%E7%B5%82%E4%BA%86%E5%88%A4%E5%AE%9A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20low_index%20%3E%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20abs(T_tmp_list%5B-1%5D%20-%20T_tmp_list%5B-2%5D)%20%3C%20epsilon%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20T_tmp_list%5B-1%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%3A%20%E3%83%AA%E3%82%B9%E3%83%88%E6%9B%B4%E6%96%B0%0A%20%20%20%20%20%20%20%20%20%20%20%20T_list%20%3D%20T_tmp_list%0A%20%20%20%20%20%20%20%20return%20T_list%5B-1%5D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20print(f%22pi%20%3D%20%7Bromberg(integrand%2C%206)%3A.15f%7D%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%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E7%A9%8D%E5%88%86%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%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E7%A9%8D%E5%88%86%E3%81%AF%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E5%A4%9A%E9%A0%85%E5%BC%8F%E3%81%AE%E3%82%BC%E3%83%AD%E7%82%B9%0A%20%20%20%20%24%24%0A%20%20%20%20x_1%5Cleq%20x_2%5Cleq%5Ccdots%5Cleq%20x_k%5Cleq%5Ccdots%5Cleq%20x_N%5Cquad%0A%20%20%20%20%5Ctext%7Bs.t.%7D%5Cquad%20P_N(x_k)%3D0%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E5%A4%9A%E9%A0%85%E5%BC%8F%E3%81%AF%E3%83%9C%E3%83%8D%E3%81%AE%E6%BC%B8%E5%8C%96%E5%BC%8F%0A%20%20%20%20%24%24%0A%20%20%20%20P_0(x)%3D1%2C%5Cquad%0A%20%20%20%20P_1(x)%3Dx%2C%5Cquad%0A%20%20%20%20(n%2B1)P_%7Bn%2B1%7D(x)%3D(2n%2B1)xP_n(x)-nP_%7Bn-1%7D(x)%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E7%94%9F%E6%88%90%E3%81%95%E3%82%8C%E3%82%8B%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%20def%20legendre(n%3A%20int%2C%20x%3A%20float)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E5%A4%9A%E9%A0%85%E5%BC%8F%0A%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20if%20n%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%201%0A%20%20%20%20%20%20%20%20elif%20n%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20x%0A%0A%20%20%20%20%20%20%20%20p%3A%20list%5Bfloat%5D%20%3D%20%5B0.%2C%201.%2C%20x%5D%0A%0A%20%20%20%20%20%20%20%20for%20k%20in%20range(n-1)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20p%5B0%5D%20%3D%20p%5B1%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20p%5B1%5D%20%3D%20p%5B2%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%83%9C%E3%83%8D%E3%81%AE%E6%BC%B8%E5%8C%96%E5%BC%8F%0A%20%20%20%20%20%20%20%20%20%20%20%20p%5B2%5D%20%3D%20((2*k%2B3)%20*%20x%20*%20p%5B1%5D%20-%20(k%2B1)%20*%20p%5B0%5D)%20%2F%20(k%2B2)%0A%20%20%20%20%20%20%20%20return%20p%5B2%5D%0A%0A%20%20%20%20print(f%22P_10(0.148874)%20%3D%20%7Blegendre(10%2C%200.148874)%3A.4e%7D%22)%0A%20%20%20%20return%20(legendre%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%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E5%A4%9A%E9%A0%85%E5%BC%8F%E3%81%AE%E3%82%BC%E3%83%AD%E7%82%B9%E3%81%AF%E4%BA%8C%E5%88%86%E6%B3%95%E3%81%A7%E6%B1%82%E3%82%81%E3%82%8B%3A%0A%0A%20%20%20%201.%20%E8%A7%A3%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E9%A0%98%E5%9F%9F%20%24%5Ba%2Cb%5D%24%20%E3%82%92%E4%BA%8B%E5%89%8D%E3%81%AB%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%0A%20%20%20%202.%20%E4%B8%AD%E7%82%B9%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E9%A0%98%E5%9F%9F%E3%82%92%20%24%5Ba%2C(a%2Bb)%2F2%5D%24%20%E3%81%A8%20%24%5B(a%2Bb)%2F2%2Cb%5D%24%20%E3%81%AE2%E3%81%A4%E3%81%AB%E5%88%86%E5%89%B2%E3%81%99%E3%82%8B%0A%20%20%20%203.%20%E8%A7%A3%E3%82%92%E5%90%AB%E3%82%80%E9%A0%98%E5%9F%9F%E3%82%92%E4%B8%AD%E9%96%93%E5%80%A4%E3%81%AE%E5%AE%9A%E7%90%86%E3%81%A7%E5%88%A4%E5%AE%9A%E3%81%99%E3%82%8B%0A%20%20%20%204.%20%E8%A7%A3%E3%82%92%E5%90%AB%E3%82%80%E9%A0%98%E5%9F%9F%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%A6%E6%96%B0%E3%81%9F%E3%81%AB%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E9%A0%98%E5%9F%9F%E3%81%A8%E3%81%97%E3%81%A6%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%99%0A%20%20%20%205.%20%E9%A0%98%E5%9F%9F%E5%B9%85%E3%81%8C%E4%B8%80%E5%AE%9A%E4%BB%A5%E4%B8%8B%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%89%E7%B5%82%E4%BA%86%0A%0A%20%20%20%20%E4%B8%AD%E9%96%93%E5%80%A4%E3%81%AE%E5%AE%9A%E7%90%86%E3%81%8B%E3%82%89%E9%A0%98%E5%9F%9F%20%24%5Ba%2Cb%5D%24%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%20%24f(a)f(b)%3C0%24%20%E3%81%AA%E3%82%89%E3%80%81%E3%81%93%E3%81%AE%E9%A0%98%E5%9F%9F%20%24%5Ba%2Cb%5D%24%20%E3%81%AB%20%24f(x)%3D0%24%20%E3%81%AE%E8%A7%A3%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E4%BA%8B%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(Callable%2C%20legendre)%3A%0A%20%20%20%20def%20bisection(func%3A%20Callable%5B%5Bfloat%5D%2Cfloat%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left%3A%20float%2C%20right%3A%20float)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20%E4%BA%8C%E5%88%86%E6%B3%95%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%0A%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20%23%20%E4%BA%8C%E5%88%86%E6%B3%95%E3%81%A7%E8%A7%A3%E3%81%91%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%0A%20%20%20%20%20%20%20%20if%20func(left)%20*%20func(right)%20%3E%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20raise%20Exception('Cannot%20be%20solved%20by%20bisection%20method!')%0A%0A%20%20%20%20%20%20%20%20%23%20%E6%95%B0%E5%80%A4%E7%B2%BE%E5%BA%A6%0A%20%20%20%20%20%20%20%20epsilon%3A%20float%20%3D%201e-10%0A%0A%20%20%20%20%20%20%20%20middle%3A%20float%20%3D%200.%0A%20%20%20%20%20%20%20%20while%20True%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E4%B8%AD%E7%82%B9%E8%A8%88%E7%AE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20middle%20%3D%20(left%20%2B%20right)%2F2.%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E4%B8%AD%E9%96%93%E5%80%A4%E3%81%AE%E5%AE%9A%E7%90%86%E3%81%8B%E3%82%89%E8%A7%A3%E3%82%92%E5%90%AB%E3%82%80%E5%8C%BA%E9%96%93%E3%82%92%E9%81%B8%E6%8A%9E%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20func(left)%20*%20func(middle)%20%3C%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20right%20%3D%20middle%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left%20%3D%20middle%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E7%B5%82%E4%BA%86%E5%88%A4%E5%AE%9A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20abs(func(left)%20-%20func(right))%20%3C%20epsilon%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%0A%0A%20%20%20%20%20%20%20%20middle%20%3D%20(left%2Bright)%2F2.%0A%20%20%20%20%20%20%20%20return%20middle%0A%0A%20%20%20%20print(f%22x%20%3D%20%7Bbisection(lambda%20x%3A%20legendre(3%2C%20x)%2C%200.1%2C%201)%3A.4f%7D%20s.t.%20P_3(x)%20%3C%201e-10%22)%0A%20%20%20%20return%20(bisection%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%24n%24%20%E6%AC%A1%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E9%96%A2%E6%95%B0%E3%81%AE%E6%AD%A3%E3%81%AE%E3%82%BC%E3%83%AD%E7%82%B9%20%24x_k%24%20%E3%81%AF%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cbegin%7Baligned%7D%0A%20%20%20%20%26n%3D2m%5Cquad%5Ctext%7B(%24n%24%20is%20even)%7D%5C%5C%0A%20%20%20%20%26n%3D2m%2B1%5Cquad%5Ctext%7B(%24n%24%20is%20odd)%7D%0A%20%20%20%20%5Cend%7Baligned%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%A8%E3%81%99%E3%82%8B%E3%81%A8%0A%20%20%20%20%24%24%0A%20%20%20%20%5Csin%5Cleft(%5Cfrac%7Bn-1-2k%7D%7B2n%2B1%7D%5Cpi%5Cright)%0A%20%20%20%20%3C%20x_k%20%3C%0A%20%20%20%20%5Csin%5Cleft(%5Cfrac%7Bn%2B1-2k%7D%7B2n%2B1%7D%5Cpi%5Cright)%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%AB%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%BE%E3%81%9F%24-x_k%24%E3%82%82%E3%82%BC%E3%83%AD%E7%82%B9%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E7%9F%A5%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%20%20%20%20%24n%24%20%E3%81%8C%E5%A5%87%E6%95%B0%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AF%20%24x%3D0%24%20%E3%82%82%E3%82%BC%E3%83%AD%E7%82%B9%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%93%E3%81%AE%E6%80%A7%E8%B3%AA%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E9%96%A2%E6%95%B0%E3%81%AE%E3%82%BC%E3%83%AD%E7%82%B9%E3%82%92%E4%BA%8C%E5%88%86%E6%B3%95%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E6%B1%82%E3%82%81%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(bisection%2C%20legendre%2C%20np)%3A%0A%20%20%20%20import%20math%0A%0A%20%20%20%20def%20legendre_zeros(num%3A%20int)%20-%3E%20list%3A%0A%20%20%20%20%20%20%20%20%23%20%E5%88%9D%E6%9C%9F%E5%8C%96%0A%20%20%20%20%20%20%20%20m%3A%20int%20%3D%200%0A%20%20%20%20%20%20%20%20zeros%3A%20list%5Bfloat%20%5D%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20if%20num%20%25%202%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20m%20%3D%20num%20%2F%202%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20m%20%3D%20(num%20-%201)%20%2F%202%0A%20%20%20%20%20%20%20%20%20%20%20%20zeros.append(0)%0A%0A%20%20%20%20%20%20%20%20%23%20%E4%BA%8C%E5%88%86%E6%B3%95%E3%81%AE%E5%8C%BA%E9%96%93%E7%AE%97%E5%87%BA%0A%20%20%20%20%20%20%20%20sections%3A%20list%5Bfloat%5D%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20k%20in%20np.arange(0%2C%20m%2B1%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20boundary%3A%20float%20%3D%20math.sin((num-(2*m%2B1)%2B2*k)%2F(2*num%2B1)%20*%20math.pi)%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20boundary%20%3E%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sections.append(boundary)%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sections.append(1e-10)%0A%0A%20%20%20%20%20%20%20%20%23%20%E3%82%BC%E3%83%AD%E7%82%B9%E3%81%AE%E8%A8%88%E7%AE%97%0A%20%20%20%20%20%20%20%20for%20k%20in%20range(0%2C%20int(m))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20zero_tmp%3A%20float%20%3D%20bisection(lambda%20x%3A%20legendre(num%2C%20x)%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sections%5Bk%5D%2C%20sections%5Bk%2B1%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20zeros.append(zero_tmp)%0A%20%20%20%20%20%20%20%20%20%20%20%20zeros.insert(0%2C%20-zero_tmp)%0A%20%20%20%20%20%20%20%20return%20zeros%0A%20%20%20%20print(legendre_zeros(5))%0A%20%20%20%20return%20(legendre_zeros%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%B7%AE%E5%88%86%E8%BF%91%E4%BC%BC%0A%20%20%20%20%24%24%0A%20%20%20%20I%5Cequiv%5Cint_%7B-1%7D%5E1dx%20%5Ctilde%7Bf%7D(x)%0A%20%20%20%20%5Csimeq%5Csum_%7Bk%3D1%7D%5EN%20w_k%20%5Ctilde%7Bf%7D(x_k)%2C%5Cquad%0A%20%20%20%20w_k%5Cequiv%202%5Cleft%5B%5Csum_%7Bl%3D0%7D%5E%7BN-1%7D(2l%2B1)%5Cleft%5BP_l(x_k)%5Cright%5D%5E2%5Cright%5D%5E%7B-1%7D%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%AE%E4%BF%82%E6%95%B0%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(legendre%2C%20legendre_zeros)%3A%0A%20%20%20%20def%20legendre_coeff(num%3A%20int)%20-%3E%20list%3A%0A%20%20%20%20%20%20%20%20zeros%3A%20list%5Bfloat%5D%20%3D%20legendre_zeros(num)%0A%0A%20%20%20%20%20%20%20%20coeff%3A%20list%5Bfloat%5D%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20k%20in%20range(0%2C%20num)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20sum%3A%20float%20%3D%200%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20ell%20in%20range(0%2C%20num)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sum%20%2B%3D%20(2%20*%20ell%20%2B%201)%20*%20legendre(ell%2C%20zeros%5Bk%5D)%20**%202%0A%20%20%20%20%20%20%20%20%20%20%20%20coeff.append(2%2Fsum)%0A%20%20%20%20%20%20%20%20return%20coeff%0A%20%20%20%20legendre_coeff(5)%0A%20%20%20%20return%20(legendre_coeff%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%E7%A9%8D%E5%88%86%E3%82%92%E5%A4%89%E5%BD%A2%0A%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20I%3D%5Cint_%7B0%7D%5E1dx%5Cfrac%7B4%7D%7B1%2Bx%5E2%7D%0A%20%20%20%20%20%20%20%20%3D%5Cfrac%7B1%7D%7B2%7D%5Cint_%7B-1%7D%5E1dx%5Cfrac%7B4%7D%7B1%2Bx%5E2%7D%0A%20%20%20%20%20%20%20%20%3D%5Cpi%0A%20%20%20%20%24%24%0A%20%20%20%20%E3%81%97%E3%81%A6%E3%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%89%E3%83%AB%E7%A9%8D%E5%88%86%E3%82%92%E5%AE%9F%E6%96%BD%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(Callable%2C%20integrand%2C%20legendre_coeff%2C%20legendre_zeros)%3A%0A%20%20%20%20def%20gauss_legendre(integrand%3A%20Callable%5B%5Bfloat%5D%2C%20float%5D%2C%20num%3A%20int)%20-%3E%20float%3A%0A%20%20%20%20%20%20%20%20zeros%3A%20list%5Bfloat%5D%20%3D%20legendre_zeros(num)%0A%20%20%20%20%20%20%20%20coeff%3A%20list%5Bfloat%5D%20%3D%20legendre_coeff(num)%0A%0A%20%20%20%20%20%20%20%20ans%3A%20float%20%3D%200%0A%20%20%20%20%20%20%20%20for%20k%20in%20range(0%2Cnum)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ans%20%2B%3D%20coeff%5Bk%5D%20*%20integrand(zeros%5Bk%5D)%0A%0A%20%20%20%20%20%20%20%20return%20ans%0A%0A%20%20%20%20print(f%22pi%20%3D%20%7Bgauss_legendre(integrand%2C%2020)%2F2%3A.15f%7D%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
ee3a8526e1651780300fd899489dfa59