euler314 commited on
Commit
1a4a7a6
·
verified ·
1 Parent(s): 19ef319

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -27
app.py CHANGED
@@ -296,18 +296,18 @@ with tab1:
296
  y_1 = st.number_input("y", value=1.0, key="y_1")
297
  z_min_1 = st.number_input("z_min", value=-10.0, key="z_min_1")
298
  z_max_1 = st.number_input("z_max", value=10.0, key="z_max_1")
299
- with st.expander("Resolution Settings"):
300
- beta_steps = st.slider("β steps", min_value=51, max_value=501, value=201, step=50)
301
- z_steps = st.slider("z grid steps", min_value=1000, max_value=100000, value=50000, step=1000)
302
  st.subheader("Custom Expression")
303
  st.markdown("Enter the **numerator** and **denominator** expressions (as functions of `z_a`, `beta`, `y`, and `s`) for the custom curve. Here, 'a' is an alias for `z_a`.")
304
  st.markdown("The default expressions yield:")
305
  st.latex(r"\frac{y\beta(z_a-1)s+(a\,s+1)((y-1)s-1)}{(a\,s+1)(s^2+s)}")
306
  default_num = "y*beta*(z_a-1)*s + (a*s+1)*((y-1)*s-1)"
307
  default_denom = "(a*s+1)*(s**2+s)"
308
- custom_num_expr = st.text_input("Numerator Expression", value=default_num)
309
- custom_denom_expr = st.text_input("Denominator Expression", value=default_denom)
310
- s_custom = st.number_input("Custom s value", value=1.0, step=0.1)
311
  if st.button("Compute z vs. β Curves", key="tab1_button"):
312
  with col2:
