Symbolic printing without extensive decimals

2 vues (au cours des 30 derniers jours)
Ramses Young
Ramses Young le 11 Avr 2021
Commenté : Star Strider le 11 Avr 2021
syms x
f=x*1231871.1561876*5618965/3156651894-561894+4849159*15844/5189;
l=vpa(x*1231871.1561876*5618965/3156651894-561894+4849159*15844/5189);
fprintf('%s\n',f)
fprintf('%s\n',l)
(1351321833700369665875*x)/616259847708475392 + 7647426328677875/536870912
2192.7792938728320167173931401797*x + 14244441.555212950333952903747559
I am trying to get my problem to print more efficiently, I have tried the vpa tool, and it works nicely, but I have no customization (as far as im aware) as to how to control the number of decimal places on the polynomial that is being printed using these commands while having a symbolic function/polynomial.
How can I tidy up this so that it prints in an easier to read format, with, for example, 5 decimal places rather than the amount it has?

Réponse acceptée

Star Strider
Star Strider le 11 Avr 2021
Set digits to whatever value you want:
syms x
f=x*1231871.1561876*5618965/3156651894-561894+4849159*15844/5189;
digits(5)
l=vpa(x*1231871.1561876*5618965/3156651894-561894+4849159*15844/5189);
fprintf('%s\n',f)
fprintf('%s\n',l)
producing:
(1351321833700369665875*x)/616259847708475392 + 7647426328677875/536870912
2192.8*x + 1.4244e+7
.
  2 commentaires
Ramses Young
Ramses Young le 11 Avr 2021
Perfect, thanks!
Star Strider
Star Strider le 11 Avr 2021
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (1)

Martinez Tutt
Martinez Tutt le 11 Avr 2021
Try using (line spacing)

Community Treasure Hunt

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

Start Hunting!

Translated by