Why do I get a fraction instead of a rational number when I solve two simple simultaneous equations
20 views (last 30 days)
Show older comments
Keith Jones
on 2 Oct 2016
Edited: Walter Roberson
on 21 Dec 2020
These are the two equations I need to solve; for A and B, to calculate the viscosity of hydraulic fluid between to temperatures. The results are correct, but why does Matlab show them as fractions and not rational numbers?
syms A B
eqn1=A-520*B==3.7612;
eqn3=A-560*B==2.3026;
[X,Y] = equationsToMatrix([eqn1, eqn3], [A, B])
Z = linsolve(X,Y)
Z =
22723/1000
7293/200000
>> 22723/1000
ans =
22.7230
>> 7293/200000
ans =
0.0365
0 Comments
Accepted Answer
John D'Errico
on 2 Oct 2016
Because you are (for some irrational reason) using symbolic computations to solve a simple linear system of equations. Sort of equivalent to the use of a Mack truck to bring a single pea to Boston - massive overkill. Therefore the result is a symbolic one, and is left in symbolic form.
If you want to convert it to a floating point number, then use vpa, or use double.
3 Comments
Steven Lord
on 20 Dec 2020
If the expressions contain symbolic variables use vpa to display the approximation of the symbolic result to a specified number of decimal places.
If the expressions are symbolic representations of numbers (no symbolic variables) use double.
sqrt5 = sqrt(sym(5))
double(sqrt5)
syms x
xsqrt5 = x*sqrt5
vpa(xsqrt5)
Calling double on xsqrt5 won't work because of the presence of the x in the expression.
double(xsqrt5)
More Answers (1)
Walter Roberson
on 21 Dec 2020
Edited: Walter Roberson
on 21 Dec 2020
Use sympref to set symbolic output to floating-point.
See Also
Categories
Find more on Calculus in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!