# Background This is one of those self-answer questions, and I'm happy to see other answers or comments. Let's say I have a system of equations (e.g. thermodynamics equations), where the "knowns" and "unknowns" are not set, and the system of equations can also change based on e.g. the type of thermodynamic process (isothermal, isobaric, isochoric, adiabatic). ## Knowns and Unknowns Subject to Change Take $PV=nRT$. Case 1: If I know $P$, $V$, $n$, and $R$, then $T\rightarrow\frac{PV}{nR}$. Case 2: I know $V$, $T$, $n$, $R$, then $P\rightarrow\frac{nRT}{V}$. ## The "Hard-Coded" Solution An easy solution is: ``` eqn = P V = n R T; soln1 = Solve[eqn, T]; soln2 = Solve[eqn, P]; ``` but this can become overwhelming with many input and output variables and especially if the systems of equations are also subject to change. # Question How do I make make a general solver that takes a system of equations and whatever inputs are supplied (with units) and outputs the best attempt at a solution based on those inputs? # Examples where this is applicable [Work done in Isobaric Process](https://physics.stackexchange.com/questions/415216/work-done-in-isobaric-process) [Answer to Comparison between isobaric, isothermal and adiabatic expansion](https://physics.stackexchange.com/a/138352)