限界?の結末

以前は

N1:(u-1)*(v-1)*(w-1)/8;
N2:(u+1)*(v-1)*(w-1)/8;
N3:(u+1)*(v+1)*(w-1)/8;
N4:(u-1)*(v+1)*(w-1)/8;
N5:(u-1)*(v-1)*(w+1)/8;
N6:(u+1)*(v-1)*(w+1)/8;
N7:(u+1)*(v+1)*(w+1)/8;
N8:(u-1)*(v+1)*(w+1)/8;
x:x1*N1+x2*N2+x3*N3+x4*N4+x5*N5+x6*N6+x7*N7+x8*N8;
y:y1*N1+y2*N2+y3*N3+y4*N4+y5*N5+y6*N6+y7*N7+y8*N8;
z:z1*N1+z2*N2+z3*N3+z4*N4+z5*N5+z6*N6+z7*N7+z8*N8;
Jf:matrix([diff(x,u),diff(x,v),diff(x,w)],[diff(y,u),diff(y,v),diff(y,w)],[diff(z,u),diff(z,v),diff(z,w)]);
F:matrix([x-x0],[y-y0],[z-z0]);
Jf.matrix([ru],[rv],[rw])=F;

で最後の式をmatrix([ru],[rv],[rw])について解いていたがこれではあまりに式が長くなるため次のように変えた。

Jf:matrix([a,b,c],[d,e,f],[g,h,j]);
F:matrix([x9-x0],[y9-y0],[z9-z0]);

これで式が大幅に短くなった。
出た式は

ru=(c*(e*(z9-z0)-h*y9+h*y0)+b*(f*(z0-z9)+j*y9-j*y0)+(f*h-e*j)*x9+(e*j-f*h)*x0)/(a*(f*h-e*j)+b*(d*j-f*g)+c*(e*g-d*h));
rv=-(c*(d*(z9-z0)-g*y9+g*y0)+a*(f*(z0-z9)+j*y9-j*y0)+(f*g-d*j)*x9+(d*j-f*g)*x0)/(a*(f*h-e*j)+b*(d*j-f*g)+c*(e*g-d*h));
rw=(b*(d*(z9-z0)-g*y9+g*y0)+a*(e*(z0-z9)+h*y9-h*y0)+(e*g-d*h)*x9+(d*h-e*g)*x0)/(a*(f*h-e*j)+b*(d*j-f*g)+c*(e*g-d*h));