import math import gradio as gr def trig_identities(angle_degrees: float, identity_name: str = "pythagorean1") -> str: """ Demonstrates common trigonometric identities for a given angle (in degrees). Args: angle_degrees: The angle in degrees to evaluate the identities for. identity_name: Name of the identity to demonstrate. "pythagorean1": sin^2(x) + cos^2(x) = 1 "pythagorean2": 1 + tan^2(x) = sec^2(x) "pythagorean3": 1 + cot^2(x) = csc^2(x) "all": Show all Pythagorean identities. More can be added. Returns: A string demonstrating the identity. """ x_rad = math.radians(angle_degrees) sinx = math.sin(x_rad) cosx = math.cos(x_rad) if abs(cosx) < 1e-9: tanx = float('inf') if sinx > 0 else float('-inf') if sinx < 0 else 0 secx = float('inf') if cosx >= 0 else float('-inf') else: tanx = sinx / cosx secx = 1 / cosx if abs(sinx) < 1e-9: cotx = float('inf') if cosx > 0 else float('-inf') if cosx < 0 else 0 cscx = float('inf') if sinx >= 0 else float('-inf') else: cotx = cosx / sinx cscx = 1 / sinx results = [] name = identity_name.lower() if name == "pythagorean1" or name == "all": lhs = sinx**2 + cosx**2 results.append(f"Pythagorean Identity 1: sin^2({angle_degrees}) + cos^2({angle_degrees}) = {sinx**2:.4f} + {cosx**2:.4f} = {lhs:.4f} (Expected: 1)") if name == "pythagorean2" or name == "all": if abs(cosx) < 1e-9: results.append(f"Pythagorean Identity 2 (1 + tan^2(x) = sec^2(x)): Not well-defined for x={angle_degrees} degrees as cos(x) is near zero (tan(x) and sec(x) are undefined or infinite).") else: lhs = 1 + tanx**2 rhs = secx**2 results.append(f"Pythagorean Identity 2: 1 + tan^2({angle_degrees}) = 1 + {tanx**2:.4f} = {lhs:.4f}. sec^2({angle_degrees}) = {secx**2:.4f}. (Expected LHS = RHS)") if name == "pythagorean3" or name == "all": if abs(sinx) < 1e-9: results.append(f"Pythagorean Identity 3 (1 + cot^2(x) = csc^2(x)): Not well-defined for x={angle_degrees} degrees as sin(x) is near zero (cot(x) and csc(x) are undefined or infinite).") else: lhs = 1 + cotx**2 rhs = cscx**2 results.append(f"Pythagorean Identity 3: 1 + cot^2({angle_degrees}) = 1 + {cotx**2:.4f} = {lhs:.4f}. csc^2({angle_degrees}) = {cscx**2:.4f}. (Expected LHS = RHS)") if not results: return f"Unknown identity: {identity_name}. Available: pythagorean1, pythagorean2, pythagorean3, all." return "\n".join(results) trig_identities_interface = gr.Interface( fn=trig_identities, inputs=[ gr.Number(label="Angle (degrees)"), gr.Radio( choices=[ ("sin²(x) + cos²(x) = 1", "pythagorean1"), ("1 + tan²(x) = sec²(x)", "pythagorean2"), ("1 + cot²(x) = csc²(x)", "pythagorean3"), ("All Pythagorean", "all") ], label="Trigonometric Identity to Demonstrate" ) ], outputs="text", title="Trigonometric Identities Demonstrator", description="Show common trigonometric identities for a given angle. Select an identity and enter an angle (e.g., 45) to see the identity demonstrated with calculated values.", examples=[ [45, "pythagorean1"], [60, "pythagorean2"], [30, "pythagorean3"], [90, "all"] ] )