How to tell vpa command to consider digits after decimal point' only?

2 ビュー (過去 30 日間)
Mohammad Shojaei Arani
Mohammad Shojaei Arani 2021 年 12 月 28 日
回答済み: Walter Roberson 2021 年 12 月 28 日
Hello friends,
I have a simple question, I think! I have a symbolic expression S with numeric coefficients. I need to round the coefficients
up to some digits 'AFTER DECIMAL POINT' only (note that I do not know, beforehand, how many digits my numbers have, so, I want to keep all digits before decimal point and a few after that). So, if I use vpa(S,4) then it only considers 4 digits in total and does not respect my what I want. Let me use a simple example as bellow:
syms x y
now, vpa(S,4) gives me
34340.0*x + 45.66*y
and this is not what I want since the first coefifcient is badly rounded. Of course, in this exmple I could use vpa(S,8) to get 34344.454*x + 45.6566*y but please note that "I do not know, beforehand, how many digits my coefficients have in general".
Any idea?
Thanks in advance!

回答 (1 件)

Walter Roberson
Walter Roberson 2021 年 12 月 28 日
syms x y
f = 34344.4545*x+45.6566*y;
newF = mapSymType(f, 'constant', @(v) round(v,4))
newF = 

Community Treasure Hunt

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

Start Hunting!

Translated by