One shouldn't expect too much working purely on the symbolic level with so many symbolic variables. More appropriate approach is to assume special values for several symbolic constants ai, bi, ci
and to make a preliminary survey. Another (even more) important step is a distinction between generic and complete description of the solution sets. If the former is fully satisfactory you can use Solve
, otherwise you should add to Solve
the option MaxExtraConditions -> All
or you should even better work with Reduce
. For more complete discussion read What is the difference between Reduce and Solve?
As a hint what one can expect let's use ContourPlot3D
and substitute special values for all symbolic constants, e.g. :
ContourPlot3D[{ x + 2 y + 3 z + x y - y z + 2 x z == 1,
-x + y + 3 z - x y + y z - 3 x z == -1,
x - 3 y + 2 z - 2 x y - y z + z x == 0 },
{x, -5, 5}, {y, -5, 5}, {z, -5, 5},
ContourStyle -> {Green, Cyan, Orange}, MeshFunctions -> {#3 &}]

So we have three second order surfaces in three dimensional space. The solutions can be found where all three submanifolds intersect. One expects from 0
up to8
solutions. In this case for a concise output let's use Reduce
:
Reduce[{ x + 2 y + 3 z + x y - y z + 2 x z == 1,
-x + y + 3 z - x y + y z - 3 x z == -1,
x - 3 y + 2 z - 2 x y - y z + z x == 0 }, {x, y, z}]
( x == Root[-210 + 54 #1 + 182 #1^2 - 2 #1^3 - 22 #1^4 + 3 #1^5 &, 1] ||
x == Root[-210 + 54 #1 + 182 #1^2 - 2 #1^3 - 22 #1^4 + 3 #1^5 &, 2] ||
x == Root[-210 + 54 #1 + 182 #1^2 - 2 #1^3 - 22 #1^4 + 3 #1^5 &, 3] ||
x == Root[-210 + 54 #1 + 182 #1^2 - 2 #1^3 - 22 #1^4 + 3 #1^5 &, 4] ||
x == Root[-210 + 54 #1 + 182 #1^2 - 2 #1^3 - 22 #1^4 + 3 #1^5 &, 5]) &&
y == 8 - 5 x - 4 x^2 + x^3 && z == 1/7 (-63 + 16 x + 47 x^2 + 4 x^3 - 3 x^4)
These are exact solutions represented in terms of the Root
objects. If you prefer numeric values of the solutions you can do this :
{x, y, z} /. Solve[{ x + 2 y + 3 z + x y - y z + 2 x z == 1,
-x + y + 3 z - x y + y z - 3 x z == -1,
x - 3 y + 2 z - 2 x y - y z + z x == 0}, {x, y, z}] // N
{{-1.87792, -3.33946, 1.2717}, {-1.5772, 2.01237, -0.796747},
{0.985202, 0.147754, -0.0883909}, {4.70874, 0.170559, -0.396261},
{5.09452, 10.9347, -36.2284}}
Now we can go further putting one symbolic constant in Reduce
, e.g. c
:
Reduce[{ x + 2 y + 3 z + x y - y z + 2 x z == 1,
-x + y + 3 z - x y + y z - 3 x z == -1,
x - 3 y + 2 z - 2 x y - y z + z x == c }, {x, y, z}]
(c == 1 && x == 1 && y == 0 && z == 0) ||
(c == 1 && (x == 1/3 (5 - Sqrt[106]) || x == 1/3 (5 + Sqrt[106])) &&
(y == 1/9 (9 + 8 x - Sqrt[486 + 45 x + 64 x^2]) ||
y == 1/9 (9 + 8 x + Sqrt[486 + 45 x + 64 x^2])) &&
z == 1/7 (-8 y - 3 x y)) ||
((x == Root[-630 - 117 c + 18 c^2 + (162 + 30 c - 3 c^2) #1 + (546 + 56 c) #1^2
+ (-6 + 4 c) #1^3 + (-66 - 3 c) #1^4 + 9 #1^5 &, 1] ||
x == Root[-630 - 117 c + 18 c^2 + (162 + 30 c - 3 c^2) #1 + (546 + 56 c) #1^2
+ (-6 + 4 c) #1^3 + (-66 - 3 c) #1^4 + 9 #1^5 &, 2] ||
x == Root[-630 - 117 c + 18 c^2 + (162 + 30 c - 3 c^2) #1 + (546 + 56 c) #1^2
+ (-6 + 4 c) #1^3 + (-66 - 3 c) #1^4 + 9 #1^5 &, 3] ||
x == Root[-630 - 117 c + 18 c^2 + (162 + 30 c - 3 c^2) #1 + (546 + 56 c) #1^2
+ (-6 + 4 c) #1^3 + (-66 - 3 c) #1^4 + 9 #1^5 &, 4] ||
x == Root[-630 - 117 c + 18 c^2 + (162 + 30 c - 3 c^2) #1 + (546 + 56 c) #1^2
+ (-6 + 4 c) #1^3 + (-66 - 3 c) #1^4 + 9 #1^5 &, 5]) &&
-1 + c != 0 && y == ((-1 + x) (24 + 3 c + 9 x + c x - 3 x^2))/(3 (-1 + c)) &&
z == 1/7 (1 - c - 8 y - 3 x y))
One can use Solve
, but the output represented in terms of replacement rules would be substantially more involved. Sometimes it may apear that replacement rules cannot describe the solution set at all and then we would have to rely only on Reduce
. Even for one symbolic constant the solution set appears to be quite involved and it is clear that one can make further progress only on a case by case basis. At this point one could use Manipulate
and ContourPlot3D
for all symbolic constants to explore the system with respect to more specific issues in order to reveal another interesting aspects. Here is the way to go taking a look at the link above for further references.
Edit
If we use only one symbolic parameter (variable) it is relatively easy to get exact symbolic 1
-parameter solutions which are represented by segments of curves in 3
-dimensional space {x,y,z}
.
For a more compact notation let's introduce the following function :
sol[ a2_, a4_, a6_, a7_, a8_, a9_, a10_, b2_, b4_, b6_, b7_, b8_, b9_, b10_,
c2_, c4_, c6_, c7_, c8_, c9_, c10_] := {x, y, z} /.
Solve[{ a2 x + a4 y + a6 z + a7 x y + a8 y z + a9 x z == a10,
b2 x + b4 y + b6 z + b7 x y + b8 y z + b9 z x == b10,
c2 x + c4 y + c6 z + c7 x y + c8 y z + c9 z x == c10}, {x, y, z}]
and now we are ready to explore possible solutions more extensively. Let's introduce functions of one variable, e.g.
sl1[c_] := sol[1, 2, 3, 1, -1, 2, 1, -1, 1, 3, -1, 1, -3, -1, 1, -3, 2, -2, -1, 1, c]
sl2[d_] := sol[1, 2, 3, 1, -1, 2, 1, -1, 1, 3, -1, 1, -3d, -1, 1, -3, 2, -2, -1, 1, 0]
sl3[a_] := sol[1, 2, 3, 1, -1, 2, 1, -1, 1, 3, -1, 1, -3, -1, 1, -3, 2, -2a, -1, 1, 0]
sl4[b_] := sol[1, 2b, 3, 1, -1, 2, 1, -1, 1, 3, -1, 1, -3, -1, 1, -3, 2, -2, -1, 1, 0]
Having defined those functions we can demonstrate the solutions graphically by using ParametricPlot3D
to visualize the dependance on different variables of sol
.
GraphicsGrid[
Map[ ParametricPlot3D[ #[c], {c, -50, 50}, Evaluated -> True, BoxRatios -> {1, 1, 1},
AxesLabel -> Table[Style[k, Bold, 24], {k, {x, y, z}}]]&,
{{sl1, sl2}, {sl3, sl4}}, {2}]]
There are a few solutions for every argument therefore we have a few curves represented by different colors. The full symbolic solution sol
is 21
-dimensional submanifold in 24
-dimensional space {x, y, z, a2, a4, ..., b2, b4,...c2,..., c10}
. There is no way to get a complete symbolic representation of such a solution.