Solve function supports only four decimal points
Show older comments
Is there a way to solve a system of equations like this with double precision without rounding? The theta vector here has precision double. But unless I limit the number of decimal points to 4 or fewer, I dont get an answer.
ts = 0.002;
syms a b;
eqn1 = 2+a*ts == 1.97720865074869;
eqn2 = -1-a*ts == -0.977208098949782;
eqn3 = ts^2*b == 0.00103667507747696;
%Note: solve function seems to accept only 4 decimal places.
%The round command is to accomodate this. Has nothing to do with the math.
sol = solve([eqn1, eqn2, eqn3],[a,b]); %solve for a and b, ts is known
aSol=double(sol.a)
bSol=double(sol.b)
If I just use double or increase the number of decimals to 5 I get : 0×1 empty double column vector.
Answers (2)
Walter Roberson
on 31 May 2022
0 votes
Add the first two equations. The a*ts cancel out, leaving the equation 1 = theta1 + theta2. If that equation is not satisfied then there cannot be any solution to the system.
Categories
Find more on Conversion Between Symbolic and Numeric in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!