STANAANDREY

missing var

Sep 10th, 2025
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.41 KB | None | 0 0
  1. import sympy
  2.  
  3. def solve_equation(e, **kwargs):
  4.     e = e.replace('^', '**')
  5.     left, right = e.split('=')
  6.     left_expr = sympy.sympify(left)
  7.     right_expr = sympy.sympify(right)
  8.     equation = sympy.Eq(left_expr, right_expr)
  9.    
  10.     symbols = equation.free_symbols
  11.     symbol_names = {str(s): s for s in symbols}
  12.    
  13.     knowns = {}
  14.     missing_var = None
  15.     for name, value in kwargs.items():
  16.         if name in symbol_names:
  17.             if value is None:
  18.                 if missing_var is not None:
  19.                     raise ValueError("Only one variable can be missing")
  20.                 missing_var = symbol_names[name]
  21.             else:
  22.                 knowns[symbol_names[name]] = value
  23.         else:
  24.             raise ValueError(f"Variable '{name}' not found in equation")
  25.    
  26.     if missing_var is None:
  27.         raise ValueError("No missing variable specified (use None)")
  28.    
  29.     equation_sub = equation.subs(knowns)
  30.     solution = sympy.solve(equation_sub, missing_var)
  31.    
  32.     if not solution:
  33.         raise ValueError("No solution found")
  34.    
  35.     result = solution[0]
  36.     if result.is_real and result.is_number:
  37.         return float(result) if not result.is_Integer else int(result)
  38.     return result
  39.  
  40. # Example usage:
  41. # print(solve_equation('a+b*c=d', a=1, b=2, d=5, c=None))  # Output: 2.0
  42. # print(solve_equation('a=exp(x)', a=2, x=None))           # Output: 0.6931471805599453
Advertisement
Add Comment
Please, Sign In to add comment