Hello. I have been trying for long while to use the function fsolve to solve a non-linear equation system without success. This nonlinear equation system is basically a huge symbolic 12×1 column vector named ec with 12 equations built with 6 symbolic variables: q1,q2,…,q6.
I converted this vector ec into a function handle to be able to insert it into fsolve. However, this solution keeps issuing errors, and I have reached a point in which I do not know what to do.
The examples on the internet always include an external function with the non-linear equation system typed directly on it. I just cannot do this, because I need to do previously some symbolic operations to build ec. The values of ec and q are:
ec = sin(q6)*(cos(q1)*cos(q2)*sin(q3)*sin(q4) - cos(q4)*sin(q1) + cos(q1)*cos(q3)*sin(q2)*sin(q4)) - cos(q6)*(cos(q2 + q3)*cos(q1)*sin(q5) + cos(q5)*sin(q1)*sin(q4) + cos(q1)*cos(q2)*cos(q4)*cos(q5)*sin(q3) + cos(q1)*cos(q3)*cos(q4)*cos(q5)*sin(q2)) - 3097002709122497/18014398509481984 cos(q6)*(cos(q1)*cos(q4) + cos(q2)*sin(q1)*sin(q3)*sin(q4) + cos(q3)*sin(q1)*sin(q2)*sin(q4)) + sin(q6)*(cos(q2 + q3)*sin(q1)*sin(q5) - cos(q1)*cos(q5)*sin(q4) + cos(q2)*cos(q4)*cos(q5)*sin(q1)*sin(q3) + cos(q3)*cos(q4)*cos(q5)*sin(q1)*sin(q2)) - 6124274932042799/36028797018963968 - sin(q2 + q3)*cos(q5) - cos(q2 + q3)*cos(q4)*sin(q5) - 139701203459709/140737488355328 70*cos(q1) + 360*cos(q1)*sin(q2) - 65*sin(q1)*sin(q4)*sin(q5) + 380*cos(q1)*cos(q2)*cos(q3) - 380*cos(q1)*sin(q2)*sin(q3) + 65*cos(q1)*cos(q2)*cos(q3)*cos(q5) - 65*cos(q1)*cos(q5)*sin(q2)*sin(q3) - 65*cos(q1)*cos(q2)*cos(q4)*sin(q3)*sin(q5) - 65*cos(q1)*cos(q3)*cos(q4)*sin(q2)*sin(q5) + 19869/50 sin(q6)*(cos(q1)*cos(q4) + cos(q2)*sin(q1)*sin(q3)*sin(q4) + cos(q3)*sin(q1)*sin(q2)*sin(q4)) - cos(q6)*(cos(q2 + q3)*sin(q1)*sin(q5) - cos(q1)*cos(q5)*sin(q4) + cos(q2)*cos(q4)*cos(q5)*sin(q1)*sin(q3) + cos(q3)*cos(q4)*cos(q5)*sin(q1)*sin(q2)) + 2202239090516653/2251799813685248 cos(q2 + q3)*cos(q6)*sin(q4) - sin(q6)*(sin(q2 + q3)*sin(q5) - cos(q2 + q3)*cos(q4)*cos(q5)) + 7591943296130745/288230376151711744 cos(q2 + q3)*cos(q1)*cos(q5) - sin(q5)*(sin(q1)*sin(q4) + cos(q1)*cos(q2)*cos(q4)*sin(q3) + cos(q1)*cos(q3)*cos(q4)*sin(q2)) - 102014544375725/18014398509481984 70*sin(q1) + 360*sin(q1)*sin(q2) - 380*sin(q1)*sin(q2)*sin(q3) + 380*cos(q2)*cos(q3)*sin(q1) + 65*cos(q1)*sin(q4)*sin(q5) + 65*cos(q2)*cos(q3)*cos(q5)*sin(q1) - 65*cos(q5)*sin(q1)*sin(q2)*sin(q3) - 65*cos(q2)*cos(q4)*sin(q1)*sin(q3)*sin(q5) - 65*cos(q3)*cos(q4)*sin(q1)*sin(q2)*sin(q5) - 1563/20 cos(q6)*(sin(q2 + q3)*sin(q5) - cos(q2 + q3)*cos(q4)*cos(q5)) + cos(q2 + q3)*sin(q4)*sin(q6) - 2129854249224409/18014398509481984 cos(q6)*(cos(q1)*cos(q2)*sin(q3)*sin(q4) - cos(q4)*sin(q1) + cos(q1)*cos(q3)*sin(q2)*sin(q4)) + sin(q6)*(cos(q2 + q3)*cos(q1)*sin(q5) + cos(q5)*sin(q1)*sin(q4) + cos(q1)*cos(q2)*cos(q4)*cos(q5)*sin(q3) + cos(q1)*cos(q3)*cos(q4)*cos(q5)*sin(q2)) - 8872946535830847/9007199254740992 cos(q2 + q3)*cos(q5)*sin(q1) - sin(q5)*(cos(q2)*cos(q4)*sin(q1)*sin(q3) - cos(q1)*sin(q4) + cos(q3)*cos(q4)*sin(q1)*sin(q2)) - 8718732974408059/72057594037927936 360*cos(q2) - 380*cos(q2)*sin(q3) - 380*cos(q3)*sin(q2) - 65*cos(q2)*cos(q5)*sin(q3) - 65*cos(q3)*cos(q5)*sin(q2) - 65*cos(q2)*cos(q3)*cos(q4)*sin(q5) + 65*cos(q4)*sin(q2)*sin(q3)*sin(q5) - 39571/100
q = q1 q2 q3 q4 q5 q6
And here is the code.
funec = matlabFunction(ec); % Converts the symbolic column vector into a function handle
qini = zeros(1,6); % Initial guess
ci = fsolve(funec(q.'),qini); % fsolve with the function handle, unknown variables and initial guess
% done many variations here, none of them worked
The main error shown by MATLAB is:
Not enough input arguments.Error insymengine>@(q1,q2,q3,q4,q5,q6)[sin(q6).*(-cos(q4).*sin(q1)+cos(q1).*cos(q2).*sin(q3).*sin(q4)+cos(q1).*cos(q3).*sin(q2).*sin(q4))-cos(q6).*(cos(q2+q3).*cos(q1).*sin(q5)+cos(q5).*sin(q1).*sin(q4)+cos(q1).*cos(q2).*cos(q4).*cos(q5).*sin(q3)+cos(q1).*cos(q3).*cos(q4).*cos(q5).*sin(q2))-1.719181857497141e-1;cos(q6).*(cos(q1).*cos(q4)+cos(q2).*sin(q1).*sin(q3).*sin(q4)+cos(q3).*sin(q1).*sin(q2).*sin(q4))+sin(q6).*(cos(q2+q3).*sin(q1).*sin(q5)-cos(q1).*cos(q5).*sin(q4)+cos(q2).*cos(q4).*cos(q5).*sin(q1).*sin(q3)+cos(q3).*cos(q4).*cos(q5).*sin(q1).*sin(q2))-1.699827759672145e-1;-sin(q2+q3).*cos(q5)-cos(q2+q3).*cos(q4).*sin(q5)-9.926367529524001e-1;cos(q1).*7.0e1+cos(q1).*sin(q2).*3.6e2-sin(q1).*sin(q4).*sin(q5).*6.5e1+cos(q1).*cos(q2).*cos(q3).*3.8e2-cos(q1).*sin(q2).*sin(q3).*3.8e2+cos(q1).*cos(q2).*cos(q3).*cos(q5).*6.5e1-cos(q1).*cos(q5).*sin(q2).*sin(q3).*6.5e1-cos(q1).*cos(q2).*cos(q4).*sin(q3).*sin(q5).*6.5e1-cos(q1).*cos(q3).*cos(q4).*sin(q2).*sin(q5).*6.5e1+3.9738e2;sin(q6).*(cos(q1).*cos(q4)+cos(q2).*sin(q1).*sin(q3).*sin(q4)+cos(q3).*sin(q1).*sin(q2).*sin(q4))-cos(q6).*(cos(q2+q3).*sin(q1).*sin(q5)-cos(q1).*cos(q5).*sin(q4)+cos(q2).*cos(q4).*cos(q5).*sin(q1).*sin(q3)+cos(q3).*cos(q4).*cos(q5).*sin(q1).*sin(q2))+9.77990617608461e-1;-sin(q6).*(sin(q2+q3).*sin(q5)-cos(q2+q3).*cos(q4).*cos(q5))+cos(q2+q3).*cos(q6).*sin(q4)+2.633984452816549e-2;-sin(q5).*(sin(q1).*sin(q4)+cos(q1).*cos(q2).*cos(q4).*sin(q3)+cos(q1).*cos(q3).*cos(q4).*sin(q2))+cos(q2+q3).*cos(q1).*cos(q5)-5.662944800628733e-3;sin(q1).*7.0e1+sin(q1).*sin(q2).*3.6e2-sin(q1).*sin(q2).*sin(q3).*3.8e2+cos(q2).*cos(q3).*sin(q1).*3.8e2+cos(q1).*sin(q4).*sin(q5).*6.5e1+cos(q2).*cos(q3).*cos(q5).*sin(q1).*6.5e1-cos(q5).*sin(q1).*sin(q2).*sin(q3).*6.5e1-cos(q2).*cos(q4).*sin(q1).*sin(q3).*sin(q5).*6.5e1-cos(q3).*cos(q4).*sin(q1).*sin(q2).*sin(q5).*6.5e1-7.815e1;cos(q6).*(sin(q2+q3).*sin(q5)-cos(q2+q3).*cos(q4).*cos(q5))+cos(q2+q3).*sin(q4).*sin(q6)-1.182306613292333e-1;cos(q6).*(-cos(q4).*sin(q1)+cos(q1).*cos(q2).*sin(q3).*sin(q4)+cos(q1).*cos(q3).*sin(q2).*sin(q4))+sin(q6).*(cos(q2+q3).*cos(q1).*sin(q5)+cos(q5).*sin(q1).*sin(q4)+cos(q1).*cos(q2).*cos(q4).*cos(q5).*sin(q3)+cos(q1).*cos(q3).*cos(q4).*cos(q5).*sin(q2))-9.850949540347428e-1;-sin(q5).*(-cos(q1).*sin(q4)+cos(q2).*cos(q4).*sin(q1).*sin(q3)+cos(q3).*cos(q4).*sin(q1).*sin(q2))+cos(q2+q3).*cos(q5).*sin(q1)-1.2099672617183e-1;cos(q2).*3.6e2-cos(q2).*sin(q3).*3.8e2-cos(q3).*sin(q2).*3.8e2-cos(q2).*cos(q5).*sin(q3).*6.5e1-cos(q3).*cos(q5).*sin(q2).*6.5e1-cos(q2).*cos(q3).*cos(q4).*sin(q5).*6.5e1+cos(q4).*sin(q2).*sin(q3).*sin(q5).*6.5e1-3.9571e2]Error in fsolve (line 242)
I hope I have been clear enough. Thank you very much for your time.
- Jose
Best Answer