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

73 次查看(过去 30 天)
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

采纳的回答

John D'Errico
John D'Errico 2016-10-2
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 个评论
Steven Lord
Steven Lord 2020-12-20
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);

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2020-12-21
编辑:Walter Roberson 2020-12-21

类别

Help CenterFile Exchange 中查找有关 Calculus 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by