I'm trying to show that there exists some transformation of variables between the following two expressions such that they are equivalent.
expr1 = a1 a2 + 1/(a1 a2) + a1 a3 + 1/(a1 a3) + a1 + 1/a1 +
a3/a2 + a2/a3 + a2 + 1/a2 + a3 + 1/a3;
expr2 = z1/z2^2 + z2^2/z1 + z1/z3^2 + 1/(z2 z3) + z1^2/(z2 z3) +
z2/(z1 z3) + z1 z2/z3 + z3/(z1 z2) + z1 z3/z2 + z2 z3 +
z2 z3/z1^2 + z3^2/z1;
I have tried the following brute force method:
expr = 3 + z1^(-1) + z1 + z2^(-1) + 1/(z1*z2) + z2 + z1*z2 +
z3^(-1) + 1/(z1*z3) + z2/z3 + z3 + z1*z3 + z3/z2;
expr2 = 3 + z1/z2^2 + z2^2/z1 + z1/z3^2 + 1/(z2*z3) + z1^2/(z2*z3) +
z2/(z1*z3) + z1*z2/z3 + z3/(z1*z2) + z1*z3/z2 + z2*z3 +
z2*z3/z1^2 + z3^2/z1;
found = False;
counter = 0
Do[new =
expr /. {z1 -> z1^a*z2^b*z3^c, z2 -> z1^d*z2^e*z3^f,
z3 -> z1^g*z2^h*z3^i};
counter = counter + 1;
Print[counter];
If[Simplify[new == expr2],
Print["Found solution: ", {a, b, c, d, e, f, g, h, i}];
found = True;
Break[];], {a, -1, 1}, {b, -1, 1}, {c, -1, 1}, {d, -1, 1}, {e, -1,
1}, {f, -1, 1}, {g, -1, 1}, {h, -1, 1}, {i, -1, 1}];
If[! found, Print["No solution found"]];
However this takes far too long already, and the necessary range may be {-2,2}. I have also tried:
expr1 = a1 a2 + 1/(a1 a2) + a1 a3 + 1/(a1 a3) + a1 + 1/a1 + a3/a2 + a2/a3 + a2 + 1/a2 + a3 + 1/a3;
expr2 = z1/z2^2 + z2^2/z1 + z1/z3^2 + 1/(z2 z3) + z1^2/(z2 z3) + z2/(z1 z3) + z1 z2/z3 + z3/(z1 z2) + z1 z3/z2 + z2 z3 + z2 z3/z1^2 + z3^2/z1;
transformations = {a1 -> z1^a * z2^b * z3^c, a2 -> z1^d * z2^e * z3^f, a3 -> z1^g * z2^h * z3^i};
transformedExpr1 = expr1 /. transformations;
eq = Simplify[transformedExpr1 == expr2];
solution = Reduce[eq, {a, b, c, d, e, f, g, h, i}, Reals]
solution
This also did not seem to terminate. How can I solve this problem more efficiently? An ideal output would be some transformation:
{a1 -> z2*z3, a2 -> z1/z2, a3 -> z1/z3} or something like this.
Thank you very much.