フィルターのクリア

Why are symbolic expressions being rounded?

2 ビュー (過去 30 日間)
Bill Tubbs
Bill Tubbs 2020 年 9 月 2 日
回答済み: Bill Tubbs 2020 年 9 月 3 日
I'm deriving some expressions symbolically and then substituting values and computing the results and I only recently noticed that the results are being rounded.
>> format long
>> syms x; double(subs(10/x,x,3))
ans =
3.333300000000000
or simply,
>> x = sym(3.33333333)
x =
3.3333
>> double(x)
ans =
3.333300000000000
I can't even reproduce results from the documentation it seems:
>> syms x
>> p = sym(pi);
>> piVpa = vpa(p)
piVpa =
3.1416
According to the documentation, this is supposed to produce:
piVpa =
3.1415926535897932384626433832795
  1 件のコメント
Bill Tubbs
Bill Tubbs 2020 年 9 月 2 日
編集済み: Bill Tubbs 2020 年 9 月 2 日
Actually, I think it is double that is doing the rounding:
>> syms x; 10/3 - subs(10/x,x,3)
ans =
0
>> 10/3 - double(subs(10/x,x,3))
ans =
3.333333333355171e-05

サインインしてコメントする。

採用された回答

Bill Tubbs
Bill Tubbs 2020 年 9 月 3 日
Mathworks technical support have diagnosed the problem. Don't know what caused it originally but the 'FloatingPointOutput' setting in the symbolic preferences was set to 1.
Here is the solution to fix it:
>> sympref
ans =
struct with fields:
FourierParameters: [1×2 sym]
HeavisideAtOrigin: [1×1 sym]
AbbreviateOutput: 1
TypesetOutput: 1
FloatingPointOutput: 1
PolynomialDisplayStyle: 'default'
MatrixWithSquareBrackets: 0
>> sympref('FloatingPointOutput','default');
>> double(sym('pi'))
ans =
3.141592653589793
>> p = sym(pi);
>> piVpa = vpa(p)
piVpa =
3.1415926535897932384626433832795

その他の回答 (1 件)

Steven Lord
Steven Lord 2020 年 9 月 2 日
Have you changed your digits setting?
help digits
Are you calling the correct double function? What does this show?
which double(x)
  1 件のコメント
Bill Tubbs
Bill Tubbs 2020 年 9 月 2 日
Digits = 32
which double(x)
returns
/Applications/MATLAB_R2019b.app/toolbox/symbolic/symbolic/@sym/sym.m % sym method

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeConversion Between Symbolic and Numeric についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by