import%20marimo%0A%0A__generated_with%20%3D%20%220.18.4%22%0Aapp%20%3D%20marimo.App()%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_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20HW02%20%E2%80%94%20MZI%20modelling%20(FSR%20and%20%CE%94L)%0A%0A%20%20%20%20Companion%20lab%20notebook%3A%20%60marimo_course%2Flessons%2Fw02_mzi_modelling.py%60%0A%0A%20%20%20%20Default%20band%3A%20**TE%20%40%201550%20nm**%20(1310%20nm%20is%20optional%20extension).%0A%0A%20%20%20%20**What%20to%20submit%20(minimal)**%0A%20%20%20%201.%20Your%20implemented%20%60fsr_estimate_nm(...)%60%20function.%0A%20%20%20%202.%20A%20chosen%20%CE%94L%20(%C2%B5m)%20and%20predicted%20FSR%20(nm)%20near%201550%20nm.%0A%20%20%20%203.%20A%20screenshot%20or%20saved%20image%20of%20an%20MZI%20spectrum%20(from%20the%20lab%20notebook)%20showing%20multiple%20fringes.%0A%20%20%20%204.%20A%20short%20paragraph%20explaining%20your%20%CE%94L%20choice%20(trade-offs%20and%20constraints).%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.function%0Adef%20fsr_estimate_nm(*%2C%20wl0_nm%3A%20float%2C%20ng%3A%20float%2C%20delta_L_um%3A%20float)%20-%3E%20float%20%7C%20None%3A%0A%20%20%20%20%22%22%22%0A%20%20%20%20Estimate%20the%20MZI%20free%20spectral%20range%20(FSR)%20in%20nm.%0A%0A%20%20%20%20Rule-of-thumb%20near%20wl0%3A%0A%20%20%20%20%20%20FSR%20%E2%89%88%20wl0%5E2%20%2F%20(ng%20*%20%CE%94L)%0A%0A%20%20%20%20Unit%20convention%20for%20this%20homework%3A%0A%20%20%20%20%20%20-%20wl0_nm%3A%20nm%0A%20%20%20%20%20%20-%20delta_L_um%3A%20%C2%B5m%0A%20%20%20%20%20%20-%20return%20value%3A%20nm%0A%0A%20%20%20%20TODO%20(student)%3A%20implement%20the%20formula%20and%20unit%20conversion.%0A%20%20%20%20%22%22%22%0A%20%20%20%20if%20wl0_nm%20%3C%3D%200%20or%20ng%20%3C%3D%200%20or%20delta_L_um%20%3C%3D%200%3A%0A%20%20%20%20%20%20%20%20return%20None%0A%20%20%20%20return%20None%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Task%201%20%E2%80%94%20Implement%20%60fsr_estimate_nm%60%0A%0A%20%20%20%20Implement%20%60fsr_estimate_nm%60%20above%2C%20then%20run%20the%20simple%20checks%20below%20(next%20cell).%0A%0A%20%20%20%20**Expected%20order-of-magnitude**%0A%20%20%20%20-%20With%20%CE%94L%20%3D%2010%20%C2%B5m%20and%20ng%20%E2%89%88%204.2%20at%201550%20nm%2C%20FSR%20should%20be%20on%20the%20order%20of%20**tens%20of%20nm**%20(%E2%89%88%2050%E2%80%9360%20nm).%0A%20%20%20%20-%20Doubling%20%CE%94L%20should%20roughly%20halve%20the%20FSR.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20wl0_nm_check%20%3D%201550.0%0A%20%20%20%20ng_check%20%3D%204.19%0A%0A%20%20%20%20delta_L_um_values%20%3D%20(10.0%2C%2020.0%2C%2050.0)%0A%20%20%20%20for%20delta_L_um_i%20in%20delta_L_um_values%3A%0A%20%20%20%20%20%20%20%20fsr_nm_i%20%3D%20fsr_estimate_nm(wl0_nm%3Dwl0_nm_check%2C%20ng%3Dng_check%2C%20delta_L_um%3Ddelta_L_um_i)%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22-%20%CE%BB0%3D%7Bwl0_nm_check%3A.0f%7D%20nm%2C%20ng%3D%7Bng_check%3A.2f%7D%2C%20%CE%94L%3D%7Bdelta_L_um_i%3A.0f%7D%20%C2%B5m%20%E2%86%92%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22FSR%20%3D%20%60%7Bfsr_nm_i%7D%60%20nm%22%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Task%202%20%E2%80%94%20Choose%20%CE%94L%20(a%20design%20decision)%0A%0A%20%20%20%20Pick%20a%20%CE%94L%20that%20gives%20a%20spectrum%20with%20multiple%20fringes%20over%20a%20measurement%20span%20near%20**1550%20nm**.%0A%0A%20%20%20%20For%20this%20homework%2C%20assume%3A%0A%20%20%20%20-%20center%20wavelength%3A%20**1550%20nm**%0A%20%20%20%20-%20measurement%20span%3A%20**60%20nm**%20(adjust%20to%20match%20what%20you%20used%20in%20the%20lab%20notebook%20if%20different)%0A%20%20%20%20-%20desired%20fringes%20visible%20across%20the%20span%3A%20**%E2%89%A5%203**%0A%0A%20%20%20%20Edit%20the%20variables%20in%20the%20next%20cell%20to%20record%20your%20choice%20and%20justification.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20%23%20%3D%3D%3D%20EDIT%20THIS%20CELL%20%3D%3D%3D%0A%20%20%20%20wl0_nm%20%3D%201550.0%0A%20%20%20%20ng%20%3D%204.19%0A%20%20%20%20measurement_span_nm%20%3D%2060.0%0A%0A%20%20%20%20chosen_delta_L_um%20%3D%2025.0%0A%20%20%20%20justification%20%3D%20%22Replace%20this%20with%20a%20short%20paragraph.%22%0A%0A%20%20%20%20%23%20%3D%3D%3D%20DO%20NOT%20EDIT%20BELOW%20(unless%20you%20want%20to)%20%3D%3D%3D%0A%20%20%20%20predicted_fsr_nm%20%3D%20fsr_estimate_nm(wl0_nm%3Dwl0_nm%2C%20ng%3Dng%2C%20delta_L_um%3Dchosen_delta_L_um)%0A%20%20%20%20fringes_est%20%3D%20(%0A%20%20%20%20%20%20%20%20None%0A%20%20%20%20%20%20%20%20if%20predicted_fsr_nm%20in%20(None%2C%200)%0A%20%20%20%20%20%20%20%20else%20float(measurement_span_nm)%20%2F%20float(predicted_fsr_nm)%0A%20%20%20%20)%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%5Cn%22.join(%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%20f%22-%20Chosen%20%CE%94L%3A%20%60%7Bchosen_delta_L_um%7D%60%20%C2%B5m%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22-%20Predicted%20FSR%3A%20%60%7Bpredicted_fsr_nm%7D%60%20nm%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22-%20Estimated%20fringes%20across%20%7Bmeasurement_span_nm%3A.0f%7D%20nm%3A%20%60%7Bfringes_est%7D%60%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22**Justification%3A**%20%7Bjustification%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Task%203%20%E2%80%94%20Short%20reflection%20(edit%20this%20cell)%0A%0A%20%20%20%20Replace%20the%20bullets%20below%20with%20your%20answer%3A%0A%0A%20%20%20%20-%20How%20does%20your%20layout%20choice%20(%CE%94L)%20show%20up%20in%20the%20measured%20spectrum%20(FSR)%3F%0A%20%20%20%20-%20Name%20one%20reason%20a%20measured%20spectrum%20might%20deviate%20from%20the%20ideal%20analytic%20model.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Optional%20extension%20(advanced)%20%E2%80%94%201310%20nm%0A%0A%20%20%20%20Compare%20the%20predicted%20FSR%20at%201310%20nm%20vs%201550%20nm%20for%20the%20same%20%CE%94L.%0A%20%20%20%20%22%22%22)%0A%0A%20%20%20%20wl0_1550_nm%20%3D%201550.0%0A%20%20%20%20wl0_1310_nm%20%3D%201310.0%0A%20%20%20%20ng_ext%20%3D%204.19%0A%20%20%20%20delta_L_um_ext%20%3D%2025.0%0A%0A%20%20%20%20fsr_1550%20%3D%20fsr_estimate_nm(wl0_nm%3Dwl0_1550_nm%2C%20ng%3Dng_ext%2C%20delta_L_um%3Ddelta_L_um_ext)%0A%20%20%20%20fsr_1310%20%3D%20fsr_estimate_nm(wl0_nm%3Dwl0_1310_nm%2C%20ng%3Dng_ext%2C%20delta_L_um%3Ddelta_L_um_ext)%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22With%20%CE%94L%3D%7Bdelta_L_um_ext%3A.0f%7D%20%C2%B5m%20and%20ng%3D%7Bng_ext%3A.2f%7D%3A%20%22%0A%20%20%20%20%20%20%20%20f%22FSR%401550%20%3D%20%60%7Bfsr_1550%7D%60%20nm%2C%20FSR%401310%20%3D%20%60%7Bfsr_1310%7D%60%20nm%22%0A%20%20%20%20)%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
2d378124b43acc235222af812a26ed5b