mirror of
https://github.com/tgorordo/pages.uoregon.edu.git
synced 2026-06-05 14:42:13 -07:00
99 lines
2 KiB
Python
99 lines
2 KiB
Python
# /// script
|
|
# requires-python = ">=3.13"
|
|
# dependencies = [
|
|
# "marimo>=0.19.7",
|
|
# ]
|
|
# ///
|
|
|
|
import marimo
|
|
|
|
__generated_with = "0.19.11"
|
|
app = marimo.App(width="medium")
|
|
|
|
|
|
@app.cell
|
|
def _():
|
|
import marimo as mo
|
|
|
|
return (mo,)
|
|
|
|
|
|
@app.cell
|
|
def _():
|
|
import numpy as np
|
|
|
|
return (np,)
|
|
|
|
|
|
@app.cell
|
|
def _():
|
|
import matplotlib.pyplot as plt
|
|
|
|
return (plt,)
|
|
|
|
|
|
@app.cell
|
|
def _(mo):
|
|
from pathlib import Path
|
|
mo.pdf(src=Path("Homework0.pdf"), width="100%", height="50vh")
|
|
return
|
|
|
|
|
|
@app.cell
|
|
def _(np):
|
|
def unit_gridcircle_mask(N):
|
|
ruler = np.arange(-(N + 1.5), (N + 2.5)) / N
|
|
xx, yy = np.meshgrid(ruler, ruler)
|
|
mask = np.sqrt(np.square(xx) + np.square(yy)) <= 1
|
|
return mask
|
|
|
|
return (unit_gridcircle_mask,)
|
|
|
|
|
|
@app.cell
|
|
def _(np, unit_gridcircle_mask):
|
|
def unit_gridcircle_area(N):
|
|
area = float(np.sum(unit_gridcircle_mask(N), dtype=float) / N**2)
|
|
return area
|
|
|
|
return (unit_gridcircle_area,)
|
|
|
|
|
|
@app.cell
|
|
def _(np, plt, unit_gridcircle_mask):
|
|
plt.matshow(unit_gridcircle_mask(5), cmap=plt.cm.gray_r)
|
|
plt.grid(visible=True, color="cyan")
|
|
plt.xticks(ticks=(np.arange(14) - 0.5))
|
|
plt.yticks(ticks=(np.arange(14) - 0.5))
|
|
f = plt.gca()
|
|
f.axes.xaxis.set_ticklabels([])
|
|
f.axes.yaxis.set_ticklabels([])
|
|
plt.show()
|
|
return
|
|
|
|
|
|
@app.cell
|
|
def _(np, plt, unit_gridcircle_area):
|
|
Npts = 100
|
|
Ns = np.unique(np.floor(np.logspace(np.log10(2), np.log10(2000), Npts)).astype(int))
|
|
As = list(map(unit_gridcircle_area, Ns))
|
|
|
|
plt.figure(figsize=(8,6))
|
|
plt.semilogx(Ns, As, 'o-', color='steelblue', markerfacecolor='lightblue', markersize=12)
|
|
xlim = plt.gca().get_xlim()
|
|
plt.semilogx((xlim[0], xlim[1]), (np.pi, np.pi), ':', linewidth=2.5, color='darkorange')
|
|
plt.xlabel('N', fontsize=14)
|
|
plt.ylabel('Area', fontsize=14)
|
|
plt.xticks(fontsize=12)
|
|
plt.yticks(fontsize=12)
|
|
plt.show()
|
|
return
|
|
|
|
|
|
@app.cell
|
|
def _():
|
|
return
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run()
|