%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.13%22%0A%23%20dependencies%20%3D%20%5B%0A%23%20%20%20%20%20%22marimo%3E%3D0.19.7%22%2C%0A%23%20%5D%0A%23%20%2F%2F%2F%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.19.11%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%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%0A%20%20%20%20return%20(np%2C)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20return%20(plt%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20from%20pathlib%20import%20Path%0A%20%20%20%20mo.pdf(src%3DPath(%22Homework0.pdf%22)%2C%20width%3D%22100%25%22%2C%20height%3D%2250vh%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np)%3A%0A%20%20%20%20def%20unit_gridcircle_mask(N)%3A%0A%20%20%20%20%20%20%20%20ruler%20%3D%20np.arange(-(N%20%2B%201.5)%2C%20(N%20%2B%202.5))%20%2F%20N%0A%20%20%20%20%20%20%20%20xx%2C%20yy%20%3D%20np.meshgrid(ruler%2C%20ruler)%0A%20%20%20%20%20%20%20%20mask%20%3D%20np.sqrt(np.square(xx)%20%2B%20np.square(yy))%20%3C%3D%201%0A%20%20%20%20%20%20%20%20return%20mask%0A%0A%20%20%20%20return%20(unit_gridcircle_mask%2C)%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20unit_gridcircle_mask)%3A%0A%20%20%20%20def%20unit_gridcircle_area(N)%3A%0A%20%20%20%20%20%20%20%20area%20%3D%20float(np.sum(unit_gridcircle_mask(N)%2C%20dtype%3Dfloat)%20%2F%20N**2)%0A%20%20%20%20%20%20%20%20return%20area%0A%0A%20%20%20%20return%20(unit_gridcircle_area%2C)%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20plt%2C%20unit_gridcircle_mask)%3A%0A%20%20%20%20plt.matshow(unit_gridcircle_mask(5)%2C%20cmap%3Dplt.cm.gray_r)%0A%20%20%20%20plt.grid(visible%3DTrue%2C%20color%3D%22cyan%22)%0A%20%20%20%20plt.xticks(ticks%3D(np.arange(14)%20-%200.5))%0A%20%20%20%20plt.yticks(ticks%3D(np.arange(14)%20-%200.5))%0A%20%20%20%20f%20%3D%20plt.gca()%0A%20%20%20%20f.axes.xaxis.set_ticklabels(%5B%5D)%0A%20%20%20%20f.axes.yaxis.set_ticklabels(%5B%5D)%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20plt%2C%20unit_gridcircle_area)%3A%0A%20%20%20%20Npts%20%3D%20100%0A%20%20%20%20Ns%20%3D%20np.unique(np.floor(np.logspace(np.log10(2)%2C%20np.log10(2000)%2C%20Npts)).astype(int))%0A%20%20%20%20As%20%3D%20list(map(unit_gridcircle_area%2C%20Ns))%0A%0A%20%20%20%20plt.figure(figsize%3D(8%2C6))%0A%20%20%20%20plt.semilogx(Ns%2C%20As%2C%20'o-'%2C%20color%3D'steelblue'%2C%20markerfacecolor%3D'lightblue'%2C%20markersize%3D12)%0A%20%20%20%20xlim%20%3D%20plt.gca().get_xlim()%0A%20%20%20%20plt.semilogx((xlim%5B0%5D%2C%20xlim%5B1%5D)%2C%20(np.pi%2C%20np.pi)%2C%20'%3A'%2C%20linewidth%3D2.5%2C%20color%3D'darkorange')%0A%20%20%20%20plt.xlabel('N'%2C%20fontsize%3D14)%0A%20%20%20%20plt.ylabel('Area'%2C%20fontsize%3D14)%0A%20%20%20%20plt.xticks(fontsize%3D12)%0A%20%20%20%20plt.yticks(fontsize%3D12)%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%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
694e2868c5c39f9d6d5650c133b21c16