MATLAB: Mupad unable to solve equations, returns a mupad object

mupad solveSymbolic Math Toolbox

Hi,
I trying to solve the following equation set:
B =
x2*(x3 – 1) – 4*x2*x3 + 3*x3*(x2 – 1) + x3*(2*(x2 – 1)*(x3 – 1) – 2)*(x2 – 1) + x2*(3*(x2 – 1)*(x3 – 1) – 3)*(x3 – 1) – (4*(x2 – 1)*(x3 – 1) – 4)*(x2 – 1)*(x3 – 1)
3*x1*(x3 – 1) – 2*x1*x3 + x1*(2*(x1 – 1)*(x3 – 1) – 2)*(x3 – 1) + x3*(3*(x1 – 1)*(x3 – 1) – 3)*(x1 – 1) – ((x1 – 1)*(x3 – 1) – 1)*(x1 – 1)*(x3 – 1)
4*x2*(x1 – 1) – x1*x2 + x2*((x1 – 1)*(x2 – 1) – 1)*(x1 – 1) + x1*(2*(x1 – 1)*(x2 – 1) – 2)*(x2 – 1) – (3*(x1 – 1)*(x2 – 1) – 3)*(x1 – 1)*(x2 – 1)
B is a matrix containing the three equations above. When I then perform the command: Q = solve(B). I get the solution: Q =
x1: [2x1 sym]
x2: [2x1 sym]
x3: [2x1 sym]
So I get numerical values when solving these equations. My teacher, who has to check my work on the other hand gets a totally different solution, namely:
Warning: Could not extract individual solutions. Returning a MuPAD set object.
> In solve>assignOutputs at 104
In solve at 87
Q =
({matrix([[0], [0], [0]])} union {matrix([[- (417896137507876479105265076*z^12)/3773409152972106216383485 - (21288910491560694620342911467*z^11)/15093636611888424865533940 + (332243305906454033735009847599*z^10)/120749092895107398924271520 + (62359519880105057211200458353941*z^9)/3380974601063007169879602560 - (22309259310847409190318979760203*z^8)/614722654738728576341745920 + (4230931193630624246294646106337*z^7)/845243650265751792469900640 - (13771579771455323003136885106191*z^6)/6761949202126014339759205120 + (205656265661742819372665579552723*z^5)/6761949202126014339759205120 - (173099427569736810468549320671263*z^4)/6761949202126014339759205120 + (38964379622656326042733649418497*z^3)/6761949202126014339759205120 + (4197294603581657443911038587189*z^2)/3380974601063007169879602560 - (2163694290264363956492881487399*z)/3380974601063007169879602560 + 4231786222297040078160319841/87817522105532653763106560], [(7059876631518670901916459*z^12)/1840763771479430966025880 + (1410695398685187203105954237*z^11)/29452220343670895456414080 - (25334520086331667686383426009*z^10)/235617762749367163651312640 - (4073259481516784014361034908291*z^9)/6597297356982280582236753920 + (18703287563528285263682011573983*z^8)/13194594713964561164473507840 - (749768329231361003589825459577*z^7)/1649324339245570145559188480 + (995661499295475917862195988201*z^6)/13194594713964561164473507840 - (1300398614844906590379961003583*z^5)/1199508610360414651315773440 + (15039291023483614670508412238873*z^4)/13194594713964561164473507840 - (5049905425986090893539063518807*z^3)/13194594713964561164473507840 - (91529222647612963371555952539*z^2)/6597297356982280582236753920 + (184670193983630182010169410009*z)/6597297356982280582236753920 - 384900823139572276615787271/171358372908630664473681920], [z]]) | z in RootOf(z1^13 + (199*z1^12)/16 - (3667*z1^11)/128 - (570557*z1^10)/3584 + (2705739*z1^9)/7168 - (1018587*z1^8)/7168 + (218595*z1^7)/7168 - (71751*z1^6)/256 + (560835*z1^5)/1792 - (61259*z1^4)/512 + (25465*z1^3)/7168 + (16365*z1^2)/1792 - (14971*z1)/7168 + 121/1024, z1)}) intersect (0, Inf)^3
Now we checked the version of our symbolic math toolbox and he has version 5.4 while I have version 5.6, so that could explain the different answers. Since my teacher has to check my work and my university doesn't update Matlab until the next academic year, I wondering if somebody could help my obtain numerical solutions for the older version of the symbolic math toolbox so that my teacher can check my work.
Thanks in advance, Linda

Best Answer

If you look at one of my old answers, http://www.mathworks.com/matlabcentral/answers/15431-how-to-determine-which-operand-has-type-rootof-in-mupad I show approximately how to isolate the RootOf() term. (I do hope that I have missed something and there is an easier way to do it, but the outline I gave should work.)
Once you have the RootOf expression isolated, you can use the MuPad op(1,EXPRESSION) to remove the RootOf wrapper, leaving you with a polynomial. You can then use sym2poly() to convert that polynomial in to a list of numeric coefficients. Once you have that list, you can submit it to the MATLAB numeric roots() call to get the numeric roots.
With the numeric roots in hand, subs() the numeric roots into the MuPad expression in place of the RootOf() expression. You might perhaps have to simplify() after the subs().
As MuPad will then have an explicit set of values instead of symbolic roots it does not know how to handle, MuPad should proceed to construct explicit numeric answers.
Well, in theory, anyhow.