Для решения систем нелинейных уравнений, как правило, сложная задача. Делайте все возможное, чтобы избежать этого.
Мой обычный подход, если для вычисления ответа можно использовать несколько пар значений, состоит в том, чтобы использовать пару значений, которые мне даны, для вычисления канонической пары значений, которая затем используется для реального расчета. Более того, поскольку становится беспорядочно разбирать входные данные, чтобы выяснить, что вам дали, и вы можете использовать DWIM, возможно, имеет смысл иметь отдельные функции для каждой пары входных данных, которые я приму. (Или это может не зависеть от потока управления в вашей программе, вы знаете это лучше, чем я.)