Spaces:
Runtime error
Runtime error
feat: enhance Gradio interfaces for first-order and second-order ODE solvers with improved descriptions and examples
Browse files
maths/differential_equations/solve_first_order_ode.py
CHANGED
|
@@ -67,7 +67,7 @@ first_order_ode_interface = gr.Interface(
|
|
| 67 |
fn=lambda ode_str, t_span_str, y0_str, t_eval_count, method: solve_first_order_ode(
|
| 68 |
string_to_ode_func(ode_str, ('t', 'y')),
|
| 69 |
parse_time_span(t_span_str),
|
| 70 |
-
parse_float_list(y0_str),
|
| 71 |
int(t_eval_count),
|
| 72 |
method
|
| 73 |
),
|
|
@@ -87,9 +87,20 @@ first_order_ode_interface = gr.Interface(
|
|
| 87 |
gr.JSON(label="Raw Data (t, y values)", visible=lambda res: res['success']) # For users to copy if needed
|
| 88 |
],
|
| 89 |
title="First-Order ODE Solver",
|
| 90 |
-
description="
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
flagging_mode="manual"
|
| 95 |
)
|
|
|
|
| 67 |
fn=lambda ode_str, t_span_str, y0_str, t_eval_count, method: solve_first_order_ode(
|
| 68 |
string_to_ode_func(ode_str, ('t', 'y')),
|
| 69 |
parse_time_span(t_span_str),
|
| 70 |
+
parse_float_list(y0_str),
|
| 71 |
int(t_eval_count),
|
| 72 |
method
|
| 73 |
),
|
|
|
|
| 87 |
gr.JSON(label="Raw Data (t, y values)", visible=lambda res: res['success']) # For users to copy if needed
|
| 88 |
],
|
| 89 |
title="First-Order ODE Solver",
|
| 90 |
+
description="""
|
| 91 |
+
Solves dy/dt = f(t, y) or a system of first-order ODEs.
|
| 92 |
+
|
| 93 |
+
- Enter a Python lambda for the ODE (e.g., `lambda t, y: -y*t`).
|
| 94 |
+
- For systems, use `y` as a list: `lambda t, y: [y[1], -0.1*y[1] - y[0]]`.
|
| 95 |
+
- Initial conditions: single value (e.g., `1`) or comma-separated for systems (e.g., `1,0`).
|
| 96 |
+
|
| 97 |
+
**Examples:**
|
| 98 |
+
|
| 99 |
+
- Simple: `lambda t, y: -y*t`, y0: `1`, t_span: `0,5`
|
| 100 |
+
- System: `lambda t, y: [y[1], -0.1*y[1] - y[0]]`, y0: `1,0`, t_span: `0,20`
|
| 101 |
+
- Lotka-Volterra: `lambda t, y: [1.5*y[0] - 0.8*y[0]*y[1], 0.5*y[0]*y[1] - 0.9*y[1]]`, y0: `10,5`, t_span: `0,20`
|
| 102 |
+
|
| 103 |
+
WARNING: Uses eval() for the ODE function string - potential security risk.
|
| 104 |
+
""",
|
| 105 |
flagging_mode="manual"
|
| 106 |
)
|
maths/differential_equations/solve_second_order_ode.py
CHANGED
|
@@ -104,8 +104,18 @@ second_order_ode_interface = gr.Interface(
|
|
| 104 |
gr.JSON(label="Raw Data (t, y, dy_dt values)", visible=lambda res: res['success'])
|
| 105 |
],
|
| 106 |
title="Second-Order ODE Solver",
|
| 107 |
-
description="
|
| 108 |
-
|
| 109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
flagging_mode="manual"
|
| 111 |
)
|
|
|
|
| 104 |
gr.JSON(label="Raw Data (t, y, dy_dt values)", visible=lambda res: res['success'])
|
| 105 |
],
|
| 106 |
title="Second-Order ODE Solver",
|
| 107 |
+
description="""
|
| 108 |
+
Solves d²y/dt² = f(t, y, dy/dt) for a single second-order ODE.
|
| 109 |
+
|
| 110 |
+
- Enter a Python lambda for the ODE (e.g., `lambda t, y, dy_dt: -0.1*dy_dt - math.sin(y)`).
|
| 111 |
+
- Initial y(t_start) and dy/dt(t_start) must be single values.
|
| 112 |
+
|
| 113 |
+
**Examples:**
|
| 114 |
+
|
| 115 |
+
- Damped oscillator: `lambda t, y, dy_dt: -0.1*dy_dt - y`, y0: `1.0`, dy0/dt: `0.0`, t_span: `0,20`
|
| 116 |
+
- Simple pendulum: `lambda t, y, dy_dt: -9.81/1.0 * math.sin(y)`, y0: `math.pi/4`, dy0/dt: `0`, t_span: `0,10`
|
| 117 |
+
|
| 118 |
+
WARNING: Uses eval() for the ODE function string - potential security risk.
|
| 119 |
+
""",
|
| 120 |
flagging_mode="manual"
|
| 121 |
)
|