313
  fig = generate_z_vs_beta_plot(z_a_1, y_1, z_min_1, z_max_1, beta_steps, z_steps,
@@ -338,13 +338,13 @@ with tab2:
338
  st.header("Plot Complex Roots vs. z")
339
  col1, col2 = st.columns([1, 2])
340
  with col1:
341
- beta = st.number_input("β", value=0.5, min_value=0.0, max_value=1.0)
342
- y_2 = st.number_input("y", value=1.0, key="y_2")
343
- z_a_2 = st.number_input("z_a", value=1.0, key="z_a_2")
344
- z_min_2 = st.number_input("z_min", value=-10.0, key="z_min_2")
345
- z_max_2 = st.number_input("z_max", value=10.0, key="z_max_2")
346
- with st.expander("Resolution Settings"):
347
- z_points = st.slider("z grid points", min_value=1000, max_value=10000, value=5000, step=500)
348
  if st.button("Compute Complex Roots vs. z", key="tab2_button"):
349
  with col2:
350
  fig_im, fig_re = generate_root_plots(beta, y_2, z_a_2, z_min_2, z_max_2, z_points)
@@ -357,20 +357,21 @@ with tab3:
357
  st.header("Curve Intersection Analysis")
358
  col1, col2 = st.columns([1, 2])
359
  with col1:
360
- z = st.slider("z", min_value=-10.0, max_value=10000.0, value=1.0, step=0.1)
361
- y_3 = st.slider("y", min_value=0.1, max_value=1000.0, value=1.0, step=0.1, key="y_3")
362
- beta_3 = st.slider("β", min_value=0.0, max_value=1.0, value=0.5, step=0.01, key="beta_3")
363
- a = st.slider("a", min_value=0.1, max_value=1000.0, value=1.0, step=0.1)
364
  st.subheader("s Range")
365
- s_min = st.number_input("s_min", value=-5.0)
366
- s_max = st.number_input("s_max", value=5.0)
367
- with st.expander("Resolution Settings"):
368
- s_points = st.slider("s grid points", min_value=1000, max_value=10000, value=5000, step=500)
369
- intersection_guesses = st.slider("Intersection search points", min_value=200, max_value=2000, value=1000, step=100)
370
  intersection_tolerance = st.select_slider(
371
  "Intersection tolerance",
372
  options=[1e-6, 1e-8, 1e-10, 1e-12, 1e-14, 1e-16, 1e-18, 1e-20],
373
- value=1e-10
 
374
  )
375
  if st.button("Compute Intersections", key="tab3_button"):
376
  with col2:
@@ -395,9 +396,9 @@ with tab4:
395
  y_diff = st.number_input("y", value=1.0, key="y_diff")
396
  z_min_diff = st.number_input("z_min", value=-10.0, key="z_min_diff")
397
  z_max_diff = st.number_input("z_max", value=10.0, key="z_max_diff")
398
- with st.expander("Resolution Settings"):
399
- beta_steps_diff = st.slider("β steps", min_value=51, max_value=501, value=201, step=50)
400
- z_steps_diff = st.slider("z grid steps", min_value=1000, max_value=100000, value=50000, step=1000)
401
  if st.button("Compute Differentials", key="tab4_button"):
402
  with col2:
403
  betas_diff, lower_vals, upper_vals = sweep_beta_and_find_z_bounds(z_a_diff, y_diff, z_min_diff, z_max_diff, beta_steps_diff, z_steps_diff)
@@ -410,4 +411,4 @@ with tab4:
410
  fig_diff.add_trace(go.Scatter(x=betas_diff, y=d1, mode="lines", name="First Derivative", line=dict(color="brown", width=2)))
411
  fig_diff.add_trace(go.Scatter(x=betas_diff, y=d2, mode="lines", name="Second Derivative", line=dict(color="black", width=2)))
412
  fig_diff.update_layout(title="Differential Analysis vs. β", xaxis_title="β", yaxis_title="Value", hovermode="x unified")
413
- st.plotly_chart(fig_diff, use_container_width=True)
 
296
  y_1 = st.number_input("y", value=1.0, key="y_1")
297
  z_min_1 = st.number_input("z_min", value=-10.0, key="z_min_1")
298
  z_max_1 = st.number_input("z_max", value=10.0, key="z_max_1")
299
+ with st.expander("Resolution Settings", key="res1"):
300
+ beta_steps = st.slider("β steps", min_value=51, max_value=501, value=201, step=50, key="beta_steps")
301
+ z_steps = st.slider("z grid steps", min_value=1000, max_value=100000, value=50000, step=1000, key="z_steps")
302
  st.subheader("Custom Expression")
303
  st.markdown("Enter the **numerator** and **denominator** expressions (as functions of `z_a`, `beta`, `y`, and `s`) for the custom curve. Here, 'a' is an alias for `z_a`.")
304
  st.markdown("The default expressions yield:")
305
  st.latex(r"\frac{y\beta(z_a-1)s+(a\,s+1)((y-1)s-1)}{(a\,s+1)(s^2+s)}")
306
  default_num = "y*beta*(z_a-1)*s + (a*s+1)*((y-1)*s-1)"
307
  default_denom = "(a*s+1)*(s**2+s)"
308
+ custom_num_expr = st.text_input("Numerator Expression", value=default_num, key="custom_num")
309
+ custom_denom_expr = st.text_input("Denominator Expression", value=default_denom, key="custom_denom")
310
+ s_custom = st.number_input("Custom s value", value=1.0, step=0.1, key="s_custom")
311
  if st.button("Compute z vs. β Curves", key="tab1_button"):
312
  with col2:
313
  fig = generate_z_vs_beta_plot(z_a_1, y_1, z_min_1, z_max_1, beta_steps, z_steps,
 
338
  st.header("Plot Complex Roots vs. z")
339
  col1, col2 = st.columns([1, 2])
340
  with col1:
341
+ beta = st.number_input("β", value=0.5, min_value=0.0, max_value=1.0, key="beta_tab2")
342
+ y_2 = st.number_input("y", value=1.0, key="y_tab2")
343
+ z_a_2 = st.number_input("z_a", value=1.0, key="z_a_tab2")
344
+ z_min_2 = st.number_input("z_min", value=-10.0, key="z_min_tab2")
345
+ z_max_2 = st.number_input("z_max", value=10.0, key="z_max_tab2")
346
+ with st.expander("Resolution Settings", key="res2"):
347
+ z_points = st.slider("z grid points", min_value=1000, max_value=10000, value=5000, step=500, key="z_points")
348
  if st.button("Compute Complex Roots vs. z", key="tab2_button"):
349
  with col2:
350
  fig_im, fig_re = generate_root_plots(beta, y_2, z_a_2, z_min_2, z_max_2, z_points)
 
357
  st.header("Curve Intersection Analysis")
358
  col1, col2 = st.columns([1, 2])
359
  with col1:
360
+ z = st.slider("z", min_value=-10.0, max_value=10000.0, value=1.0, step=0.1, key="z_tab3")
361
+ y_3 = st.slider("y", min_value=0.1, max_value=1000.0, value=1.0, step=0.1, key="y_tab3")
362
+ beta_3 = st.slider("β", min_value=0.0, max_value=1.0, value=0.5, step=0.01, key="beta_tab3")
363
+ a = st.slider("a", min_value=0.1, max_value=1000.0, value=1.0, step=0.1, key="a_tab3")
364
  st.subheader("s Range")
365
+ s_min = st.number_input("s_min", value=-5.0, key="s_min_tab3")
366
+ s_max = st.number_input("s_max", value=5.0, key="s_max_tab3")
367
+ with st.expander("Resolution Settings", key="res3"):
368
+ s_points = st.slider("s grid points", min_value=1000, max_value=10000, value=5000, step=500, key="s_points_tab3")
369
+ intersection_guesses = st.slider("Intersection search points", min_value=200, max_value=2000, value=1000, step=100, key="intersect_guesses")
370
  intersection_tolerance = st.select_slider(
371
  "Intersection tolerance",
372
  options=[1e-6, 1e-8, 1e-10, 1e-12, 1e-14, 1e-16, 1e-18, 1e-20],
373
+ value=1e-10,
374
+ key="intersect_tol"
375
  )
376
  if st.button("Compute Intersections", key="tab3_button"):
377
  with col2:
 
396
  y_diff = st.number_input("y", value=1.0, key="y_diff")
397
  z_min_diff = st.number_input("z_min", value=-10.0, key="z_min_diff")
398
  z_max_diff = st.number_input("z_max", value=10.0, key="z_max_diff")
399
+ with st.expander("Resolution Settings", key="res4"):
400
+ beta_steps_diff = st.slider("β steps", min_value=51, max_value=501, value=201, step=50, key="beta_steps_diff")
401
+ z_steps_diff = st.slider("z grid steps", min_value=1000, max_value=100000, value=50000, step=1000, key="z_steps_diff")
402
  if st.button("Compute Differentials", key="tab4_button"):
403
  with col2:
404
  betas_diff, lower_vals, upper_vals = sweep_beta_and_find_z_bounds(z_a_diff, y_diff, z_min_diff, z_max_diff, beta_steps_diff, z_steps_diff)
 
411
  fig_diff.add_trace(go.Scatter(x=betas_diff, y=d1, mode="lines", name="First Derivative", line=dict(color="brown", width=2)))
412
  fig_diff.add_trace(go.Scatter(x=betas_diff, y=d2, mode="lines", name="Second Derivative", line=dict(color="black", width=2)))
413
  fig_diff.update_layout(title="Differential Analysis vs. β", xaxis_title="β", yaxis_title="Value", hovermode="x unified")
414
+ st.plotly_chart(fig_diff, use_container_width=True)