La solucion que tu me das necesariamente tiene que tener Wolfram Research Mathematica instaldo? Si no es asi pues si me sirve porque uno de los requerimientos de la aplicacion es que sea como un Plug and Play.
Los calculos matematicos ya estan hechos, es decir que el algoritmo ya esta en Matlab. Mi trabajo es pasar todo ese algoritmo a c++ he integralo con OGRE. Voy a presentar el codigo donde tengo problemas.
MGI=MGI_HIBOU(px,py,pz,R,P,W,X1i,X2i,X3i,X4i,X5i)
global R4 D3 D6 tx ty tz x y z
%*********************************
% MODELO GEOMETRICO INVERSO
syms x y z xt yt zt sx sy sz nx ny nz ax ay az tx ty tz real
%%%*******CALCULO DEL MGI*******%%%%
sx=(cos(W)*cos(P)); nx=((cos(W)*sin(P)*sin(R))-(sin(W)*cos(R))); ax=((cos(W)*sin(P)*cos(R))+(sin(W)*sin(R)));
sy=(sin(W)*cos(P)); ny=((sin(W)*sin(P)*sin(R))+(cos(W)*cos(R))); ay=((sin(W)*sin(P)*cos(R))-(cos(W)*sin(R)));
sz=(-sin(P)); nz=(cos(P)*sin(R)); az=(cos(P)*cos(R));
%****** t1,t2,t3,t4 y t5***********
%********solucion numerica*********
%******** Distancias entre ejes*****
D3=0.3;
R4=0.4;
D6=0.3;
%******* Ubicacion del trocar*******
tx=0.4;
ty=0;
tz=0.23;
%----------------------------------------
x=px;
y=py;
z=pz;
% Método numérico Levenberg Marquardt
options = optimset('NonlEqnAlgorithm','lm','FunValCheck','on','TolFun',1e-15);
optnew = optimset(options,'TolX',1e-100,'MaxFunEvals',30000);
[u,Fx] = fsolve(@f_solveDOS,[X1i X2i X3i X4i X5i],optnew); % Obtención de r1,t2,t3 con el menor error
Fx;
t1=u(1);
t2=u(2);
t3=u(3);
t4=u(4);
t5=u(5);
Como pueden en la primeras lineas hay funciones que se pueden resolver con un simple math.h el problema viene en esta linea
[u,Fx] = fsolve(@f_solveDOS,[X1i X2i X3i X4i X5i],optnew);
Esta linea resuelve la ecuacion no lineal f_solveDOS con los valores iniciales [X1i X2i X3i X4i X5i] con unas opciones ya configuradas en optnew. Lo que me gustaria saber es si Wolfram Research Mathematica hace eso o que otras soluciones podria encontrar para el lengauje de programacion en c++. GRaCIAS