Why do I get a fraction instead of a rational number when I solve two simple simultaneous equations

26 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

John D'Errico
John D'Errico il 2 Ott 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 Commenti
Steven Lord
Steven Lord il 20 Dic 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))
sqrt5 = 
double(sqrt5)
ans = 2.2361
syms x
xsqrt5 = x*sqrt5
xsqrt5 = 
vpa(xsqrt5)
ans = 
Calling double on xsqrt5 won't work because of the presence of the x in the expression.
double(xsqrt5)
Error using symengine
Unable to convert expression containing symbolic variables into double array. Apply 'subs' function first to substitute values for variables.

Error in sym/double (line 702)
Xstr = mupadmex('symobj::double', S.s, 0);

Accedi per commentare.

Più risposte (1)

Walter Roberson
Walter Roberson il 21 Dic 2020
Modificato: Walter Roberson il 21 Dic 2020

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by