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

4 Ansichten (letzte 30 Tage)
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
f=34344.4545*x+45.6566*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!
Babak

Antworten (1)

Walter Roberson
Walter Roberson am 28 Dez. 2021
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