Solve function supports only four decimal points
Afficher commentaires plus anciens
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.
Réponses (2)
Walter Roberson
le 31 Mai 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.
Catégories
En savoir plus sur Conversion Between Symbolic and Numeric dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!